From 10f06a72e2fdfc80e83d3b06f189abf68f9a8534 Mon Sep 17 00:00:00 2001 From: Vedant Matanhelia Date: Wed, 4 Oct 2023 16:53:21 +0530 Subject: [PATCH 1/2] Started conversion to golang --- .example.env | 10 +- .gitignore | 30 +- CONTRIBUTING.md | 27 + Dockerfile | 30 +- Makefile | 35 + allowedEmails.json | 3 - api/controllers/adminController.js | 119 -- api/controllers/authController.js | 158 -- api/controllers/jwtController.js | 18 - api/controllers/questions.js | 207 --- api/controllers/submission.js | 628 -------- api/controllers/testCasesController.js | 99 -- api/middleware/jwtMiddleware.js | 112 -- api/middleware/rateLimit.js | 9 - api/models/User.js | 59 - api/models/ques.js | 18 - api/models/submission.js | 22 - api/models/testCasesModel.js | 15 - api/routes/adminRouter.js | 20 - api/routes/auth.js | 23 - api/routes/questionsRouter.js | 26 - api/routes/submission.js | 42 - api/routes/testCaseRouter.js | 16 - api/seeders/.final_seeder.bak | 1 - api/seeders/final_seeder.json | 1 - api/seeders/questions_seeder.js | 58 - api/seeders/test.py | 14 - api/utils/sendMail.js | 40 - cmd/main.go | 52 + conf.d/default.conf | 6 - config/config.go | 32 + contributing.md | 72 - deployment.yaml | 23 - docker-compose.yml | 42 +- go.mod | 3 + index.js | 47 - internal/database/db.go | 25 + nginx/Dockerfile | 5 + nginx/nginx.conf | 16 + package-lock.json | 1982 ------------------------ package.json | 36 - service.yaml | 12 - 42 files changed, 260 insertions(+), 3933 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 Makefile delete mode 100644 allowedEmails.json delete mode 100644 api/controllers/adminController.js delete mode 100644 api/controllers/authController.js delete mode 100644 api/controllers/jwtController.js delete mode 100644 api/controllers/questions.js delete mode 100644 api/controllers/submission.js delete mode 100644 api/controllers/testCasesController.js delete mode 100644 api/middleware/jwtMiddleware.js delete mode 100644 api/middleware/rateLimit.js delete mode 100644 api/models/User.js delete mode 100644 api/models/ques.js delete mode 100644 api/models/submission.js delete mode 100644 api/models/testCasesModel.js delete mode 100644 api/routes/adminRouter.js delete mode 100644 api/routes/auth.js delete mode 100644 api/routes/questionsRouter.js delete mode 100644 api/routes/submission.js delete mode 100644 api/routes/testCaseRouter.js delete mode 100644 api/seeders/.final_seeder.bak delete mode 100644 api/seeders/final_seeder.json delete mode 100644 api/seeders/questions_seeder.js delete mode 100644 api/seeders/test.py delete mode 100644 api/utils/sendMail.js create mode 100644 cmd/main.go delete mode 100644 conf.d/default.conf create mode 100644 config/config.go delete mode 100644 contributing.md delete mode 100644 deployment.yaml create mode 100644 go.mod delete mode 100644 index.js create mode 100644 internal/database/db.go create mode 100644 nginx/Dockerfile create mode 100644 nginx/nginx.conf delete mode 100644 package-lock.json delete mode 100644 package.json delete mode 100644 service.yaml diff --git a/.example.env b/.example.env index 7934d1c..b8b3d46 100644 --- a/.example.env +++ b/.example.env @@ -1,8 +1,10 @@ -DB_HOST=mongodb -DB_PORT=27017 -DB_NAME=mydb +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 +POSTGRES_USER=admin +POSTGRES_PASSWORD=password123 +POSTGRES_DB=icetite_backend -DB_URI = "mongodb://${DB_HOST}:${DB_PORT}/${DB_NAME}" +PORT=:8080 ACCESS_KEY_SECRET="abc" REFRESH_KEY_SECRET="def" JUDGE_URI= diff --git a/.gitignore b/.gitignore index 47c9c83..b6a4d51 100644 --- a/.gitignore +++ b/.gitignore @@ -2,9 +2,29 @@ .vscode .idea -# Environment -.env +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out -/node_modules -.eslintrc.yml -bun.lockb \ No newline at end of file +# Dependency directories (remove the comment below to include it) +# vendor/ +.DS_Store +TODO.md +logs.txt +.idea/ +secret.md + +# Evnironment +tmp +.env +main +postgres_data/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..db01c79 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,27 @@ +## icETITE-24 API + +### Documentation +For detailed information on how to use the project's API, please refer to the [Postman Documentation](). + + +### Getting Started + +Clone the repository: + +``git clone https://github.com/CodeChefVIT/cookoff-backend`` + +Install Make, Docker and Docker Compose 2.0 if not already installed. + +Run the following commands in the project root directory: + +```` +make help # Get All The Make Commands Supported +make build # Build Docker containers +make up # Start Docker containers in the background +```` + +*** +Your API will be running on http://localhost:80 + +Test whether API is up at http://localhost/api/v1/healthcheck +*** diff --git a/Dockerfile b/Dockerfile index d33752c..14ada9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,20 @@ -# Use an official Node.js runtime as the base image -FROM --platform=linux/amd64 node:18 -# Set the working directory inside the container -WORKDIR /usr/src/app +FROM golang:alpine -# Copy package.json and package-lock.json to the container -COPY package*.json ./ +RUN apk update && apk upgrade && \ + apk add --no-cache git -# Install app dependencies -RUN npm install +RUN mkdir /app -# Copy the rest of the app's source code to the container -COPY . . +WORKDIR /app -# Expose the port that the app will run on -EXPOSE 8080 +ADD go.mod . +ADD go.sum . + +RUN go mod download +ADD . . -# Install PM2 globally -RUN npm install pm2 -g +RUN go build -o ./bin/cookoff-backend ./cmd/main.go + +EXPOSE 8080 -# Use PM2 as the command to run the app, with automatic restart on failure -CMD ["pm2-runtime", "index.js"] +CMD ["./bin/cookoff-backend"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..17f72ab --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +# Define variables +DOCKER_COMPOSE = docker compose + +# Targets +.PHONY: build up down logs restart clean + +build: + $(DOCKER_COMPOSE) build + +up: + $(DOCKER_COMPOSE) up -d + +down: + $(DOCKER_COMPOSE) down + +logs: + $(DOCKER_COMPOSE) logs -f + +restart: + $(DOCKER_COMPOSE) restart + +clean: + $(DOCKER_COMPOSE) down -v + +# Help target +help: + @echo "Usage: make [target]" + @echo "Targets:" + @echo " build Build Docker containers" + @echo " up Start Docker containers in the background" + @echo " down Stop and remove Docker containers" + @echo " logs View logs of Docker containers" + @echo " restart Restart Docker containers" + @echo " clean Stop, remove containers, and also remove volumes (data)" + @echo " help Display this help message" diff --git a/allowedEmails.json b/allowedEmails.json deleted file mode 100644 index 1ff32af..0000000 --- a/allowedEmails.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "allowedEmails": ["yash.kumar2022b@vitstudent.ac.in", "swarnav.samanta2023@vitstudent.ac.in", "ishan.roy2023@vitstudent.ac.in", "anoop.nair2023@vitstudent.ac.in", "siddharth.sanjeev2022@vitstudent.ac.in", "chaitanya.bajaj2023@vitstudent.ac.in", "shaunak.mitra2022@vitstudent.ac.in", "kaveshraja.db2022@vitstudent.ac.in", "rashi.kushwaha2023@vitstudent.ac.in", "siddhant.gupta2022@vitstudent.ac.in", "aaryan.upadhyay2023@vitstudent.ac.in", "ojasva.singh2023@vitstudent.ac.in", "drishita.paul2023@vitstudent.ac.in", "adheesh.dubey2022@vitstudent.ac.in", "parth.khandelwal2023@vitstudent.ac.in", "prithvi.singh2023@vitstudent.ac.in", "ameya.varade2022@vitstudent.ac.in", "dhruv.vyas2023@vitstudent.ac.in", "hiraknikhil.parekh2023@vitstudent.ac.in", "mathivadhani.arul2023@vitstudent.ac.in", "siddhant.agarwal2023@vitstudent.ac.in", "akulanand.chordia2022@vitstudent.ac.in", "poorva.nandanwar2023@vitstudent.ac.in", "krishtipati.pragathi2023@vitstudent.ac.in", "khushi.bansal2023@vitstudent.ac.in", "karthik.sanoj2023@vitstudent.ac.in", "aasritha.t2022@vitstudent.ac.in", "laksh.bharani2023@vitstudent.ac.in", "tarun.2022@vitstudent.ac.in", "maneesh.ari2023@vitstudent.ac.in", "madhav.dogra2023@vitstudent.ac.in", "navaneeth.hkrishnan2023@vitstudent.ac.in", "aravind.s2023a@vitstudent.ac.in", "kaustubh.arora2022@vitstudent.ac.in", "om.deepak2023@vitstudent.ac.in", "mahendrakumar.potti2023@vitstudent.ac.in", "anirudh.n2022@vitstudent.ac.in", "alok.ranjan2022@vitstudent.ac.in", "vasu.ranjan2023@vitstudent.ac.in", "gurumauj.satsangi2023@vitstudent.ac.in", "vyom.khurana2023@vitstudent.ac.in", "kartik.chauhan2023@vitstudent.ac.in", "tejasyam.rekhapalli2023@vitstudent.ac.in", "raghav.agrawal2023@vitstudent.ac.in", "akash.pathak2022@vitstudent.ac.in", "param.godhani2022@vitstudent.ac.in", "rakshith.pa2023@vitstudent.ac.in", "afhamfaiyaz.ahmad2023@vitstudent.ac.in", "udith.shyamsukha2020@vitstudent.ac.in", "sahildhruv.bachu2023@vitstudent.ac.in", "aayush.purohit2023@vitstudent.ac.in", "jayendra.jamadar2023@vitstudent.ac.in", "shantanu.rajendra2023@vitstudent.ac.in", "mengji.dhanush2023@vitstudent.ac.in", "parth.chiragkumar2022@vitstudent.ac.in", "sanjhana.a2023@vitstudent.ac.in", "vedant.agarwal2023@vitstudent.ac.in", "ridhima.joshi2023@vitstudent.ac.in", "shreya.palak2023@vitstudent.ac.in", "miruthicraj.k2023@vitstudent.ac.in", "krish.chitlangia2022@vitstudent.ac.in", "ivan.padeliya2023@vitstudent.ac.in", "rakshitratan.pathak2023@vitstudent.ac.in", "rishi.chalana2023@vitstudent.ac.in", "satgunsingh.sodhi2023@vitstudent.ac.in", "ananta.jaiswal2023@vitstudent.ac.in", "harini.bhaskaran2023@vitstudent.ac.in", "rohan.muthu2023@vitstudent.ac.in", "samson.joie2023@vitstudent.ac.in", "abhishant.kumar2023@vitstudent.ac.in", "chitransh.saxena2023@vitstudent.ac.in", "arushi.bhakuni2023@vitstudent.ac.in", "aditya.singh2023b@vitstudent.ac.in", "akshat.khandelwal2023@vitstudent.ac.in", "atharv.agarwal2023a@vitstudent.ac.in", "ekansh.kumar2023@vitstudent.ac.in", "pavan.dumesh2023@vitstudent.ac.in", "raghavsamir.sejpal2023@vitstudent.ac.in", "akshaj.tiwari2023@vitstudent.ac.in", "vedant.prashant2023a@vitstudent.ac.in", "kush.arora2023@vitstudent.ac.in", "nikitha.m2023@vitstudent.ac.in", "rhutvik.hegde2023@vitstudent.ac.in", "rachit.tibrewal2023@vitstudent.ac.in", "saranyo.ray2022@vitstudent.ac.in", "kshitiz.khandelwal2023@vitstudent.ac.in", "prajwal.b2022@vitstudent.ac.in", "jayesh.s2023@vitstudent.ac.in", "shubham.kansara2022@vitstudent.ac.in", "verma.divyansh2023@vitstudent.ac.in", "uppalapati.sai2023@vitstudent.ac.in", "nilaykant.shahi2023@vitstudent.ac.in", "dhruv.dakhara2022@vitstudent.ac.in", "jishnu.suresh2023@vitstudent.ac.in", "aditi.saxena2023@vitstudent.ac.in", "sudeshna.v2023@vitstudent.ac.in", "madhuvanthi.b2023@vitstudent.ac.in", "balar.darshan2023@vitstudent.ac.in", "yash.pathak2023@vitstudent.ac.in", "udbhav.sharma2020@vitstudent.ac.in", "sivasangar.a2023@vitstudent.ac.in", "dheeraj.vp2023@vitstudent.ac.in", "madabhushi.priya2020@vitstudent.ac.in", "harshsameer.shah2023@vitstudent.ac.in", "tanmay.patel2022@vitstudent.ac.in", "mohammed.gani2023@vitstudent.ac.in", "sameerbharadwaj.g2023@vitstudent.ac.in", "sriman.upadhyayula2023@vitstudent.ac.in", "shivam.verma2023@vitstudent.ac.in", "chinmayi.purohit2022@vitstudent.ac.in", "sai.sujeeth2022@vitstudent.ac.in", "harsh.gupta2023a@vitstudent.ac.in", "khushal.agrawal2023@vitstudent.ac.in", "aditi.gkrishnan2023@vitstudent.ac.in", "kriti.arora2023@vitstudent.ac.in", "rahul.r2023a@vitstudent.ac.in", "kunal.sinha2022@vitstudent.ac.in", "akshita.moda2023@vitstudent.ac.in", "bandhan.priya2023@vitstudent.ac.in", "sohan.manna2023@vitstudent.ac.in", "saketsanjesh.jain2023@vitstudent.ac.in", "krishnendu.rajesh2023@vitstudent.ac.in", "sirmewar.avishkar2023@vitstudent.ac.in", "shruti.shree2023@vitstudent.ac.in", "pranav.mundhada2022@vitstudent.ac.in", "giriraj.rajpurohit2022@vitstudent.ac.in", "shubham.kumar2023c@vitstudent.ac.in", "shubh.mohanka2022@vitstudent.ac.in", "kaushik.chandrakant2023@vitstudent.ac.in", "punarbasu.c2022@vitstudent.ac.in", "vellore.karthik2023@vitstudent.ac.in", "hemanth.shivanand2022@vitstudent.ac.in", "shambhavi.paygude2022@vitstudent.ac.in", "sahil.sureka2023@vitstudent.ac.in", "ishita.ghosh2023@vitstudent.ac.in", "anshika.raj2023a@vitstudent.ac.in", "anishka.roy2023@vitstudent.ac.in", "tamanna.ghosh2023@vitstudent.ac.in", "priyanshu.kumar2022@vitstudent.ac.in", "arnav.verma2022@vitstudent.ac.in", "anshuman.sharma2023@vitstudent.ac.in", "hemashree.jelli2023@vitstudent.ac.in", "sudharsan.s2023d@vitstudent.ac.in", "janvidahiya03@gmail.com", "rajatchopra2525@gmail.com", "shristi.kaushal2023@vitstudent.ac.in", "soham.mahapatra2023@vitstudent.ac.in", "akriti.agarwal2023@vitstudent.ac.in", "yashwanth.m2023@vitstudent.ac.in", "bharat.pinjani2022@vitstudent.ac.in", "pradyun.mondal2022@vitstudent.ac.in", "pritha.nagpal2023@vitstudent.ac.in", "bandana.mishra2023@vitstudent.ac.in", "shreeyash.santosh2023@vitstudent.ac.in", "subhamkumar.giri2023@vitstudent.ac.in", "sagnik.ghosh2023@vitstudent.ac.in", "nilobratadas.dalal2023@vitstudent.ac.in", "dibyajyoti.2023@vitstudent.ac.in", "ishan.jindal2023@vitstudent.ac.in", "aditya.tripathi2022@vitstudent.ac.in", "irigisetty.dhanush2023@vitstudent.ac.in", "piyush.raj2023c@vitstudent.ac.in", "sanjna.j2023@vitstudent.ac.in", "raunit.raj2023@vitstudent.ac.in", "mukilkrish.jayakumar2023@vitstudent.ac.in", "sparsh.agrawal2023@vitstudent.ac.in", "bhavadharini.shankar2023@vitstudent.ac.in", "aryan.dange2023@vitstudent.ac.in", "vefife4882@pbridal.com", "aryan.saxena2023@vitstudent.ac.in", "gopika.b2023a@vitstudent.ac.in", "varun.kaushal2022@vitstudent.ac.in", "ashutoshkumar.singh2023@vitstudent.ac.in", "aryan.sehgal2022@vitstudent.ac.in", "soumyadip.ghosh2023@vitstudent.ac.in", "parshvaanil.runwal2023@vitstudent.ac.in", "arijit.de2023@vitstudent.ac.in", "sarathganesh.s2023@vitstudent.ac.in", "akshitha.bijith2023@vitstudent.ac.in", "vishal.manikanta2023@vitstudent.ac.in", "raghav.sharma2023@vitstudent.ac.in", "shrihari.v2023@vitstudent.ac.in", "arya.pal2023@vitstudent.ac.in", "dev.arun2023@vitstudent.ac.in", "keshav.agarwal2023@vitstudent.ac.in", "pratyaksh.saxena2023@vitstudent.ac.in", "anuradha.navin2022@vitstudent.ac.in", "sonaliroy172004@gmail.com", "sharmakanishk565@gmail.com", "shivam.motwani2022@vitstudent.ac.in", "ashitha.krishnadas2023@vitstudent.ac.in", "monish.ns2022@vitstudent.ac.in", "ashika.ss2022@vitstudent.ac.in", "tanisha.mahata2023@vitstudent.ac.in", "mayukh.k2023@vitstudent.ac.in", "vyom.dubey2023@vitstudent.ac.in", "shubham.dansena2023@vitstudent.ac.in", "siddhant.dharmpal2023@vitstudent.ac.in", "krishna.agrawal2023@vitstudent.ac.in", "vinay.vishwanathan2023@vitstudent.ac.in", "sanjay.araval2023@vitstudent.ac.in", "archieprabeed.kumar2023@vitstudent.ac.in", "hrishikesh.sane2022@vitstudent.ac.in", "eshaan.singh2022@vitstudent.ac.in", "aditya.sahu2023@vitstudent.ac.in", "shreya.rajendra2023@vitstudent.ac.in", "apurva.choudhary2023@vitstudent.ac.in", "aditya.goyal2022a@vitstudent.ac.in", "ayush.jaiswal2023@vitstudent.ac.in", "akshit.sharma2023@vitstudent.ac.in", "udbhav.ojas2023@vitstudent.ac.in", "sangrah.kumar2023@vitstudent.ac.in", "rishabh.pandey2023@vitstudent.ac.in", "vatsal.dalmia2023@vitstudent.ac.in", "dhruv.gupta2023@vitstudent.ac.in", "prateek.srivastava2022@vitstudent.ac.in", "sarthak.pathak2023@vitstudent.ac.in", "gowtham.g2023a@vitstudent.ac.in", "divya.2023@vitstudent.ac.in", "sunidhi.priya2023@vitstudent.ac.in", "aryan.bhirud2022@vitstudent.ac.in", "adityakaleeswar.gk2022@vitstudent.ac.in", "tiya.agarwal2023@vitstudent.ac.in", "raghav.k2023a@vitstudent.ac.in", "lisa.singh2023@vitstudent.ac.in", "abhinav.anand2023@vitstudent.ac.in", "atulyajayant.sahane2022@vitstudent.ac.in", "moulik.agarwal2022@vitstudent.ac.in", "medha.s2023@vitstudent.ac.in", "mohammed.ammar2020@vitstudent.ac.in", "varun.r2023a@vitstudent.ac.in", "abhigyan.banerjee2023@vitstudent.ac.in", "hatim.maula2023@vitstudent.ac.in", "rohanta.shaw2022@vitstudent.ac.in", "sanketdatta.maniyar2023@vitstudent.ac.in", "gokul.2022@vitstudent.ac.in", "tanish.maheshwari2022a@vitstudent.ac.in", "anshnirmal.gandhi2022@vitstudent.ac.in", "varrsan.d2022@vitstudent.ac.in", "atharvasunil.mhetre2022@vitstudent.ac.in", "alagappan.nl2023@vitstudent.ac.in", "raunak.pal2023@vitstudent.ac.in", "harshitha.vr2023@vitstudent.ac.in", "anmol.tibrewal2023@vitstudent.ac.in", "sourish.datta2023@vitstudent.ac.in", "dharshinikesan.ks2023@vitstudent.ac.in", "mohit.talgotra2023@vitstudent.ac.in", "keerthana.muthupandi2023@vitstudent.ac.in", "rishab.nagwani2023@vitstudent.ac.in", "nishanthsamson.i2023@vitstudent.ac.in", "lakshay.tuteja2023@vitstudent.ac.in", "milind.deokumar2022@vitstudent.ac.in", "harsh.srivastava2023@vitstudent.ac.in", "adheesh.garg2023@vitstudent.ac.in", "adwitiya.paul2022@vitstudent.ac.in", "chaitanya.pandey2022@vitstudent.ac.in", "kaushik.d2022@vitstudent.ac.in", "simran.rawat2023@vitstudent.ac.in", "yash.midha2022@vitstudent.ac.in", "pratishtha.takjharia2023@vitstudent.ac.in", "aryaman.anshuman2023@vitstudent.ac.in", "puniti.jodhwani2023@vitstudent.ac.in", "drashi.manoria2023@vitstudent.ac.in", "adarsh.upadhyay2023@vitstudent.ac.in", "pratham.manishkumar2022@vitstudent.ac.in", "vanshita.seth2023@vitstudent.ac.in", "dipali.gupta2023@vitstudent.ac.in", "vatsalraj.agarwal2023@vitstudent.ac.in", "saumya.sinha2023@vitstudent.ac.in", "shreya.sinha2023@vitstudent.ac.in", "preksha.singh2023@vitstudent.ac.in", "devesh.singhal2023@vitstudent.ac.in", "sayan.kundu2023@vitstudent.ac.in", "kartikey.gupta2022@vitstudent.ac.in", "swagat.mohanty2022@vitstudent.ac.in", "ashissh.s2022@vitstudent.ac.in", "nikhilandrew.franco2022@vitstudent.ac.in", "dhevatha.sp2022@vitstudent.ac.in", "ganesuni.sailesh2023@vitstudent.ac.in", "sundarajan1710@gmail.com", "sashwath.vinoth2023@vitstudent.ac.in", "shivansh.manohar2023@vitstudent.ac.in", "sejal.chhajed2022@vitstudent.ac.in", "eshita.jain2022@vitstudent.ac.in", "aryanramesh.jain2023@vitstudent.ac.in", "vaishnavi.vijay2023@vitstudent.ac.in", "nitish.js2020@vitstudent.ac.in", "antrang.agrawal2020@vitstudent.ac.in", "saatvik.tiwari2022@vitstudent.ac.in", "vaibhavi.pal2023@vitstudent.ac.in", "manikanta.karthikeya2023@vitstudent.ac.in", "taru.2023@vitstudent.ac.in", "yashita.puri2023@vitstudent.ac.in", "harshit.maroo2022@vitstudent.ac.in", "akshara.jeyanandan2023@vitstudent.ac.in", "anuska.saha2023@vitstudent.ac.in", "jaineelkeyur.sampat2022@vitstudent.ac.in", "bhadhrinath.u2020@vitstudent.ac.in", "sangram.babasaheb2023@vitstudent.ac.in", "ritvik.amin2023@vitstudent.ac.in", "divyanshi.gupta152@gmail.com", "vaibhav.gupta2023a@vitstudent.ac.in", "namay.modi2022@vitstudent.ac.in", "aritra.bag2022@vitstudent.ac.in", "aryan.verma2023a@vitstudent.ac.in", "rohitkumar.singh2023@vitstudent.ac.in", "aayush.sood2023@vitstudent.ac.in", "shagnik.paul2023@vitstudent.ac.in", "aadil.mohamed2022@vitstudent.ac.in", "dhanjith.velluva2023@vitstudent.ac.in", "shubham.prasad2023@vitstudent.ac.in", "nayeem.suhail2023@vitstudent.ac.in", "shardul.mishra2023@vitstudent.ac.in", "vishnuprian.s2023@vitstudent.ac.in", "nitesh.kakkar2022@vitstudent.ac.in", "prajjwal.joshi2023@vitstudent.ac.in", "saniya.goyal2023@vitstudent.ac.in", "astleligo@gmail.com", "utkarsh.2023b@vitstudent.ac.in", "karishma.rahaman2023@vitstudent.ac.in", "venkatbalaji.s2022@vitstudent.ac.in", "mohamed.ibrahim2022@vitstudent.ac.in", "shreya.balaji2023@vitstudent.ac.in", "syed.affan2023@vitstudent.ac.in", "adnan.sattikar2020@vitstudent.ac.in", "rajan.hasija2023@vitstudent.ac.in", "ayushi.narnolia2023@vitstudent.ac.in", "meda.varshith2023@vitstudent.ac.in", "adityakaleeswar.gk2022@vitstudent.ac.in", "bhansali.shivam2023@vitstudent.ac.in", "ramya.m2023a@vitstudent.ac.in", "zeeshan.anwar2023@vitstudent.ac.in", "jagadeeshkumar.b2023@vitstudent.ac.in", "prakrit.bahl2023@vitstudent.ac.in", "dhruvvenu.nair2022@vitstudent.ac.in", "vinayak.trivedi2022@vitstudent.ac.in", "shivaram.k2022@vitstudent.ac.in", "kushal.k2022@vitstudent.ac.in", "arvindpranav.m2022@vitstudent.ac.in", "sujaashri.s2023@vitstudent.ac.in", "ishan.singh2022@vitstudent.ac.in", "thanakanti.yagna2022@vitstudent.ac.in", "kurapati.goutham2022@vitstudent.ac.in", "ayush.pandey2022b@vitstudent.ac.in", "mdanwar.mansuri2020@vitstudent.ac.in", "ayush.verma2023@vitstudent.ac.in", "abhinav.pant2023@vitstudent.ac.in", "kundanika.reddy2022@vitstudent.ac.in", "arunofficial1804@gmail.com", "manoj.dj2023@vitstudent.ac.in", "tkvp023@gmail.com", "shreyamanisha04@gmail.com", "ayush.padhy2022@vitstudent.ac.in", "sandeepkumar.sa2020@vitstudent.ac.in", "subhanshu.baliyan2022@vitstudent.ac.in", "samya.mehta2023@vitstudent.ac.in", "charan.aditya2022@vitstudent.ac.in", "arunaya.k2023@vitstudent.ac.in", "gagan.2022@vitstudent.ac.in", "shaurya.maloo2023@vitstudent.ac.in", "guriksingh.sachar2020@vitstudent.ac.in", "vihswa.v2022@vitstudent.ac.in", "sanjay.jk2023@vitstudent.ac.in", "anupam.sudhakaran2020@vitstudent.ac.in", "annem.shivaji2020@vitstudent.ac.in", "krishnakanth.d2020@vitstudent.ac.in", "abhijeet.sinha2023@vitstudent.ac.in", "krish.kapoor2023@vitstudent.ac.in", "monish.jagatheswaran2023@vitstudent.ac.in", "tribhattacharya55@gmail.com", "sachien.n2023@vitstudent.ac.in", "arhaan.khan2022@vitstudent.ac.in", "aaryan.shrivastav2023@vitstudent.ac.in", "aarush.gupta2023@vitstudent.ac.in", "abdullahnasir.gani2023@vitstudent.ac.in", "abdurrahman.m2023@vitstudent.ac.in", "riya.rangwani2022@vitstudent.ac.in", "lalithkumar.rs2023@vitstudent.ac.in", "aditya.raina2023@vitstudent.ac.in", "ashmit.dudeja2023@vitstudent.ac.in", "sankalp.sharma2023@vitstudent.ac.in", "prateek.purohit2023@vitstudent.ac.in", "reyansh.ashok2023@vitstudent.ac.in", "chirag.bansal2023@vitstudent.ac.in", "ishan.vardhan2023@vitstudent.ac.in", "arnav.rai2023@vitstudent.ac.in", "sahaj.gaur2023@vitstudent.ac.in", "dikshitha.2023@vitstudent.ac.in", "dharshini.m2023@vitstudent.ac.in", "arun.c2020@vitstudent.ac.in", "pranav.venkatasai2023@vitstudent.ac.in", "michaelabejo.m2023@vitstudent.ac.in", "siya.aggarwal2023@vitstudent.ac.in", "madhav.sah2023@vitstudent.ac.in", "manjushri.nagaraj2023@vitstudent.ac.in", "hamsini.natarajan2023@vitstudent.ac.in", "harshavardhini.2023@vitstudent.ac.in", "sobiya.2023@vitstudent.ac.in", "jayanty.saidurga2023@vitstudent.ac.in", "amaljacob.augustine2023@vitstudent.ac.in", "diya.madia2022@vitstudent.ac.in", "devang.garg2020@vitstudent.ac.in", "varunmayilvaganan11@gmail.com", "kishorekumark0912@gmail.com", "praveenrajini555@gmail.com", "spprasanth026@gmail.com", "souvikmukherjee150@gmail.com", "aadityamahanta07@gmail.com", "prateeksrivastava201@gmail.com", "vedant.matanhelia@gmail.com", "abhinav9104@gmail.com", "shivamsharma2002@gmail.com"] -} \ No newline at end of file diff --git a/api/controllers/adminController.js b/api/controllers/adminController.js deleted file mode 100644 index 2c10254..0000000 --- a/api/controllers/adminController.js +++ /dev/null @@ -1,119 +0,0 @@ -const User = require("../models/User"); -const Question = require("../models/ques"); -const bcrypt = require("bcrypt"); - -const adminController = { - getAllUsers: async (req, res) => { - try { - const users = await User.find(); - res.status(200).json(users); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - getUserbyID: async (req, res) => { - const { regNo } = req.body; - try { - const user = await User.findOne({ regNo }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - res.status(200).json(user); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - promoteUser: async (req, res) => { - const { regNo, round } = req.body; - try { - const user = await User.findOne({ regNo: regNo }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - user.roundQualified = round; - user.isRoundActive = true; - await user.save(); - res.status(200).json({ message: `User promoted to round ${round}` }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - banUser: async (req, res) => { - const { regNo } = req.body; - try { - const user = await User.findOne({ regNo }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - user.isActive = false; - await user.save(); - res.status(200).json({ message: `The user has been banned.` }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - removeBan: async (req, res) => { - const { regNo } = req.body; - try { - const user = await User.findOne({ regNo }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - user.isActive = true; - await user.save(); - res.status(200).json({ message: "The user has been unbanned." }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - enableRound: async (req, res) => { - const { round } = req.params; - try { - await Question.updateMany({ round }, { isActive: true }); - res.status(200).json({ message: `Enabled Round ${round}` }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - disableRound: async (req, res) => { - const { round } = req.params; - try { - await Question.updateMany({ round }, { isActive: false }); - res.status(200).json({ message: `Disabled Round ${round}` }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - updatePassword: async (req, res) => { - const { regNo, password } = req.body; - try { - const user = await User.findOne({ regNo }); - if (!user) { - return res.status(404).json({ error: "User not found" }); - } - const hash = await bcrypt.hash(password, 10); - user.password = hash; - await user.save(); - res.status(200).json({ message: "The password has been updated." }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Internal server error" }); - } - }, -}; - -module.exports = adminController; diff --git a/api/controllers/authController.js b/api/controllers/authController.js deleted file mode 100644 index 8a14d5a..0000000 --- a/api/controllers/authController.js +++ /dev/null @@ -1,158 +0,0 @@ -const bcrypt = require("bcrypt"); -const User = require("../models/User"); -const jwtController = require("../controllers/jwtController"); -const generator = require("generate-password"); -const { sendMail } = require("../utils/sendMail"); -const allowedEmailsData = require('../../allowedEmails.json'); - -const authController = { - login: async (req, res) => { - const { email, password } = req.body; - try { - const user = await User.findOne({ email }); - if (!user) { - return res.status(400).json({ message: "User not found" }); - } - if (!user.isActive) { - return res.status(403).json({ message: "User is banned" }); - } - if (await bcrypt.compare(password, user.password)) { - user.tokenVersion += 1; - await user.save(); - const accessToken = jwtController.signAccessToken( - user.regNo, - user.userRole, - user.tokenVersion, - ); - const refreshToken = jwtController.signRefreshToken( - user.regNo, - user.userRole, - ); - user.refreshToken = refreshToken; - await user.save(); - res.header("Authorization", `Bearer ${accessToken}`); - res.json({ accessToken, refreshToken }); - } else { - res.status(401).json({ message: "Incorrect password" }); - } - } catch (error) { - console.log(error); - res.status(500).json({ error: "Internal server error" }); - } - }, - - create: async (req, res) => { - try { - const { name, regNo, email } = req.body; - const emailList = allowedEmailsData.allowedEmails; - if (!emailList.includes(email)) { - return res.status(400).json({ error:"User is not registered" }); - } - const user_exists = await User.findOne({ $or: [{ regNo }, { email }] }); - if (user_exists) { - return res.status(400).json({ - error: - "User with the same registration number or email already exists", - }); - } - var password = generator.generate({ - length: 10, - numbers: true, - strict: true, - }); - - // Send Email with credentials - const subject = "Cookoff Credentials"; - const body = `Your Password is: ${password}`; - const response = await sendMail(email, subject, body); - - if (!response.status) return res.status(500).json(response); - // No error - - const hash = await bcrypt.hash(password, 10); - const new_user = new User({ name, regNo, email, password: hash }); - await new_user.save(); - res.status(201).json({ message: "Signup successful" }); - } catch (error) { - res.status(400).json({ error: "Error" }); - } - }, - - signup: async (req, res) => { - try { - const { name, regNo, email, password } = req.body; - const user_exists = await User.findOne({ $or: [{ regNo }, { email }] }); - if (user_exists) { - return res.status(400).json({ - error: - "User with the same registration number or email already exists", - }); - } - const hash = await bcrypt.hash(password, 10); - const new_user = new User({ name, regNo, email, password: hash }); - await new_user.save(); - res.status(201).json({ message: "Signup successful" }); - } catch (error) { - res.status(400).json({ error: "Error" }); - } - }, - - dashboard: async (req, res) => { - try { - const decoded = req.user; - const user = await User.findOne({ regNo: decoded.regNo }); - if (!user) { - return res.status(404).json({ message: "User not found" }); - } - res.status(201).json(user); - } catch (error) { - res.status(400).json({ error: "Error" }); - } - }, - - refresh: async (req, res) => { - const { refreshToken } = req.body; - if (!refreshToken) { - return res.status(400).json({ message: "refreshToken is required" }); - } - try { - const user = await User.findOne({ refreshToken }); - if (!user) { - return res.status(404).json({ message: "Invalid refreshToken" }); - } - const storedRefreshToken = user.refreshToken; - if (!storedRefreshToken) { - return res.status(400).json({ message: "Invalid refreshToken" }); - } - user.tokenVersion += 1; - await user.save(); - const newAccessToken = jwtController.signAccessToken( - user.regNo, - user.userRole, - user.tokenVersion, - ); - res.header("Authorization", `Bearer ${newAccessToken}`); - res.json({ accessToken: newAccessToken }); - } catch (error) { - res.status(500).json({ error: "Internal server error" }); - } - }, - - logout: async (req, res) => { - try { - const decoded = req.user; - const user = await User.findOne({ regNo: decoded.regNo }); - if (!user) { - return res.status(404).json({ message: "User not found" }); - } - user.tokenVersion = 0; - user.refreshToken = null; - await user.save(); - res.status(200).json({ message: "Logout successful" }); - } catch (error) { - res.status(500).json({ error: "Internal server error" }); - } - }, -}; - -module.exports = authController; diff --git a/api/controllers/jwtController.js b/api/controllers/jwtController.js deleted file mode 100644 index fc0cbc4..0000000 --- a/api/controllers/jwtController.js +++ /dev/null @@ -1,18 +0,0 @@ -const jwt = require('jsonwebtoken'); -require("dotenv").config(); -const accessTokenSecret = process.env.ACCESS_KEY_SECRET; -const refreshTokenSecret = process.env.REFRESH_KEY_SECRET; - -const jwtController = { - signAccessToken: (regNo, userRole, tokenVersion) => { - const payload = { regNo: regNo, userRole: userRole, tokenVersion: tokenVersion }; - return jwt.sign(payload, accessTokenSecret, { expiresIn: '15m' }); - }, - - signRefreshToken: (regNo, userRole) => { - const payload = { regNo: regNo, userRole: userRole }; - return jwt.sign(payload, refreshTokenSecret, { expiresIn: '1d' }); - } -}; - -module.exports = jwtController; \ No newline at end of file diff --git a/api/controllers/questions.js b/api/controllers/questions.js deleted file mode 100644 index e08c1da..0000000 --- a/api/controllers/questions.js +++ /dev/null @@ -1,207 +0,0 @@ -const ques = require("../models/ques"); -const TestCaseModel = require("../models/testCasesModel"); -const UserModel = require("../models/User") - -async function getQuestionByID(req, res) { - try { - let questions; - const decoded = req.user; - - if (decoded.userRole == "admin") { - questions = await ques.findById(req.body.id).populate("testCases"); - } else { - questions = await ques.findById(req.body.id).populate({ - path: "testCases", - match: { hidden: false }, - }); - } - if (questions.length == 0) { - return res.status(404).json({ - message: "No questions found", - }); - } else { - return res.status(201).json(questions); - } - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -async function getAll(req, res) { - try { - let questionsAll; - const decoded = req.user; - if (decoded.userRole == "admin") { - questionsAll = await ques.find().populate("testCases"); - } else { - questionsAll = await ques.find().populate({ - path: "testCases", - match: { hidden: false }, - }); - } - if (questionsAll.length == 0) { - return res.status(404).json({ - message: "No questions found", - }); - } else { - return res.status(201).json(questionsAll); - } - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -async function getByRound(req, res) { - try { - let questionByRound; - const decoded = req.user; - if (decoded.userRole == "admin") { - questionByRound = await ques - .where("isActive") - .equals(true) - .populate("testCases"); - } else { - questionByRound = await ques - .where("isActive") - .equals(true) - .populate({ path: "testCases", match: { hidden: false } }); - } - if (questionByRound.length == 0) { - return res.status(404).json({ - message: "No questions found", - }); - } else { - return res.status(201).json(questionByRound); - } - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -async function deleteQuestion(req, res) { - try { - const deletedItem = await ques.findByIdAndDelete(req.params.id); - //console.log(req.body.id); - - const testCases = await TestCaseModel.find() - .where(`_id: ${req.params.id}`) - .exec(); - - TestCaseModel.deleteMany(testCases); - - if (!deletedItem) { - return res.status(404).json({ message: "Item not found" }); - } - return res.status(201).json({ - message: "Successfully Deleted", - testCases: testCases, - }); - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -async function updateQuestion(req, res) { - try { - const updatedData = await ques.findByIdAndUpdate( - req.params.id, - { - $set: req.body, - }, - { new: true }, - ); - - if (!updatedData) { - return res.status(404).json({ message: "Item not found" }); - } - - return res.status(200).json(updatedData); - } catch (error) { - return res.status(500).json({ message: error.message }); - } -} - -async function createQuestion(req, res) { - try { - const Ques = await ques.create({ - name: req.body.name, - inputFormat: req.body.inputFormat, - outputFormat: req.body.outputFormat, - constraints: req.body.constraints, - round: req.body.round, - sampleTestInput: req.body.sampleTestInput, - sampleTestOutput: req.body.sampleTestOutput, - explanation: req.body.explanation, - objective: req.body.objective, - points: req.body.points, - testCases: [], - }); - await Ques.save(); - - return res.status(201).json(Ques); - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -async function dashboard(req, res) { - try { - let questionByRound; - const decoded = req.user; - const { round_no } = req.body; - const user = UserModel.findOne({ regNo: decoded.regNo }); - - if (decoded.userRole == "admin") { - questionByRound = await ques - .where("isActive") - .equals(true) - .populate("testCases"); - } else if (user.roundQualified != round_no) { - questionByRound = await ques - .where("isActive") - .equals(true) - .populate({ path: "testCases", match: { hidden: false } }); - } else { - return res.status(404).json({ message: "User not qualified" }); - } - if (questionByRound.length == 0) { - return res.status(404).json({ - message: "No questions found", - }); - } else { - const data = []; - questionByRound.forEach((element) => { - const obj = { - name: element.name, - points: element.points, - }; - data.push(obj); - }); - return res.status(201).json(data); - } - } catch (error) { - return res.status(500).json({ - message: error.message, - }); - } -} - -module.exports = { - createQuestion, - getAll, - getByRound, - getQuestionByID, - updateQuestion, - deleteQuestion, - dashboard, -}; diff --git a/api/controllers/submission.js b/api/controllers/submission.js deleted file mode 100644 index 869034d..0000000 --- a/api/controllers/submission.js +++ /dev/null @@ -1,628 +0,0 @@ -const submission_db = require("../models/submission.js"); -const questiondb = require("../models/ques.js"); -const testdb = require("../models/testCasesModel.js"); -const axios = require("axios"); -const jwt = require("jsonwebtoken"); -const User = require("../models/User.js"); -const ObjectId = require("mongoose").Types.ObjectId; -require("dotenv").config(); -const Judge0 = process.env.JUDGE_URI; - -class submission { - async create(req, user, score, max, result, time, passed) { - //console.log(result); - const { language_id, code, question_id } = req.body; - const check = await submission_db.findOne({ - regNo: user, - question_id: question_id, - }); - if (check) { - return await submission_db - .updateOne( - { regNo: user, question_id: question_id }, - { - code: code, - language_id: language_id, - score: score, - max_score: max, - lastResults: result, - runtime: time, - testcases_passed: passed - }, - ) - .then(() => "Submission record has been updated") - .catch(() => "Error faced during updating the sub DB"); - } else { - return await submission_db - .create({ - regNo: user, - language_id: language_id, - code: code, - question_id: question_id, - score: score, - max_score: max, - lastResults: result, - runtime: time, - testcases_passed: passed - }) - .then(() => "Submission record has been saved") - .catch((err) => "Error faced during creating the entry"); - } - } - - async eval(req, res) { - const reg_no = await this.get_reg_no(req, res); - if (reg_no == 0) return; - const { question_id, code, language_id } = req.body; - if (!question_id) { - res.status(400).json({ - Error: "Question ID was not given", - }); - return; - } - if (!code) { - res.status(400).json({ - Error: "Code was not given", - }); - return; - } - if (!language_id) { - res.status(400).json({ - Error: "Language ID not given", - }); - return; - } - if (!ObjectId.isValid(question_id)) { - res.status(400).json({ - Error: "Question ID is not an ObjectID", - }); - return; - } - const check = await submission_db.findOne( - { regNo: reg_no, question_id: question_id }, - "code score lastResults allPassesAt testcases_passed", - ); - //console.log(!check.allPassesAt); - console.log(check != null && check.code == code,check); - if (check != null && check.code == code) { - await this.create_score(reg_no); - const max = await questiondb.findById(question_id,"testCases"); - console.log(max); - if (check.lastResults.length !== 0) { - res.status(201).json({ - error1: check.lastResults[0], - error2: check.lastResults[1], - error3: check.lastResults[2], - Sub_db: "No changes in source code", - Score: check.score, - test_passed : check.testcases_passed, - no_of_test : max.testCases.length - }); - return; - } - } - let multipler; - switch (parseInt(language_id)) { - case 50: //for C - case 54: //for C++ - case 63: //for Node JS/Javascript - case 60: //for Go - case 73: //for Rust - multipler = 1; - break; - case 51: //for C# - case 62: //for java - multipler = 2; - break; - case 68: //for PHP - multipler = 3; - break; - case 71: //for Python - multipler = 5; - break; - default: - res.status(400).json({ - Error: "Invalid language ID", - }); - return; - } - const testcase = await questiondb.findById(question_id, "testCases"); - if (testcase == null) { - res.status(400).json({ - Error: "Question ID doesn't exist", - }); - return; - } - const testcases = testcase.testCases; - if (testcases.length == 0) { - res.status(400).json({ - Error: "Testcases are not present", - }); - return; - } - let tests = []; - let grp = {}; - for (let i in testcases) { - const current = await testdb.findById(testcases[i]); - if (current == null) { - res.status(400).json({ - Error: "Testcase ID " + testcases[i] + " doesn't exist", - }); - return; - } - tests.push({ - source_code: Buffer.from(code, "binary").toString("base64"), - language_id: language_id, - stdin: Buffer.from(current.input, "binary").toString("base64"), - expected_output: Buffer.from(current.expectedOutput, "binary").toString( - "base64", - ), - cpu_time_limit: - current.time * multipler < 15 ? current.time * multipler : 15, - memory: - current.memory * multipler < 2048 ? 2048 : current.memory * multipler - //redirect_stderr_to_stdout: true, - }); - const group = current.group; - if (group in grp) { - let data = grp[group]; - data.push(parseInt(i)); - //console.log(data); - grp[group] = data; - } else { - grp[group] = [parseInt(i)]; - } - } - - //console.log(grp) - - //console.log(tests); - - const tokens = await axios - .post( - Judge0 + "/submissions/batch?base64_encoded=true", - { - submissions: tests, - }, - { - header: { - "Content-Type": "application/JSON", - }, - }, - ) - .then((response) => response.data) - .catch((err) => { - res.status(400).json({ - Error: err.code, - }); - return; - }); - if (!tokens) { - return; - } - let str = []; - tokens.forEach((element) => { - str.push(element.token); - }); - const url = Judge0 + - "/submissions/batch?tokens=" + - str.toString() + - "&base64_encoded=true&fields=status_id,stderr,compile_output,expected_output,stdout,time"; - console.log(url); - let completion = false; - let data_sent_back = { - error1: [false, false, false, false], //false means it passed that grp - //[complilation error/runtime,time limit exceeded, O/P failed] - error2: [false, false, false, false], - error3: [false, false, false, false], - Sub_db: "", - Score: "", - test_passed : "", - no_of_test : "" - }; - const list = [data_sent_back.error1,data_sent_back.error2,data_sent_back.error3]; - let errors = {}; - let i = 0; - console.log(grp); - Object.values(grp).forEach((ele) => { - console.log(ele); - errors[ele] = list[i++]; - }); - - console.log("error = ",errors); - while (!completion) { - let runtime = 0; - let score = 0; - completion = true; - let failed = []; - const result = await axios - .get(url) - .then((response) => response.data.submissions); - let error = ""; - for (let i in result) { - const element = result[i]; - switch (element.status_id) { - case 1: - case 2: - completion = false; - break; - case 3: - //console.log(Buffer.from(element.expected_output,"base64").toString("utf-8")); - runtime += parseFloat(element.time); - break; - case 4: - //console.log(Buffer.from(element.expected_output,"base64").toString("utf-8")); - //console.log(Buffer.from(element.stdout,"base64").toString("utf-8")); - if (element.stdout == null){ - Object.keys(errors).forEach((ele) => { - if(ele.includes(i)){ - console.log(errors[ele]); - errors[ele][3] = true; - } - }); - //data_sent_back.error[3] = true; - failed.push(i); - continue; - } - if ( - Buffer.from(element.stdout, "base64").toString("utf-8") + "\n" == - Buffer.from(element.expected_output, "base64").toString( - "utf-8", - ) || - Buffer.from(element.stdout, "base64").toString("utf-8") == - Buffer.from(element.expected_output, "base64").toString("utf-8") - ) { - runtime += parseFloat(element.time); - } else { - Object.keys(errors).forEach((ele) => { - if(ele.includes(i)){ - console.log(ele); - console.log(errors[ele]); - errors[ele][3] = true; - } - }); - failed.push(i); - } - break; - case 5: - failed.push(i); - Object.keys(errors).forEach((ele) => { - if(ele.includes(i)){ - errors[ele][2] = true; - } - }); - error = element.compile_output; - break; - case 6: - failed.push(i); - error = element.compile_output; - Object.keys(errors).forEach((ele) => { - if(ele.includes(i)){ - errors[ele][0] = true; - } - }); - break; - case 13: - failed.push(i); - /*data_sent_back.error = - "Server side error please contact the nearest admin";*/ - res.status().json({ - Error: "Judge0 side error", - }); - return; - default: - failed.push(i); - Object.keys(errors).forEach((ele) => { - if(ele.includes(i)){ - errors[ele][0] = true; - } - }); - error = (error=="")?element.stderr:error; - break; - } - } - //console.log(runtime); - if (tests.length == failed.length) runtime = 0; - else runtime = runtime / (tests.length - failed.length); - //console.log(tests.length,failed.length); - runtime = runtime / multipler; - //console.log("runtime = ", runtime); - let complilation = false; - if (completion) { - //Checking whether complilation error or runtime error - Object.keys(errors).forEach((ele) => { - //console.log("jwngbinsdvn",failed.length,tests.length,errors[ele][0]); - if (failed.length == tests.length && errors[ele][0]){ - console.log("jwngbinsdvn",failed.length,tests.length,errors[ele][0]); - errors[ele][0] = true; - errors[ele][1] = false; - errors[ele][2] = false; - errors[ele][3] = false; - complilation = true; - } - }) - - const sent_back = Object.values(errors); - //In case of complilation error the following code will run - if (complilation) { - /*const msg = result[0].compile_output != null - ? Buffer.from(result[0].compile_output, "base64").toString( - "utf-8", - ) - : Buffer.from(error, "base64").toString("utf-8");*/ - const msg = Buffer.from(error,"base64").toString("utf-8"); - data_sent_back.Sub_db = "Not saved in Sub DB(complilation error)"; - res.status(201).json({ - error1: sent_back[0], - error2: sent_back[1], - error3: sent_back[2], - Sub_db: data_sent_back.Sub_db, - message: msg, - }); - return; - } - - //if(data_sent_back.error[2]) data_sent_back.error[3] = true; - - //Calculate the score of the given code - Object.keys(grp).forEach((element) => { - let check = true; - const hell = grp[element]; - for (let i in failed) { - if (check && hell.includes(parseInt(failed[i]))) { - check = false; - } - } - if (check) { - score += 1; - } - }); - - - //comparing the score with the existing score and picking the best one - data_sent_back.Score = - !check || score >= check.score ? score : check.score; - //console.log(data_sent_back.Score, score); - - //If new score is higher or equal to the existing score, then sub DB is updated - if (data_sent_back.Score == score) { - data_sent_back.Sub_db = await this.create( - req, - reg_no, - score, - Object.keys(grp).length, - sent_back, - runtime, - (tests.length - failed.length) - ); - await this.create_score(reg_no); - } else { - data_sent_back.Sub_db = "No changes in Sub DB"; - await this.create_score(reg_no); - } - data_sent_back.test_passed = (tests.length - failed.length); - data_sent_back.no_of_test = tests.length; - - //Creation of allPassesAt field when all testcases are passed - let passed = false; - Object.values(errors).forEach((ele) =>{ - if (!ele.includes(true) && - (!check || !check.allPassesAt) - ) passed = true; - }) - if(passed) - { - this.update_time_passed(reg_no, question_id); - } - - res.status(201).json(data_sent_back); - break; - } - } - } - - async leaderboard(req, res) { - const all = await User.find({}, "regNo score").sort({ - score: -1, - submissionTime: 1, - updatedAt: 1, - }); - res.status(200).json(all); - } - - async create_score(user) { - const ele = await submission_db.aggregate([ - { - $match: { regNo: user }, - }, - { - $group: { - _id: "$regNo", - total: { - $sum: "$score", - }, - }, - }, - ]); - const score = ele[0].total; - return User.updateOne({ regNo: user }, { score: score }) - .catch(() => console.error("Error occured while saving scores \nRegno :" + regNo + "\tScore :" + score)); - } - - async get_reg_no(req, res) { - const authHeader = req.header("Authorization"); - if (!authHeader) { - res.status(401).json({ message: "Access denied. Token missing." }); - return 0; - } - const token = authHeader.replace("Bearer ", ""); - try { - const decoded = jwt.verify(token, process.env.ACCESS_KEY_SECRET); - return decoded.regNo; - } catch { - res.status(401).json({ message: "Invalid token." }); - return 0; - } - } - - async get_score(req, res) { - const { regno } = req.params; - const record = await User.findOne({ regNo: regno }, "name regNo score"); - res.status(200).json(record); - } - - async get_all(req, res) { - const { regno } = req.params; - //console.log(regno); - const record = await submission_db.find( - { regNo: regno }, - "code score question_id lastResults language_id", - ); - //console.log(record); - if (record.length == 0) { - res.status(400).json({ - Error: "Invalid regNo", - }); - return; - } - let msg = []; - record.forEach((element) => { - const results = element.lastResults; - const compilation_error = results[0]; - const runtime_error = results[1]; - const time_limit_exceeded = results[2]; - const output_no_match = results[3]; - const data = { - question_id: element.question_id, - code: element.code, - score: element.score, - compilation_error: compilation_error, - runtime_error: runtime_error, - time_limit_exceeded: time_limit_exceeded, - output_did_not_match: output_no_match, - language_id: element.language_id, - }; - msg.push(data); - }); - res.status(200).json(msg); - } - - async update_time_passed(user, question_id) { - const curr_time = new Date().getTime(); - await User.updateOne({ regNo: user }, { submissionTime: curr_time }); - return await submission_db - .updateOne( - { - regNo: user, - question_id: question_id, - }, - { allPassesAt: curr_time }, - ) - .then(() => "Updated all testcases timestamp") - .catch(() => "Failed to update the timestamp"); - } - - async endtest(req, res) { - try { - const user = await User.findOne({ regNo: req.user.regNo }); - if (!user) { - return res - .status(400) - .json({ status: false, message: "User Not Found" }); - } - user.isRoundActive = false; - await user.save(); - return res - .status(200) - .json({ status: true, message: "Test ended succesfully" }); - } catch (error) { - return res.status(500).json({ status: false, error: error }); - } - } - - async round_lb(req, res) { - const { round } = req.params; - const QID = await questiondb.find({ round: round }, "_id"); - let question = []; - QID.forEach((ele) => question.push(ele._id.toString())); - const all_submit = await submission_db.find({ - question_id: { "$in": question }, - }, "regNo score question_id runtime allPassesAt"); - let leaderboard = {}; - all_submit.forEach((ele) => { - if (ele.regNo in leaderboard) { - let data = leaderboard[ele.regNo]; - data[0] += ele.score; - data[1] = data[1] > ele.allPassesAt ? ele.allPassesAt : data[1]; - data[2] += ele.runtime; - //console.log(data); - leaderboard[ele.regNo] = data; - } else { - leaderboard[ele.regNo] = [ele.score, ele.allPassesAt, ele.runtime]; - } - }); - let items = Object.keys(leaderboard).map(function (key) { - return [key, leaderboard[key]]; - }); - items.sort(function (a, b) { - //console.log(a[1][0]); - if (a[1][0] > b[1][0]) return -1; - if (a[1][0] < b[1][0]) return 1; - if (a[1][1] > b[1][1]) return 1; - if (a[1][1] < b[1][1]) return -1; - }); - res.status(200).json(items); - } - - async get_round(req, res) { - const { regno,round } = req.params; - //console.log(req.params); - //console.log(regno,round); - //console.log(regno); - const question = await questiondb.find( - {round : round},"_id name points" - ); - let ids = []; - question.forEach((ele) => ids.push(ele._id.toString())); - console.log(ids); - const record = await submission_db.find( - { regNo: regno , question_id : {"$in" : ids}}, - "code score question_id lastResults language_id", - ); - //console.log(record); - if (record.length == 0) { - res.status(400).json({ - Error: "Invalid regNo", - }); - return; - } - let msg = []; - let i = 0; - let number = 0; - record.forEach((element) => { - const curr = question[ids.indexOf(element.question_id.toString())]; - const name = curr.name; - const points = curr.points; - const results = element.lastResults; - const compilation_error = results[0]; - const runtime_error = results[1]; - const time_limit_exceeded = results[2]; - const output_no_match = results[3]; - const data = { - question_id: element.question_id, - name : name, - points : points, - code: element.code, - score: element.score, - compilation_error: compilation_error, - runtime_error: runtime_error, - time_limit_exceeded: time_limit_exceeded, - output_did_not_match: output_no_match, - language_id: element.language_id, - }; - msg.push(data); - }); - res.status(200).json(msg); - } -} -module.exports = submission; diff --git a/api/controllers/testCasesController.js b/api/controllers/testCasesController.js deleted file mode 100644 index b22667b..0000000 --- a/api/controllers/testCasesController.js +++ /dev/null @@ -1,99 +0,0 @@ -const TestCaseModel = require("../models/testCasesModel.js"); -const QuestionModel = require("../models/ques.js"); - -const createTestCase = async (req, res) => { - try { - const testCase = await TestCaseModel.create({ - expectedOutput: req.body.expectedOutput, - input: req.body.input, - hidden: req.body.hidden, - time: req.body.time, - memory: req.body.memory, - group: req.body.group, - question: req.body.question, - }); - - const question = await QuestionModel.findById(req.body.question); - if (!question.testCases.includes(testCase)) { - question.testCases.push(testCase); - } - await question.save(); - - return res.status(201).json(testCase); - } catch (_error) { - return res.status(500).json({ - message: "Something went wrong", - }); - } -}; - -const deleteTestCase = async (req, res) => { - try { - const testCase = await TestCaseModel.findByIdAndDelete(req.params.id); - const question = await QuestionModel.findById(testCase.question); - if (question) { - question.testCases.pull(testCase._id); - await question.save(); - } - return res.status(201).json({ message: "Succesfully deleted test case" }); - } catch (_error) { - return res.status(500).json({ - message: "Failed to delete test case", - }); - } -}; - -const updateTestCase = async (req, res) => { - try { - const testCase = await TestCaseModel.findById(req.params.id); - - if (!testCase) { - return res.status(500).json({ message: "Test case does not exist" }); - } - - const { - expectedOutput, - input, - hidden, - time, - memory, - group, - question, - } = req.body; - testCase.expectedOutput = expectedOutput - ? expectedOutput - : testCase.expectedOutput; - testCase.input = input ? input : testCase.input; - testCase.hidden = hidden === undefined ? hidden : testCase.hidden; - testCase.time = time ? time : testCase.time; - testCase.memory = memory ? memory : testCase.memory; - testCase.group = group ? group : testCase.group; - - if (question) { - const oldQuestion = await QuestionModel.findById(testCase.question); - if (oldQuestion) { - oldQuestion.testCases.pull(testCase._id); - await oldQuestion.save(); - } - - const updated = await QuestionModel.findById(question); - //console.log(updated); - updated.testCases.push(testCase._id); - await updated.save(); - - testCase.question = question; - } - - await testCase.save(); - - return res.status(201).json({ testCase }); - } catch (_error) { - return res.status(500).json({ message: "Failed to update test cases" }); - } -}; - -module.exports = { - createTestCase, - deleteTestCase, - updateTestCase, -}; diff --git a/api/middleware/jwtMiddleware.js b/api/middleware/jwtMiddleware.js deleted file mode 100644 index c5225e8..0000000 --- a/api/middleware/jwtMiddleware.js +++ /dev/null @@ -1,112 +0,0 @@ -const jwt = require("jsonwebtoken"); -require("dotenv").config(); -const User = require("../models/User"); -const Ques = require("../models/ques"); - -async function verifyAccessToken(req, res, next) { - const authHeader = req.header("Authorization"); - if (!authHeader) { - return res.status(401).json({ message: "Access denied. Token missing." }); - } - const token = authHeader.replace("Bearer ", ""); - try { - const decoded = jwt.verify(token, process.env.ACCESS_KEY_SECRET); - const user = await User.findOne({ regNo: decoded.regNo }); - if (!user.isActive) { - return res.status(403).json({ error: "User is banned" }); - } - if (!user || user.tokenVersion !== decoded.tokenVersion) { - return res.status(403).json({ message: "Unauthorized" }); - } - req.user = decoded; - next(); - } catch (error) { - res.status(401).json({ message: "Invalid token." }); - } -} - -async function verifyRefreshToken(req, res, next) { - const { refreshToken } = req.body; - if (!refreshToken) { - return res.status(400).json({ message: "refreshToken is required" }); - } - try { - const user = await User.findOne({ refreshToken }); - if (!user) { - return res.status(404).json({ message: "Please login again." }); - } - if (user.refreshToken !== refreshToken) { - return res.status(401).json({ message: "Invalid refreshToken" }); - } - jwt.verify(refreshToken, process.env.REFRESH_KEY_SECRET, (err, decoded) => { - if (err) { - return res.status(401).json({ message: "refreshToken expired" }); - } - req.user = user; - next(); - }); - } catch (error) { - res.status(500).json({ error: "Internal server error" }); - } -} - -async function verifyAdminToken(req, res, next) { - const authHeader = req.header("Authorization"); - if (!authHeader) { - return res.status(401).json({ message: "Access denied. Token missing." }); - } - const token = authHeader.replace("Bearer ", ""); - try { - const decoded = jwt.verify(token, process.env.ACCESS_KEY_SECRET); - const user = await User.findOne({ regNo: decoded.regNo }); - const role = decoded.userRole; - if ( - !user || - user.tokenVersion !== decoded.tokenVersion || - role !== "admin" - ) { - return res.status(403).json({ message: "Unauthorized" }); - } - req.user = decoded; - next(); - } catch (error) { - res.status(401).json({ message: "Invalid token." }); - } -} - -async function verifyQuestion(req, res, next) { - const { question_id } = req.body; - try { - const user = await User.findOne({ regNo: req.user.regNo }); - const ques = await Ques.findOne({ _id: question_id }); - //console.log(ques); - if (!ques) { - return res.status(400).json({ message: "Question not found" }); - } - if (!ques.isActive) { - return res.status(400).json({ message: "This question is inactive." }); - } - if (!user.isRoundActive) { - return res - .status(400) - .json({ message: "User has submitted the test already." }); - } - if (user.roundQualified !== ques.round) { - return res.status(400).json({ - message: - "This user is not allowed to make a submission for this question.", - }); - } - next(); - } catch (error) { - console.log(error); - res.status(500).json({ message: "Internal server error." }); - } -} - -module.exports = { - verifyAccessToken, - verifyRefreshToken, - verifyAdminToken, - verifyQuestion, -}; diff --git a/api/middleware/rateLimit.js b/api/middleware/rateLimit.js deleted file mode 100644 index 8e86141..0000000 --- a/api/middleware/rateLimit.js +++ /dev/null @@ -1,9 +0,0 @@ -const rateLimit = require('express-rate-limit'); - -const RateLimiter = rateLimit({ - windowMs: 3 * 60 * 1000, - max: 100, - message: { error: 'Too many requests, please try again later.' } -}); - -module.exports = RateLimiter; \ No newline at end of file diff --git a/api/models/User.js b/api/models/User.js deleted file mode 100644 index f87cc75..0000000 --- a/api/models/User.js +++ /dev/null @@ -1,59 +0,0 @@ -const mongoose = require("mongoose"); -const userSchema = new mongoose.Schema( - { - name: { - type: String, - required: true, - }, - email: { - type: String, - required: true, - unique: true, - }, - regNo: { - type: String, - required: true, - }, - refreshToken: { - type: String, - }, - userRole: { - type: String, - enum: ["user", "admin"], - default: "user", - }, - isActive: { - type: Boolean, - default: true, - }, - isRoundActive: { - type: Boolean, - default: true, - }, - roundQualified: { - type: Number, - default: 0, - }, - password: { - type: String, - required: true, - }, - tokenVersion: { - type: Number, - default: 0, - }, - score: { - type: Number, - default: 0, - }, - submissionTime: { - type: Date, - default: new Date("2025"), - }, - }, - { - timestamps: true, - }, -); -const User = mongoose.model("User", userSchema); -module.exports = User; diff --git a/api/models/ques.js b/api/models/ques.js deleted file mode 100644 index 39f6889..0000000 --- a/api/models/ques.js +++ /dev/null @@ -1,18 +0,0 @@ -const mongoose = require("mongoose"); - -const quesSchema = new mongoose.Schema({ - name: { type: String, required: true, unique: true }, - objective: { type: String, required: true }, - inputFormat: [{ type: String }], - outputFormat: [{ type: String }], - constraints: [{ type: String, required: true }], - round: { type: Number, required: true }, - sampleTestInput: [{ type: String, required: true }], - sampleTestOutput: [{ type: String, required: true }], - explanation: [{ type: String }], - isActive: { type: Boolean, default: false }, - points: { type: Number }, - testCases: [{ type: mongoose.Schema.Types.ObjectId, ref: "Testcase" }], -}); - -module.exports = mongoose.model("Question", quesSchema); diff --git a/api/models/submission.js b/api/models/submission.js deleted file mode 100644 index 1f998de..0000000 --- a/api/models/submission.js +++ /dev/null @@ -1,22 +0,0 @@ -const { Schema, model, default: mongoose } = require("mongoose"); - -const submission_schema = new Schema({ - regNo: { type: String, required: true }, - language_id: { type: Number, required: true }, - code: { type: String, required: true }, - max_score: { type: Number, required: true }, - question_id: { - type: mongoose.Schema.Types.ObjectId, - ref: "Questions", - required: true, - }, - score: { type: Number }, - lastResults: [[{ type: Boolean }]], - allPassesAt: { type: Date }, - runtime: {type: Number, required: true}, - testcases_passed : {type:Number}, -}, { timestamps: true }); - -const submission_db = model("Submissions", submission_schema); - -module.exports = submission_db; diff --git a/api/models/testCasesModel.js b/api/models/testCasesModel.js deleted file mode 100644 index a64aadf..0000000 --- a/api/models/testCasesModel.js +++ /dev/null @@ -1,15 +0,0 @@ -const mongoose = require("mongoose"); - -const TestCaseSchema = new mongoose.Schema({ - expectedOutput: { type: String, required: true }, - input: { type: String, required: true }, - hidden: { type: Boolean, default: false }, - time: { type: Number, default: 0, required: true }, - memory: { type: Number, default: 0, required: true }, - group: { type: Number, required: true }, - question: { type: mongoose.Schema.Types.ObjectId, ref: "Question" }, -}); - -const TestCaseModel = mongoose.model("Testcase", TestCaseSchema); - -module.exports = TestCaseModel; diff --git a/api/routes/adminRouter.js b/api/routes/adminRouter.js deleted file mode 100644 index a38f487..0000000 --- a/api/routes/adminRouter.js +++ /dev/null @@ -1,20 +0,0 @@ -const express = require('express'); -const {verifyAdminToken} = require('../middleware/jwtMiddleware'); -const adminController = require('../controllers/adminController'); -const router = express.Router(); - -router.use(verifyAdminToken); -router.get('/dashboard', (req, res) => { - res.json({ message: 'admin authorised' }); -}); - -router.get('/getAllUsers', adminController.getAllUsers); -router.get('/enableRound/:round', adminController.enableRound); -router.get('/disableRound/:round', adminController.disableRound); -router.post('/getUserByID', adminController.getUserbyID); -router.post('/promoteUser', adminController.promoteUser); -router.post('/banUser', adminController.banUser); -router.post('/removeBan', adminController.removeBan); -router.post('/updatePassword', adminController.updatePassword); - -module.exports = router; diff --git a/api/routes/auth.js b/api/routes/auth.js deleted file mode 100644 index 1d6dee3..0000000 --- a/api/routes/auth.js +++ /dev/null @@ -1,23 +0,0 @@ -const express = require("express"); -const { - verifyRefreshToken, - verifyAccessToken, - verifyAdminToken, -} = require("../middleware/jwtMiddleware"); -const RateLimiter = require("../middleware/rateLimit"); -const authController = require("../controllers/authController"); -const router = express.Router(); - -router.get("/dashboard", verifyAccessToken, authController.dashboard); -router.post("/login", RateLimiter, authController.login); -router.post("/signup", verifyAdminToken, authController.signup); -router.post("/create", authController.create); -router.post( - "/refresh", - RateLimiter, - verifyRefreshToken, - authController.refresh -); -router.post("/logout", verifyAccessToken, authController.logout); - -module.exports = router; diff --git a/api/routes/questionsRouter.js b/api/routes/questionsRouter.js deleted file mode 100644 index 5c41d1c..0000000 --- a/api/routes/questionsRouter.js +++ /dev/null @@ -1,26 +0,0 @@ -const express = require("express"); -const router = express.Router(); -const { verifyAccessToken, verifyAdminToken } = require( - "../middleware/jwtMiddleware.js", -); - -const { - createQuestion, - getAll, - getByRound, - getQuestionByID, - updateQuestion, - deleteQuestion, - dashboard, -} = require("../controllers/questions"); - -router.use(verifyAccessToken); -router.post("/createQues", verifyAdminToken, createQuestion); -router.get("/getOne", getAll); -router.post("/getId", getQuestionByID); -router.post("/getRound", getByRound); -router.put("/updateQuestion/:id", verifyAdminToken, updateQuestion); -router.delete("/deleteQuestion/:id", verifyAdminToken, deleteQuestion); -router.post("/get/dashboard", dashboard); - -module.exports = router; diff --git a/api/routes/submission.js b/api/routes/submission.js deleted file mode 100644 index 31528db..0000000 --- a/api/routes/submission.js +++ /dev/null @@ -1,42 +0,0 @@ -const express = require("express"); -const router = express.Router(); -const submission = require("../controllers/submission.js"); -const { - verifyAdminToken, - verifyAccessToken, - verifyQuestion, -} = require("../middleware/jwtMiddleware.js"); -const { verify } = require("jsonwebtoken"); - -const submit = new submission(); - -router.post("/eval", verifyAccessToken, verifyQuestion, (req, res) => { - submit.eval(req, res); -}); - -router.get("/leaderboard", verifyAdminToken, (req, res) => { - submit.leaderboard(req, res); -}); - -router.get("/score/:regno", verifyAdminToken, (req, res) => { - submit.get_score(req, res); -}); - -router.get("/codes/:regno", verifyAdminToken, (req, res) => { - submit.get_all(req, res); -}); - -router.get("/endtest", verifyAccessToken, (req, res) => { - submit.endtest(req, res); -}); - -router.get("/round_lb/:round", verifyAdminToken, (req, res)=> { - submit.round_lb(req,res); -}); - -router.get("/codes_by_round/:regno/:round", verifyAdminToken, (req,res) =>{ - submit.get_round(req,res); -}) - - -module.exports = router; diff --git a/api/routes/testCaseRouter.js b/api/routes/testCaseRouter.js deleted file mode 100644 index 51a539f..0000000 --- a/api/routes/testCaseRouter.js +++ /dev/null @@ -1,16 +0,0 @@ -const express = require("express"); -const { - createTestCase, - updateTestCase, - deleteTestCase, -} = require("../controllers/testCasesController"); -const { verifyAdminToken } = require("../middleware/jwtMiddleware"); -const Router = express.Router; - -const router = Router(); -router.use(verifyAdminToken); -router.post("/create", createTestCase); -router.delete("/delete/:id", deleteTestCase); -router.patch("/update/:id", updateTestCase); - -module.exports = router; diff --git a/api/seeders/.final_seeder.bak b/api/seeders/.final_seeder.bak deleted file mode 100644 index 585f8ee..0000000 --- a/api/seeders/.final_seeder.bak +++ /dev/null @@ -1 +0,0 @@ -[{"name": "ARRRCRT", "objective": "Chef has an array of integers from 1 to N in jumbled order. Chef allows his friend to ask for subsequences of the array as many times as he requires. But, when chef gives the numbers of the subsequence, he gives it in a jumbled order. What is the minimum number of such requests his friend can make to recreate the original array", "inputFormat": ["First line contains the number of testcases, T. Second line contains an integer, N denoting the length of the array"], "outputFormat": ["Output an integer,M denoting the minimum number of request his friend needs to make"], "constraints": null, "round": 1, "sampleTestInput": ["1\n3", "1\n5"], "sampleTestOutput": ["2", "3"], "explanation": ["Making requests of subarrays [0,1] nd [1,2], the array of length 3 can be recreated", "Making request of subarrays [0,1,2], [1,2,3], [2,3,4],the array of length 5 can be recreated"], "testCases": [{"input": "1\n100000", "expectedOutput": "17", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10000000000744", "expectedOutput": "44", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n384934930430334", "expectedOutput": "49", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "expectedOutput": "660732", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "expectedOutput": "3321929", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854564564848656846846541465465484", "expectedOutput": "144625", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n237469837489327489787589475386586435876348753875983465876349574895627364823546318741827389126487635454655487326487637456325465364536453283274823749832742734874839028492374893748637564389573489758237439748326487653874798493548484512515474846513516848465415151848465415132135487998468451352516548798784513513216548979874865415132135467874845613521564856846848674541546748646541516584748451321654846854151355478468541351654849846541451564864864654165468484654684786467884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928937884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540478843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976046489465153416548978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976068468541541578843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606486454165861596826457540403314327582156399232931348229798533882278769760682645754040331432758215639923293134822979853388227876976003314327582156399232931348229798533882278769760920786159682645754040331432758215639923293134822979853388227876976085456574684564456834758647354543455784358434655435212345827584263452341453234125458647586445353445134535143355433455448657468452445324355445548347368545648486568468465414654654842374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854565746845644568347586473545434557843584346554352123458275842634523414532341254586475864453534451345351433554334554486574684524453243554455483473685456484865684684654146546548423746983748932748978758947538658643587634875387598346587634957489562736482354631874182738912648763545465548732648763745632546536453645328327482374983274273487483902849237489374863756438957348975823743974832648765387479849354848451251547484651351684846541515184846541513213548799846845135251654879878451351321654897987486541513213546787484561352156485684684867454154674864654151658474845132165484685415135547846854135165484984654145156486486465416546848465468478646788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754047884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861597884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920778843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697604648946515341654897884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606846854154157884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760648645416586159682645754040331432758215639923293134822979853388227876976068264575404033143275821563992329313482297985338822787697600331432758215639923293134822979853388227876976092078615968264575404033143275821563992329313482297985338822787697608545657468456445683475864735454345578435843465543521234582758426345234145323412545864758644535344513453514335543345544865746845244532435544554834736854564848656846846541465465484237469837489327489787589475386586435876348753875983465876349574895627364823546318741827389126487635454655487326487637456325465364536453283274823749832742734874839028492374893748637564389573489758237439748326487653874798493548484512515474846513516848465415151848465415132135487998468451352516548798784513513216548979874865415132135467874845613521564856846848674541546748646541516584748451321654846854151355478468541351654849846541451564864864654165468484654684786467884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928937884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540478843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976046489465153416548978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976068468541541578843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606486454165861596826457540403314327582156399232931348229798533882278769760682645754040331432758215639923293134822979853388227876976003314327582156399232931348229798533882278769760920786159682645754040331432758215639923293134822979853388227876976085456574684564456834758647354543455784358434655435212345827584263452341453234125458647586445353445134535143355433455448657468452445324355445548347368545648486568468465414654654842374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854565746845644568347586473545434557843584346554352123458275842634523414532341254586475864453534451345351433554334554486574684524453243554455483473685456484865684684654146546548423746983748932748978758947538658643587634875387598346587634957489562736482354631874182738912648763545465548732648763745632546536453645328327482374983274273487483902849237489374863756438957348975823743974832648765387479849354848451251547484651351684846541515184846541513213548799846845135251654879878451351321654897987486541513213546787484561352156485684684867454154674864654151658474845132165484685415135547846854135165484984654145156486486465416546848465468478646788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754047884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861597884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920778843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697604648946515341654897884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606846854154157884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760648645416586159682645754040331432758215639923293134822979853388227876976068264575404033143275821563992329313482297985338822787697600331432758215639923293134822979853388227876976092078615968264575404033143275821563992329313482297985338822787697608545657468456445683475864735454345578435843465543521234582758426345234145323412545864758644535344513453514335543345544865746845244532435544554834736854564848656846846541465465484", "expectedOutput": "870649", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}]}, {"name": "STRRCRT", "objective": "Chef has two strings S1 and S2 both made up of alphabets from the word COOKOFF(C,O,K,F). He wants to know whether he can create any permutation of S1 by joining various permutations of S2 together.", "inputFormat": ["The first line contains the number of test cases(T)", "For each testcase, the next 2 lines contain two strings, S1 and S2 respectively"], "outputFormat": ["Output \"YES\" if chef can create any permutation of S1 by joining various permutations of S2 together. Output \"NO\" otherwise"], "constraints": null, "round": 0, "sampleTestInput": ["CFKOCCKFOOKF\nCFOK", "CCOKF\nCOKF"], "sampleTestOutput": ["Yes", "No"], "explanation": ["One of the permutation of S1 (\"COKFKFCOCKOF\") can be made by joining permutations of S2( \"COKF\",\"KFCO\",\"CKOF\") together.", "No permutations of the first string can be made by adding permutations of second string"], "testCases": [{"input": "1\nCKFOCCOFKKOF\nCOKF", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\nCCOKF\nCOKF", "expectedOutput": "No", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\nCCOKF\nCO", "expectedOutput": "No", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\nCFKFOOFOFKCCCCCKOOCKCFFFOFCFKCKKCCOFKOOCKOCCOCFFKCFOCFCCCCKKFOCFOOOFFOFOFOKOOCKKFOOCCOKCOKFOKCFKFCFKKKKCFKOKFCKCKFCOKOOKOCKKOKKCKKKFKOKKKOKOOFOKCFCOCOFFFCFOFOCOFOOOOKCFOOFCFOOFCOKFKFCCOFCKOCCFCOCOCOKFOOOCCCCKCFOCCOCOCOOCCKOFKOCOFCKOFKCFFOFCCFOOFCKKFKKFCFKFKOCOFOCFKOOFOKCOCKFFOKKKOFFCCOFFCCCCKOOKCCKKFKCCOFOOCKFKKFFCFKOFCOCCCKKFOOCKKKFOOFCOFOFOOOFKCOOFKOOKOKFFOKKCCCFOOFCOOOFOKKKOKOFOCCCFOFOCOOCCOOKKFCKFFFFFFFFFOOCKFOFOOFOCKKCKKCOOOOKOKCOCFOCFOOKOCCKFCOKOCCFCFCFOFFFKKFCFCFCKOFFKFFFFKOFKCFKOOFFKCKOOCFFKOKFCCFCCKOFKOOCCFFOCFCOCOFKCKKCCFCFCFFOOFCOFCCOKKFKOOKOFOCFOCOKKKFOOFOCKFFKCKCCCCKKFCOKFKOOOOKFKOFFOCCCKCOOOCFOFKKCKFKFCKFCFFFKKKCFCOOFFCFCCCFFOKFKFCOCKOFCKFOOFFKKOFOOKKKCOFFKFOFFCKOCFCOOCKOCKKKFOCFOCCFOFOCFCKOFKOOOFOOKFFFCOKFKCKFFOKCFOFOKCCKCCFFOKOCFKKCOOKCFOOCCOFKOKOFFFCFOKFKKFKCCKFKFCKKOKOOCOFCCOOFFKFOOOOCCKOKOOOOCCCCOFKOOCCKOFFCFKFKKCKOOOFCOCCKCCKCCOKKCKCCFKCKCCFCFKKOFOKKCCFKOOKOCOOCKKOCOCOCOKKFFCCFKKCCOOOFOKCCCCKKFOKFKOOFKFCOKKKFFKFOOOFCKFKKOFKCKCOKOCFKKFOCFOCOKOOOOOFCOOOOOOOOOFFKKOCKOFCFOOCOCOOCOKOOKFKKCKFKKKKKOOOKKKFFCFFOCFKCKCCFKCFCOKCOCFFCKOOFKKOOOKOCFKKOOKFCKFKOOOCCOFKCOOCFCKKOKCOKOCFKKCCKKCCOOKKCFKKOOCOCOKCKOFCCFKCOCOOFCCFFFFOCFOCOFCFCOOCFKKFKCKFFKFOFFKKCCKOFFFKFFCOFKFFOCKFKKCFFOOOOKCCFKCCOCKCKOFCFOKFFFFCKOFOKKFOFKFKKOKOCKFCCCFCOCOKKFKKKCCKCFFKKKKOOFOCCFOCKOFFOOFFKOKKKFKKFCFFOFCKCKOFOFCOCCFFKFFOOKFFKKKKOFFOKFCKFFCOKKOFCCFCKKOKKOFOKKOOFCCOOKFFCKKOOOOKFFFCOKOKFFOFKFKKKKCOOOOOKKOCCCOOOFFCKKFFOFFOOCOKOOOKFOCCOKOFKFKKKKCFKKCKFKFKOFCCFOOCOCKCOKKCOOOFCCCKOFOFKOFFFKCFKOCOFFOFKFKFOKCFCOCOOCFFFFCCOKFFFKCCFCKCOCCCKCCOOFFOKCCFCKCOFFOFFFOFKFCOFFCKFKCOOKKOOCOFOFCCKFOOCKKFCOOCFOKKFCFFOOFKOCOCOFKFKKFKOOFKFKOFCKFKFOKCOOCCCOCFFOCKCCCKKFFCKKFKKCKCKCKOOOKFOOKKFKKKKKOOFKKKFKFOOCFOCFCOFCCKKOFKKCCKFCKFOCKOOKKKFKOKOFFFKOOKCKKCOOKOCKOOKCFKKOCCCFCOFOOOFFFCFOOOFFFFCKCFCKCKFCKKKKCKCOOCFCCCOOOOKOOKOKOCOFOFKFFKOFOCCFOCCFCFCOOKFCOFCOOFFOFKKKKFFFFFFOKOCKFOCFOFOOFOFFOFFOFOFCKFCFKCOFFOFFKFOFKFCKCCCOOKCFCKCOFKCCFKOFOCOFCCOOFFKFFOFFFKCFOFOCFCFCCFCOCCCKOFFKCKCFCFCCOOKFCCFCOFFFFCFFFCCKFCCCFKKFCOOKCFCKCFOKOOKCKFKFKKOCKFFOCFKCKCKOKKKOCCCCCFCFOKKOOCFOFOFFOCFFOCFFKFKKKOCOFFFCCKOFOFKKOOCCKOKOFOCOFFOFCKFOFOFFKOFKFCFKCKOOCOKOCKCFCCKKCKFKFFKOKFKCFCFKCOFFCKKKKFOFOKCCFCFCCOKKCKCOKCKKKCKCKFOOOCOCFOFKKFCKKFOKOOKOOKFCFCFFCKKOCKKKCFOFCKOCCCFOOFCKCOOCFOOOOFCFKKKOOFFCCFOFKFCOOOOCFFKCOOCOFOOOFOCOFOOKKCFFKCKFOKFFKFFKKKKFFKOOKKCFFOKCCKOCOOCCCKFKKCCFCFFFOCOFKKOFFKKCKOOFKOFCKCCKFKCOOOKFKKOKKCCOKKOFKKOKCCCFOKKCCCKKOFFFOFOCKKFOOOKKCFOKKOKKFCOFCKKOKFKOKOOFKKCOKFCFKCKCCCFCFKOOOKKKOOFOOKKFKOCKOFOKKOKKOCFKCCOFFOKOKKOKOKKKCFKCCFCCFFOKKFCFFOCFCCCOOKOOOFOFCKFCCKKFFOOCOFKCKKOCOOKCFCFKKKKOFOCCCKFFOCOOKCKKFOKFKFKCOKFOFOOFOOOOCKFCKKFFFCOFOCKOKCKKCFKCCOFFKCCFOOKKKCCFKKOFKCCFCFFFKFFOKFKKCFCFCOKOKCFKCKKCKFOCKCCOKKOCFKCCKCKOCCKKOKOCFOOOOOCCFCCFCOOOOOOKOFOKFOKCFCOOCKCOFFOFFFKOOFKOCCOOFOKKOKKCKFOCCFCFCKCCOFFCFFCKCOCFFFOKOOKCKFCKKFKKKKKKKCKFKFKCOCFFCCOFOCKFCFOCKOKKFKKFOOCKCOCFFCOKCOCCOFOFCCKKCKFOFOKFOOKCFOKKKCCFFCCKFKCOKFKOOFKCCOFFKFFFCFFOOFCKFFOCCOOKOCFCKOFOFOCCCCOFCKFOOKCOFCFOOOKKOFFFOOOFKKOFKKKFCCFFOCFFCKFOCOCCFOOOCOKFCOFCCKKCKKOCOFKOKCOOCFKOFCKCOKOFKFOCCCFCFKKFOCKKFCKOKOFKKFCCCCKFOCKKCCCCFFCOCKKFCCCCCOOOFOCCCKFCOKCKOCCFKFFKCKCCKCFKKFOKOKCCKOFKFCKFFFCOCFFKCCCOKKKCFFOCCOFOOCFCOOOFFKCKOFKFCOCOCFKFOOFCFKKFKFFCCFKFOFFFFCOKFKKOCKKOCCKKFOFCCFFCOFCKKCOKCOOFFCOFKCKOOFFOKKFOKFOKFKOKOCCKFFOCKKFCKKKFOOKOOFFCOFOOCKCKCKFFFKOFOOCFOKKKKOCOOCKCKFKKKFCFCKFOKOKCFKOKFOCOFFFKFFKOOFOOKOKKCOOKCFKFFCCFKFFOOOOOOCCKOOFCOKOOCKKOKKFFCKCFKOFKOKOKCOKCKKKOKKCCOOKCCCCFOFOCCFFFFCKKFFOKCKOKOFOKCKOOOFCFFKKKKOCKCCOCCKKFOFOKFOCFOKKFCOOOKCFFKOCFCFKOKCFKKFFKCOCCCOOCFCCFKFCKFKCOCKFKFKCFKFKOKFCOKCCKFFKOFFCKOKOOKFCCCKKOOOKCFOFCFFFKOKOCKKCCCFCKOOKFFOCFKCCKOOKFFKOFFOFKOCFFOCCOFCKFKKCKFKCKCKKOOOFOKCOOFOFCCFCCKOFCFCCKKFOCOOFKKOOCCCKFCFOKCCOCKFCFFKFOFCFOKKCOFKOKOKCKKOFKCOCCFOFOFKOOFKKFCOKKFOOKFOCFKKFOKOCKCKCKOOOKFKFOKFOKFFKKKFCKFFCFFFFCOOCFFFFKCOFFOFOFKOOKKCFKOCOFCFFKCCKCFKOOCKFOFFOFKFCFCCFFCFFOCCKKFOKFKKKCOFCOKCOKCFCKFKKOFKCOFOOKOKFFOKCCCFFOCOCCCOKOFOCOCKCFCKOOOCFOKKFOOCFKFFCFKCOCKKFOCKCCFFFCFOCOCCOOOFCKKFKCCKOKOCKFCKOCOKOCOFKCFCCOOKKCCKCFOOCOCFFCCOFKKFOKOFCOFOOOKFFFKFOFFFOOFCCCCOKCFKKKOOFKFCOCOFOFKFFFCFCCKKKOFCOOOCFCOOKFKCCCCFOKFKCFFFKOOOFKCCKKCCCOKOOCFOKKOOOKKOFFOOOOKOFFFKKOFCCKCFCCCCKCKCOOFKCCKFCFOOFCFFCOCOKCOKFKOCOFFOFCKFKCOCCFCCOOOKKCCFKKFOCFKOCOKOOCFFKFOKKFKCOFFFFCOOOKKKKKCCKOOKFFOOCOKOKOOFCOOOOKOFOCKFKKOCFCOOCCKKKOFOOOKOKOKOCOFKOCOFFOKKCKCCOOFKKOFFFKCCFOOKKKCCOKKKFKOOKFFFOFKFKFOKKCCFFFKKKCFCKFCOOCKOFKCFOCKCOFCOFOKOFCKKKOOFOOOCOCKCFKFFOKOCOFOFFKFFOOFKCKKCOFKFOFFFKFOKOCFKFFCOFCFOKCFFOFCFFCKCCOFCOKOKFOCCKOKFCOCOCCCOOFCOOCFOCKFCKOOCOKFCKOKCFKFOFFKKCKOOFFCKCKCKOCOOFCFKCFFCFFKCCFKOKCFKCKOCFFOFCOCCOFCCOCKCKOKKCFFFFCKKCKKCFFCKOOCKFOKFCFCCCKCCFFOCKKOCOCKCCFOOKCKKOOOCOCOFKCKCCOCOFFCOCKKKFCFCCFOCOCFKCCOOFKFKOKOFOFKKCFKCOCKCOKCOCCOFKCKKOKOFFFOFFCOFCCCFCKKCKCCFOOFFOFOOOFFFKKKFKKOOKOFKKCOCKOOKFKFCCFOOCCKOKOCKFFKOFCKOKCFCOKOCFCKKCCKCOKFOCFOCCKCOKOFOCKCOCKCOFKFKFCCKCFKFOOCOCOFOOFFOOCKCOKOFKOOFOKKFFCOKCFOOKCCKOKOFFCCFFKFCFKOOCCCCCCOCKOFOFFCKOKCOCCOCKKCFKFKKFFCOKKCCKCFFCCKKOFCFOKFFCCOOOCCCOOOFFCFOFKFOKKOOCFOFOOKKKKCKCOOFCFKOKCCCCCCFKCOFFCCFCCOOCCOOOKOCKKFOFKKFFKFOOFKFKKOKFCKKKOOOKCFCCOKKFFOCFFFKFCFCCFKOCKFOKOCFOCFFCFKOFOKOKOKOCFFOCCCCKOFCKOCFFFOFOCOFKFOCOOFOFFCFKOOKCFCKOKKCOKFOCOFOOCOKFCCKCFKFKOOOKCOKFKFFFOCFFOOKFCOOCCKOKKFFCKKFFKKCCFOOKFCFOFOFCOKOOKOOFCKOOCCKFFOCOOCCCKCFCOKOOCCFCOOCOFFOCOCOFKKKOFKCKFKKCOCKOFFOKFFOKOCFCOKKOFCCKOOFFKKFOCCKCKKKKFCKFFFFKKKKCCFFOKCOFOKKKOCCKOCOFOKFCOCFOFOFCKOFOFFKCCCFKOFOKOFKFKOOKKCFCOCOCFCOKFCCKOCCFKOOOCKFFCCFCCOCCKOFKKFKKKKFOOOOOFFCCFFCOFKOKCOFFOOFKKCCCOFCFCOKFCOOOCCFFFFKOOFFKFFCOFOKCOKKOOOKOKOFCCKKOFOFCFFFCOKOKOKCCCKCCFCKCOCCCFCFFFOFFOKCCOKFFOCKCKKCOCCKOOKFKOOOKCOKKKKOKOOOFFCCFCFKKCCOFOCOCFOCKKKOOFFOCFOKFOFCKFCOFKKKFKKOKKFFCFCKOKKKFFOOCKOOFKOOFOFKFKKCKFOKOKKFFCKOCKFKKKFKCKFOKKOKFOOCCOOOCOOCFKKKKOCCCCKKOOKCCFCOKKOCFCOCFKKCFFKOFKKCOFFFCCOFOCFKCCKKCCCCCKOKCFCOFFOCKKCOCFFOFCOFFKCKKKCFOFCFCKKOCCFFCOKOCFCOOKKCKOKOKFOKCCCFFOOKKCOKCCCKKFKOKOOCOCOOOKFKCKOKFKFCFFKFKOCKFOCKKFKCCKCCKOOCFOFOKCOFFKCOFCCKFCCCCOCFCFKFCFOOKKOCOOKOKFOFCFKFOKKOOCOKCFOCOCCKOCFFCKOKFCFCKFOCFCFKFOFKKKOOOOFCKFCOKFKCKCCOOCKCCKCCCOKFKKOFOOFOKOFFFOFFCCCFFCFCCCKKCKFCOFFCKFKKKFCFFCKFOFOFCCOOCKOFOCCKOKFCCFCCOOKCFCFFKOOKFCCCCFFOCKOKKCCKFCKCOFOFKOOKOFCCOKKFOOCKCFCCKOFKFFOFOCKOCKFKFFKOKKCFOOFFCOOOFCFKFKCCCKKFFKFFCKCKCFFKCFOOCFOCKOFOFCFOKFOCOCCOFCFOKOKKFFCKKCOOOCCFKKFOOFKOCCKCKKKOOFFOFCFKCOKCKCCCFKFKKOKCFKKFFFKKCOOFOFKKOKOCOOCFCCKFKCOFOKCKFFKOOCOOCOFOFOCCOKCFCCKFFCFKKKOOOCKOCCKKKFFCKFOCCKCOOKFCCCOFOCCCFCFOCOKOFOKOOOOKCKOFCFFKKOKKKOFCOKCOCKCKKOFKOOOOOFKCOCKCFCFKKCCFKKOKCOKOFKFCFKFOFKCKKCFFCCFFCFKCCFKFKCKOOFKCFFFCKFCCCCOCKKFOOCCFKOOCKKKFOFOCFFKOFKOCOFFKFCCOCOOKFKKOKCCKFKOKOFKOOFCOKOKFFKOFKOCKOFCKFFOKKOCOKCFCCCFFCCFFFKCFFOKCFKCFFKFFCFOCOCCCKCFFCFOKCFCCOOKFCKKKKCFOKKCCKFCOKCKKCOOOFFFCOFCKOOCFOOFCKKKOOCKFCFOCKKFFOKKOCCOFOFFKFCFCFOKKFFKKFFOKOFCFFFKCCFCOOCCCFOOOFCOCKOFCOKOFKOFCOCKFOFOOOCOOOCKFFFOOKOCCCCCFOOCFOCKCFOOCFFCOFFOKFKKCOFOFFOFOKOOOCKFOOFFFKKOCKKCKCFKCKKFOOKOKCCCKOCKCFOKOCOKCOCOKCFCKOOOFKKCKOCFKOCCKKFKKFFFFKFCFCKKCFFFKCKFOFKCOCOFCCCOCCOKKOOCCFOCFKCFFCCCCCOOCFFKCKKOCKFCOOCKOCFKCCOKCOCKFOKKOCOCFCCOFOOKOCCOKOOCOCKKFOFCKOOOCOCOKOFCCFOFCOCKCCKKCCOKOCFCCKFCOFKCOOCFCKFFOKOFCOKOKOKKKOKOFFKOCOOFKFOCOFFFFFFCFOFFCOFOKCCFOCCKOCCCKKFKFFKKKCFFKFKFFKKOOCFOOKCKFFKKFFFFFFKCCFKKOCKCCKOKOFKFOKCCFFCCCKCCOFOFOFKKKFKKCCKCFCCOKCCFCFFOFKKCCCKKKOFFOFFKFOKKOKCCOFKCCFKKOOCOCOOOFFKFFFCKKOFFCOCKKKCCCCFFFKCFCCFCCFFOKOKOOKKKCFFCFCKOCKKKOFOCOKOOFKFOKOKFCOCCOCOKKOCKFKOOFOCCOCFKOFCKKFKKKOKFCOKOOOOKFCFCCOKKFCFKKOOFKCKKFFOCCKFFKCKCCCKFFCOKOCFCKOKCOCKKCKOOOCFCCOOFFCFKCFFFCFKOFCCOOKOOFCKKOCCFOOCKKOCFKCFOCOKKKFCKOFOCFCCKOKKFCKCCOKFOFCFKFCOCKFFOOCKFFCOFKOFKOOCFFOOOOOOOFKCFCCCOOOFCFCKFKKOFCFCCOKOCOOOOFKFKFKFOKOFFKCFFCKKKKFFCKKOCKCFFFCKOKFCOFCOFOFOFCKOOFCKFKFOFKOOFFFKFOKCFOKOFKCOOOKCCKCFKFFKFKOOOCKCCFKFFCCCCKKOCCFCKCFKCOOCOKFFOCKKOFCOKKOFCKFCOKFOOOKOCCCCOCCFCKKFOOFCCKFFCKFCKKFOOOFFCCKOKOOFOFFFFFOFCKCKKOCOCOFCKKCKKCFOFFOCFFFKCOFOKFOCCKOCOKOFOKFKFOCKCFCKKFFCFOCCKCKCKFCCFKCCOKFCFCCFOOFFOCFKCKKFFOOCFCKKFOKFKCOFCCFCKCFFFFOFCCCOKKFOOKOFOKFOKKCFOFOFOFKKOFFKKOCFOCKOOFKOOKFCKCCKCCCFKCCCKCFFFFOOKKOCFCOFCKOKKCKKKOFKKKCKFKKFCKKCCFKOKFCOFKOCKCOFCOOKKCKKCKKOCKKFFCOKKKFCFFKOKCKCCCOKFCOKCKKKFOKKKKOKOCCKCKOFCFCCKCFOCFFFKFKCKFCKKOKKKFKKKCOKFOFKFKKOOKFKCFKKOKCOCKFFKOFKKCCKOCCFFCOKOOOOCFKKFKKCCFCOKCKKOCCKCCFCKCOCKKKFCFCCCFKKCOOKFOOFOFOKKFOCFCKKKFFKOOFKCOOFOKCCFOCFOFFKFKFKFKKKCOFKKOKKFCOFOOCCOKFOFCKCOFKFCOCOKKOFOKCOOOKOFFFKFFKOKOCCFFFOFKCFFCKFFCFKCOKFCKFOOCKFOOOOCCCFOKKCCFOCOOKKKOCKKFFKCOKKFOKOKOCFCFCFCKFOKOKFOOFOCFOKOCFOCFKFKFOOCFCKKKCCFCKFKKFCKKOOOOFCFOFCFFFCOKFKFOFKFCFOOCFCCKKFFOCOCOOFCCKOCFFFKOFOKOFCOKFKKCFKCFCOFOCKFCCCKKFKFCOFOOOFCFCKKOFCCOOOFKCKKKKFOCOCFOCCFFOFFCFKCKKFKOCKCFKFOFKOFCOCCFOCFKFCFOCFCFKFKOOFFOCCKCOFOFKKOOFFCCOCOFOCFCCKFFOFOCOOFOKFOOKKCOFFFKFKCKOOFCCKFOFKCFOKKCFKOOCFCKFCFCKCCFFOCCKFCCCCCCFCCFFKCCCFOKOKOFFFCOOKCOOFOFCFCOFFFOOFOKCCKKKCCOOKKKOFOFOOOKKKCKCCOFOFFKKCKFOFFOOKOOFOCOFOCCOOFOOFCOCOOKFFFOKFKCKOCKKOCKCKFOKCOOCFKOKFKKKOOKFCCCCOFKOCOCKOCOOCKCOOCKKOOOCCOCCOFOOOKFOOKFKOFCOOCCKCKOFFCKFOFCKKKKOFOOCKOCKOOCKFKOCFFKCKCOCCFFKFCKCFCCKFFFCCOFKCOOCFCCOCKOKOFCOOOCKKCFKOCOFCOOOKKFFOFFKKOFOKKCKOFCFKOKKKOFCKFCOOFFKKKKKCCKFCFFKKKOOKCCFOCOKCFCCKFOKCKCOFOKKFOKKFKFFOOFFKOKOKFFOCFCKOFOOFOCFCFCOOCKFCKCCKCCOCCCFCKOKCCCFCKKFKOOFFKCKCCOFKKFFCCOKOCFKFCFKFOOKOOCOOFFOCCCCCFCFCOOKFKFOOCFCCCCKOOFKKFCOKCKKOOCOOOCOFFCFKFFOOCCKCKOKOKFOCFOKCFFKFCOOCKKKOKFOKOOCKKFCOFKCFKCOFOFFOOCKFFKFFKFKFCFFFOFFCOOCCFOFOCOCOOFFFCKOCOKFOCFKCCFOKCCOCCKOOOCCFFOOOKKFKCFFFCKFCFOCOFKFCFFOKOFCCKFFKOFOKKOOFKFFOCCCFFKCKFCKCKKKCFFFOFKFOFCKCKFOOCFKCOOFOCCKOKKFKFOCOCFCCCFOKKCOCKFCCKCFCFCFOCKCKOFKFFKCCCCCKOKOFKCFCOCOOFOCFKKFFCCKOKFOOFFFFFOKFOKCKCFKCFCOKFOOOFFCCCCCOCOFCFFKKFKKKOKOFKCOKCCOOKKOOKFKKOCFCKCOOFKCCKKOFKCFCKCCCCCOFCOCCOFFFFKKFKCFCKCKKKOCCOKKCKKOCFCFOOOKOFKCFOCCFOFFCOKCKCKCOKOCCCCCCCFFFKOOCKFFFFCOOOCKFCFFKKCFKCCKOOOCKFKCCOFFOKCOKFOCFKFCOCCKKOOOFOKOCOKFCCKFOKOKFKCCFOFCFFCCFFOOKOOCOCFOFOCCCFFKOCKKKCFKKCFOCFOKCCCKFKFOKKFFFOKOOOKCCKCKOOOFKCKOOFKKCFCCCKKFFCCKKOKKFOKOCOKFOFFOCKFCCCCFCOFFFKKFKOKKOFCCKKCFOKCFCOCCKFCCCKOCKOKOFCOFKOKCCKFFCCFKOCOFOOOCCFKCKOFFFFKFKFFOCCCCFOFFCCFKCOCOFFFCKFCCOCCKKCFFOFKCKKKFCOKOCCFCKCKFOOFOOKOFOFOCFKOKFFOCFFFKCOKFCFCKFFOCKF\nCKOF", "expectedOutput": "Yes", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\nCCFFFOKKOKFCKCOKKFCCOCOOKCKKFOKKFKFFCOFOFKFOFFCKOFOFOOFFKFCCCKFOFCFCCCKKKKCOFOKCKCCOOFKCKCKOCOOKKCCKCKCCFFOOFCKFOCOOKCOFFFOFOOOCKOCCOFOCFKFOOOCCFFFCKCOFKKKFCFFKCFOCFOCKCOOKFOKCKKKOFCFOOKKFFFKOFOOCKKOFKOKKFFCOCCKFFCKKFKCCFOOKOCOOOOOCCCKOFKOKOFCOCCKFCKCFFFFOOOKKKCFOCOKOOFOCOFOFKKOKCKCKFCFFCKFCCCOKFOOOOOCFOFOFCOFCOOFFKFFOKKOFFFFCCCCOFOCFCKKFOFKKKKOCOOOKFOKFKOFOKKKOKKFOOKKFOOKCCKCFCFKFCKFCCFFCCFKFOCCOOKFKOFCFFKCOOCKOOFOFFFFKFKCOKKCKOCCFCFFKFCFCFFKKKFOKKFCKKKKCOCOFFCOCOCCKCCKCOCCCCCOKKFFOFOCFCFFCFOCOCKOCKFCKCCFCCKFKCKKFCOKCFOKCFCCOCKOCOCKOOCFOFOCKCKKCFOOOCKCCFKKFCKOFFOCOCFKFCCOOCOOKFFCFCFKKKCOKCKOOCCOCOKFCKFFKKOFKFFFOCCFOOKFOCCOKFKKCCCCOKFCCKOKKCCKOOKOKFCFOKOFFOCKCKKCCKFKOKOOKCCFOKKKFFOFKFOKKCFOFFKOCCCCCKFOFOCFFCOCOFKCOKFOFCFCFCCKOKOFKCFKOOCCFCCFOFKOFOKCKOOOFKOKKOOFCOCFFKKCOOKCOCKFOFCOOKKOKOKKOOCCKFOOFFCFKOFCFFKKCCOKKFKFCOKCFCFOOCOCFCKKFFOFFFCKFOCOFCCFKCOOOKCOKKKOFOCFFOFKKOKKFKOFCOOCFFKOCFKFFCOFKCKOCFKCKFCFOKCKKCFCCKOCKFCFOOCFCOFFOCKOKKOKFOKKKOOKFFKKOF\nCOFOOOKKCFCOOCCCKOKCOOKFOKCOOOCCKCCOFCKKFOOCKCKCOOCKOOOKOFFKFCFKOFOOCFFOOOKCOOFFFKOCCKOCKCKKOOFKKKKOFKFKKOKOOCKOFOKCCOOKCOCOOCOCFFOCOFFFOOOFOCOCKKKOCFFOCOFFKCOCCFCKOCFFOFKKKFOFOCCFKOCKKFCFFKCKCFKKOCKKOKCCKFKFFKFFCKOOKKKKKKKOKFKCCCFKOFOCOFKCFCKCCFOCFFFCKOOKFOKFKFFFCFKKFFCKCFKCKOOOFCKKFFCFCCOFOFFCCFOKFCCFFCFFOFFFFFCCFCKCCCFKOKFCOCOKKCCKCKKOFOCF", "expectedOutput": "No", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "ORDER", "objective": "Chef 1 and 2 work in a restaurant together. They both have decided to take part in the CookOff 7.0. Before they can leave, they need to finish K pending orders. Each order has N items which takes different amount of times(T1,T2....Tn) to prepare. Both of them decide to split each order in such a way that the difference between each other's time is minimised. Only after one of them is done with their share of the work, they can move to the next order. This way, both of them try to get the work done as close together as possible. Help them in splitting their works accordingly", "inputFormat": ["-Line 1 contains number of testcases, T -For each testcase, Line 1 contains two integer K, N representing the number of orders and number of items in each order -Next K lines contain N space separated integers representing the preparation time for each item"], "outputFormat": ["Output an integer, Tmin representing the minimum time difference between when both of them finish their work"], "constraints": ["1"], "round": 1, "sampleTestInput": ["1\n2 2\n1 2\n3 4", "1\n3 3\n1 2 3\n4 2 6\n7 6 14"], "samepleTestOutput": ["0", "1"], "explanation": ["Chef 1 can take order (0,0) and (1,1) and finish his work in 5 mins. Similarly Chef 2 can take order (0,1) and (1,0) and finish the work in 5 mins as well. Hence the difference is 5 - 5 = 0", "Chef 1 can take order (0,0), (0,1), (1.0), (1,1), (2,0) and (2,1) and finish his work in 22 mins. Similarly Chef 2 can take order (0,2), (1,2) and (2,2) and finish the work in 23 mins. Hence the difference is 23 - 22 = 1"], "testCases": [{"input": "1\n2 4\n4 2 4 5\n5 2 6 1", "expectedOutput": "1", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n3 3\n4 2 4\n2 4 3\n2 4 1", "expectedOutput": "0", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n7 7\n1 3 2 5 4 6 3\n2 7 4 9 3 8 6\n13 23 1 5 33 6 7\n2 6 2 6 3 11 5\n6 4 3 5 3 25 5\n6 43 5 3 5 3 5\n3 5 3 5 3 5 7", "expectedOutput": "12", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10 10\n785 138 177 439 591 955 950 30 220 236\n421 914 56 311 357 931 512 529 818 896\n422 913 191 232 586 979 243 163 916 201\n974 511 64 287 624 948 822 839 551 855\n576 251 712 594 734 891 318 410 67 54\n868 95 42 288 862 709 558 297 119 395\n331 316 341 237 831 995 713 334 91 312\n646 339 763 726 477 665 378 952 372 733\n389 600 504 515 982 789 852 990 698 524\n852 238 286 454 802 565 216 477 14 585", "expectedOutput": "1", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n20 20\n269 950 540 688 782 907 920 206 503 405 318 383 833 251 266 479 117 827 509 630\n224 212 159 380 703 777 152 840 320 48 375 323 287 776 364 927 641 628 63 542\n67 533 940 507 39 104 994 216 607 388 642 686 574 262 804 582 856 764 707 15\n627 906 720 41 686 549 177 806 493 597 866 490 674 479 47 879 742 91 338 764\n148 576 784 823 415 726 653 971 512 46 613 95 374 657 392 133 770 739 399 274\n120 3 464 756 244 145 504 735 131 188 603 870 925 323 338 160 554 885 431 455\n978 803 60 675 94 624 387 166 833 704 171 694 312 639 36 486 770 377 761 495\n333 590 528 842 643 439 931 59 527 606 694 239 207 149 446 790 12 37 825 963\n362 678 553 226 551 953 360 800 142 891 633 445 707 952 403 976 390 243 890 441\n777 557 568 288 406 716 237 911 675 571 246 23 153 9 531 273 434 640 174 951\n830 321 324 250 706 711 988 961 82 561 318 527 655 214 578 794 925 867 987 659\n882 735 325 879 235 667 644 161 685 576 529 324 640 973 986 756 976 231 607 609\n782 893 678 893 988 3 808 283 414 395 766 846 297 828 190 632 549 630 620 343\n66 865 642 267 660 97 757 668 421 186 689 441 954 124 132 553 332 413 464 315\n493 821 657 661 672 112 29 136 838 77 426 126 620 302 119 197 150 347 348 817\n286 511 110 872 807 432 287 122 816 232 786 39 522 254 32 142 601 710 619 550\n21 757 250 92 491 684 982 888 131 608 883 579 496 209 592 38 379 629 308 374\n258 651 329 209 214 700 528 177 300 211 772 982 228 169 979 742 693 70 682 498\n462 424 102 794 986 839 102 342 966 248 915 343 787 681 121 324 916 712 610 602\n547 775 18 418 143 943 138 781 345 84 990 86 122 33 49 258 644 809 217 765", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n30 30\n87 51 66 33 38 64 22 97 36 65 47 68 97 5 28 29 94 89 87 81 33 28 69 43 43 58 2 23 44 57\n77 52 82 78 72 81 68 67 21 91 62 66 41 1 53 58 95 21 76 57 86 20 67 73 47 42 27 24 72 98\n72 48 77 53 16 47 50 29 47 30 58 77 23 58 12 23 31 97 49 72 90 19 32 42 74 14 99 68 79 57\n25 66 38 26 42 83 91 15 28 39 76 98 21 62 8 43 2 89 81 9 10 42 74 10 40 34 38 50 54 79\n26 9 4 65 55 75 31 36 47 22 42 3 34 62 39 17 1 50 1 8 3 71 88 44 12 29 21 83 90 84\n69 79 53 57 38 52 84 70 80 65 77 28 99 92 39 89 93 38 18 58 95 12 51 57 15 10 7 16 77 48\n95 93 85 70 16 39 82 31 45 77 37 34 13 57 13 72 48 70 56 18 4 3 11 79 89 38 48 85 1 4\n32 55 54 21 2 10 64 45 63 39 38 16 51 100 57 40 95 6 49 58 34 1 69 99 32 22 56 85 18 50\n20 28 11 7 64 33 17 56 72 31 22 1 3 90 80 19 87 43 79 11 16 38 43 89 27 29 90 91 4 1\n35 38 92 20 73 89 31 49 95 60 8 83 6 6 29 12 32 65 43 99 99 22 28 26 71 19 47 98 48 92\n33 65 75 1 7 49 34 24 33 72 2 61 75 23 21 76 27 65 71 7 72 65 42 56 44 100 13 44 58 60\n10 33 28 49 89 61 67 9 80 55 19 57 28 53 70 40 46 97 98 64 50 62 21 57 13 98 59 14 18 49\n2 17 86 62 10 74 93 72 51 68 87 21 57 28 78 1 27 45 67 24 93 87 89 9 43 68 39 75 13 100\n3 71 94 84 9 2 4 82 23 9 10 58 66 65 50 77 28 29 80 12 87 13 20 48 74 73 21 18 27 31\n99 19 86 17 9 96 96 14 83 62 53 46 10 56 100 94 19 55 3 67 3 27 22 82 61 94 64 98 12 2\n37 21 100 38 96 19 14 2 34 42 29 8 62 81 24 20 26 3 74 48 82 2 21 96 30 94 6 34 69 49\n35 85 30 44 93 67 99 4 65 46 83 3 84 43 92 31 63 17 23 15 30 15 15 65 81 91 92 47 55 12\n50 68 44 18 56 61 43 77 44 74 81 23 13 28 18 48 61 25 11 11 66 28 20 84 72 86 40 44 43 65\n76 50 74 18 46 57 76 1 29 43 45 48 60 76 81 95 55 12 62 44 20 94 30 35 32 76 32 57 8 19\n68 67 32 39 82 57 43 34 97 6 78 59 93 86 48 55 1 63 87 59 2 78 81 62 8 73 68 35 36 57\n6 84 39 80 86 13 10 19 99 36 53 79 60 39 95 86 52 90 100 3 52 89 4 87 17 50 78 66 21 78\n41 18 89 34 13 100 40 81 80 91 85 63 80 13 100 81 81 70 87 98 97 31 97 75 38 39 27 97 48 71\n13 1 74 74 65 31 26 41 78 76 56 95 95 13 99 55 92 82 55 9 32 2 20 97 96 4 99 6 3 73\n79 78 80 52 37 27 42 68 2 24 12 77 72 93 39 55 96 45 75 28 93 5 74 11 54 2 78 60 16 9\n3 62 87 29 8 77 34 30 25 60 66 86 30 6 45 17 21 95 63 5 11 26 95 74 29 5 20 96 31 78\n63 3 30 77 41 80 90 98 29 19 1 19 60 56 97 20 31 1 50 13 44 50 53 55 31 35 92 45 30 5\n83 28 47 51 16 9 41 60 98 41 66 6 27 8 43 63 41 96 25 15 95 92 85 58 55 27 27 18 36 59\n89 2 73 12 65 50 18 30 47 17 24 12 67 79 34 79 11 67 16 28 66 91 60 6 47 57 25 25 55 12\n13 18 61 31 79 17 82 47 36 64 51 98 20 39 46 98 77 30 67 88 53 95 29 16 59 68 61 48 41 72\n70 24 57 10 11 75 87 52 42 85 80 59 81 34 39 24 65 95 27 22 25 46 55 72 11 89 21 94 78 70", "expectedOutput": "0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n50 50\n100 92 89 100 58 62 1 49 68 23 41 70 88 95 86 26 81 62 97 35 52 28 72 19 28 36 64 23 68 72 38 23 53 98 90 26 20 14 6 48 70 55 58 62 80 34 87 84 41 7\n4 62 89 98 37 38 39 78 74 90 44 81 5 36 47 4 13 21 16 63 31 11 22 20 39 28 10 25 6 2 78 83 81 8 59 5 51 51 8 80 28 44 95 40 10 33 79 17 90 92\n45 23 2 96 75 17 54 3 18 2 7 93 61 72 93 71 98 48 12 44 61 99 74 14 7 22 9 60 96 98 89 77 99 28 76 87 28 47 3 25 55 67 58 63 79 16 58 72 57 58\n88 46 44 19 55 89 77 29 45 7 84 56 56 26 55 100 55 72 95 57 42 6 11 22 2 95 60 26 17 91 62 100 65 17 70 76 9 6 7 19 57 18 95 58 39 8 90 3 98 32\n54 6 100 46 1 48 14 18 24 66 11 36 97 11 26 50 95 63 29 17 39 95 28 87 88 54 15 82 84 38 25 98 8 90 24 27 85 32 58 49 53 17 73 91 28 91 9 45 55 63\n7 61 25 21 96 13 33 28 20 99 99 40 92 79 33 70 70 97 34 77 21 21 26 46 8 71 54 48 95 84 66 72 74 96 78 2 80 73 64 15 20 5 25 49 80 16 98 49 68 64\n97 99 82 78 3 28 36 9 94 63 33 94 18 46 17 43 48 86 49 70 88 48 31 90 15 100 30 7 80 30 35 28 30 92 89 74 6 93 20 14 13 22 12 63 92 49 37 31 77 3\n20 84 42 96 23 77 62 26 73 34 94 7 94 37 26 4 46 69 71 58 54 80 50 49 97 2 7 49 70 19 23 18 78 72 3 28 49 72 37 63 2 45 66 74 88 31 71 39 6 99\n28 64 60 14 11 93 16 75 8 6 85 79 41 71 28 8 45 73 44 100 63 69 2 53 31 43 76 65 82 77 94 34 51 82 74 16 31 96 42 8 18 36 70 36 46 52 81 48 99 80\n13 75 37 90 89 4 55 97 66 98 42 61 78 49 55 56 91 12 33 36 75 81 4 94 49 65 21 19 64 24 20 53 49 44 11 19 5 43 39 46 32 59 66 35 94 15 82 4 49 61\n39 68 37 45 99 65 72 40 48 55 48 50 42 42 90 5 62 8 4 84 61 90 57 69 3 56 27 76 47 59 9 12 61 4 46 73 1 73 4 71 29 13 78 35 88 81 34 47 34 13\n41 28 56 46 47 12 89 92 73 3 53 44 12 60 33 70 64 66 62 88 51 30 60 64 37 64 18 50 53 63 48 42 67 79 17 79 97 40 5 70 22 31 33 7 53 85 47 20 62 63\n94 52 73 62 96 42 35 57 53 54 9 42 56 80 89 74 37 96 19 77 11 80 93 23 65 97 38 45 95 69 45 31 42 83 67 7 82 2 43 60 66 44 70 47 88 87 89 44 46 33\n65 69 52 34 79 16 89 54 91 65 100 26 87 99 26 35 19 89 15 32 43 100 95 2 20 24 97 97 98 77 7 28 24 12 33 46 37 24 89 29 97 39 66 26 17 43 95 18 9 11\n72 61 8 84 99 22 77 36 16 91 33 20 25 54 17 9 9 74 83 19 57 42 87 41 72 67 30 12 21 31 44 56 62 94 82 76 13 17 81 7 50 67 59 26 42 6 62 89 43 16\n56 27 89 34 27 25 11 22 24 54 18 77 7 100 11 16 62 14 41 74 23 25 99 46 12 37 28 92 69 71 53 76 77 8 75 78 53 97 96 85 79 50 84 76 28 45 12 93 8 38\n77 87 67 50 46 77 66 56 4 90 50 23 94 15 62 56 96 12 15 98 35 70 12 13 56 47 55 57 58 68 91 84 67 76 73 79 89 95 63 34 10 12 7 3 89 22 10 24 32 56\n37 25 70 18 2 15 65 90 90 9 72 73 43 16 81 57 97 7 95 94 62 77 75 38 97 68 11 41 88 50 94 77 16 84 24 30 18 32 28 65 59 10 22 12 81 83 19 29 77 35\n82 3 33 69 15 16 18 81 36 93 15 99 70 4 62 10 39 47 13 61 6 3 99 16 88 11 45 74 39 48 75 62 22 13 69 96 66 78 87 14 2 41 86 38 97 7 61 55 94 51\n75 74 78 23 94 94 83 100 45 90 100 8 33 91 15 97 68 52 64 76 3 51 83 21 31 21 21 53 86 18 74 43 33 88 82 13 98 99 95 10 3 40 45 29 24 4 75 19 41 21\n9 61 69 46 74 9 29 84 82 50 33 17 24 63 12 14 69 24 43 72 54 66 71 64 75 88 27 8 39 96 3 4 37 57 31 73 27 23 78 18 92 6 88 7 74 82 89 10 73 36\n64 94 27 55 73 5 56 33 1 34 41 85 63 3 59 64 5 55 44 43 10 79 14 88 95 64 14 90 12 21 96 48 26 28 57 4 43 39 14 76 58 8 62 44 59 19 88 42 32 51\n59 15 8 14 33 31 48 22 42 40 5 87 80 30 82 54 55 4 33 87 7 9 7 2 17 79 54 19 4 30 14 52 98 94 71 76 63 40 75 6 55 81 49 26 95 35 31 22 50 53\n54 75 72 39 74 53 33 1 21 65 5 59 44 87 60 68 98 37 95 53 35 20 83 95 94 26 20 87 54 94 11 83 64 24 47 53 87 20 92 2 38 37 19 46 10 7 90 78 99 96\n15 24 95 75 21 65 82 84 85 99 10 69 5 53 93 85 89 32 3 55 42 73 86 40 56 100 72 69 34 89 89 8 48 64 33 37 19 47 4 6 74 84 24 50 49 7 16 50 51 31\n35 67 41 96 71 76 21 97 83 19 53 36 20 14 33 47 95 1 6 70 52 87 40 95 48 81 90 63 88 31 90 24 46 35 23 24 95 16 77 15 55 85 81 81 68 88 91 10 13 56\n61 94 26 83 58 27 36 83 63 59 55 78 80 87 69 29 8 2 37 16 46 11 12 98 74 64 50 29 65 3 74 7 61 100 11 49 57 44 70 98 38 58 23 90 24 99 17 29 75 97\n6 53 83 47 58 59 88 92 21 93 66 37 38 99 61 22 71 19 92 59 25 25 12 94 58 25 5 39 63 93 86 85 17 14 11 72 5 20 17 99 7 4 58 31 25 27 50 33 79 97\n76 44 13 12 13 94 26 87 88 77 19 16 3 18 50 12 49 39 10 5 24 2 44 96 79 24 29 13 40 43 5 88 57 19 98 62 35 35 95 90 20 98 93 32 8 79 96 91 70 63\n97 85 1 47 78 71 95 72 91 88 39 44 26 21 40 61 42 49 60 33 81 35 30 81 3 79 32 24 50 46 5 29 89 58 76 54 7 16 75 79 95 57 98 100 50 25 37 26 39 92\n28 8 63 76 24 60 89 95 40 9 3 59 41 96 76 93 63 50 13 27 90 55 77 43 88 73 77 69 92 36 89 3 17 89 37 12 54 25 95 93 30 53 38 77 41 7 73 15 36 43\n38 31 40 51 53 1 18 97 33 49 5 76 69 1 21 35 39 40 49 52 15 54 41 69 22 82 74 99 25 43 93 18 36 62 72 86 90 18 13 36 23 76 86 45 38 97 84 3 82 62\n71 78 45 47 56 25 62 54 17 53 45 29 65 22 66 44 26 20 30 64 27 74 58 56 62 75 52 47 49 89 81 27 1 6 75 33 21 76 41 83 61 80 41 12 52 4 77 30 54 98\n93 40 74 87 82 90 81 86 18 51 32 48 9 24 44 31 62 15 15 13 18 54 6 21 37 82 60 89 14 77 58 78 57 35 44 37 64 39 2 61 74 62 78 75 93 6 18 48 53 26\n34 62 12 34 75 61 9 75 74 33 78 79 62 33 10 67 58 21 39 85 15 3 52 20 90 56 60 64 81 49 96 75 74 49 85 42 31 48 99 97 18 37 81 73 96 34 44 67 32 64\n78 66 36 80 14 53 73 87 27 62 25 92 98 40 64 6 9 89 64 8 96 28 86 76 46 94 93 90 94 39 29 57 12 59 78 86 40 22 93 19 99 59 42 18 46 2 9 35 8 86\n5 14 75 2 49 38 88 78 18 42 67 21 32 26 8 99 45 62 77 64 5 97 80 65 45 44 38 57 22 37 60 10 97 29 10 65 89 90 9 44 14 94 6 50 65 3 67 1 40 68\n5 74 92 90 5 76 30 63 27 74 69 47 82 52 53 23 38 22 34 31 63 72 77 92 24 46 55 17 23 1 26 1 45 52 22 31 59 68 49 78 28 33 47 28 73 93 1 10 15 79\n50 63 5 43 16 3 57 21 49 22 71 28 80 68 100 72 13 23 84 20 89 67 51 42 100 4 4 92 11 68 21 89 53 72 77 73 13 23 23 36 33 80 74 69 51 48 27 46 33 40\n46 23 7 24 99 39 57 95 32 13 10 88 96 68 27 38 52 98 56 60 47 75 23 35 57 90 86 94 47 15 39 95 69 2 68 19 72 30 82 60 37 83 43 66 32 33 88 62 82 14\n56 39 91 99 28 36 96 74 91 96 19 53 46 49 32 59 86 94 21 57 13 19 8 77 49 53 93 18 44 89 34 29 19 15 49 65 40 95 34 67 71 23 58 31 23 62 20 46 80 8\n14 88 25 36 31 57 21 55 27 69 44 28 84 61 18 90 17 49 64 28 82 55 24 85 88 6 75 19 97 76 5 97 86 71 81 90 70 48 21 96 10 45 34 77 39 42 89 87 66 9\n33 100 18 9 66 41 24 15 65 89 92 20 13 46 25 57 50 41 75 19 96 98 84 76 96 77 16 84 38 55 94 80 59 39 48 54 18 17 40 43 18 28 16 86 31 43 3 98 2 54\n83 48 73 46 7 40 98 21 75 3 66 48 20 87 63 19 56 19 55 93 79 3 12 78 3 81 10 69 69 11 43 71 82 28 70 59 63 75 37 14 96 34 96 60 49 78 39 35 59 9\n78 72 92 9 36 57 9 57 65 50 46 6 7 20 31 21 89 5 75 68 57 45 72 44 34 77 62 47 98 59 86 36 61 56 56 39 92 72 87 39 15 49 56 9 75 46 61 68 2 69\n25 79 39 33 76 42 39 28 24 10 99 43 51 98 18 56 91 54 100 29 77 50 50 58 63 90 52 94 13 92 84 81 27 8 38 84 5 52 15 63 13 100 7 25 92 43 43 26 11 66\n64 79 98 61 65 38 62 19 2 39 92 34 65 12 62 59 2 62 87 51 97 43 35 48 46 23 81 18 100 54 39 66 23 42 5 22 61 36 45 45 69 50 75 55 65 58 3 68 16 16\n38 94 65 61 84 26 74 86 7 1 12 30 8 88 18 5 58 53 63 52 77 69 79 58 51 93 65 92 8 40 89 68 63 38 92 85 44 55 54 49 93 81 47 56 4 83 77 11 80 92\n31 74 51 65 90 99 95 69 57 95 43 27 30 52 85 82 45 80 35 15 86 90 49 74 14 19 39 23 74 17 96 95 76 90 21 50 9 1 29 21 66 4 88 27 78 12 51 60 1 13\n76 63 47 25 67 15 5 91 93 7 19 44 6250 13 4 45 90 96 84 37 84 11 31 48 99 10 17 7 15 100 18 63 42 74 17 27 57 19 99 62 45 26 70 89 67 99 47 25 95 13", "expectedOutput": "3830", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}]}, {"name": "SWTSLLR", "objective": "Chef knows how to prepare two types of sweets S1 and S2. Chef has machines which make N1 amount of S1 and N2 amount of S2 respectively. In order to finish a batch,he needs equal amount of S1 and S2. Let K1 be the minimum amount of sweet required for each type to complete a batch. Also, he needs to order boxes such that he can pack N1 amount of S1 and N2 amount of S2 in same boxes without wasting any space. Let the maximum size of the box required be K2.\nIn order to maximise his profits, he follows the following formula\nN1\u00b3+N2K1K2+N1\u00b3N2\u00b2(1/K1\u00b2+1/K2\u00b2)=NN1\nGiven an input, N , find the number of pairs 1 <= N1,N2 <= N that satisfies the above equation", "inputFormat": ["-Line 1 contains an integer, T denoting the number of testcases -For each testcase, Line 1 contains an integer, N as per the given formula"], "outputFormat": ["Output an integer, A representing the amount of such possible pairs"], "constraints": ["1 < N < 10^9"], "round": 2, "sampleTestInput": ["1\n3", "1\n50"], "sampleTestOutput": ["0", "2"], "explanation": ["No such possible pairs exist", "2 such pairs exists- (2,3) and (3,2)"], "testCases": [{"input": "1\n4", "expectedOutput": "1", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10", "expectedOutput": "2", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n20", "expectedOutput": "2", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n100000000", "expectedOutput": "3", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2367737347", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2452324", "expectedOutput": "0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2452324453", "expectedOutput": "0", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}]}, {"name": "TGHTROPE", "objective": "There is a tightrope Walker and they have r ropes to cross. There are joints on a rope and there are only specific joints the tightrope walker can stand on. These joints are determined by the second integer which is t. The tightrope Walker can only step on joints which are multiples of t for the 1st step, multiples of t+1 for the second step, and multiples of t+3 for the third step that is the difference between the first two numbers should be divisible by t for the next two t+1 and so on. You have to output the number of paths possible for each rope. For example: 4 1 4 = number of ropes 1 = value of t output: 1 1 2 2 Answer: Ways to reach point 1: [0,1]\nWays to reach point 2: [0,2]\nWays to reach point 3: [0,1,3], [0,3]\nWays to reach point 4: [0,2,4], [0,4]", "inputFormat": ["-The first line contains two integers n and t :n represents the number of ropes"], "outputFormat": ["-Output contains the number of possible paths for each rope"], "constraints": ["1\u2264n\u2264t\u22642\u22c510^5"], "round": 0, "sampleTestInput": ["8 1"], "sampleTestOutput": ["1 1 2 2 3 4 5 6"], "explanation": ["Ways to cross rope 1: [0,1];\nWays to cross rope 2: [0,2];\nWays to cross the rope 3: [0,1,3], [0,3];\nWays to cross the rope 4: [0,2,4], [0,4];\nWays to cross the rope 5: [0,1,5], [0,3,5], [0,5];\nWays to cross rope 6: [0,1,3,6], [0,2,6], [0,4,6], [0,6];\nWays to cross rope 7: [0,2,4,7], [0,1,7], [0,3,7], [0,5,7], [0,7];\nWays to cross rope 8: [0,3,5,8], [0,1,5,8], [0,2,8], [0,4,8], [0,6,8], [0,8]."], "testCases": [{"input": "1\n236 42", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1268 32", "expectedOutput": "0 0 0 0 0 0 0 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 0 0 0 0 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 1 0 0 0 0 0 0 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 1 1 1 0 0 0 0 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 1 1 2 1 1 1 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 3 2 2 1 1 1 0 0 0 1 1 1 2 2 3 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 11 10 9 8 7 6 5 4 3 3 3 2 3 3 3 4 5 6 8 9 10 12 13 15 17 18 19 21 21 22 23 23 23 23 22 21 21 19 18 17 15 14 13 11 11 10 9 9 9 9 10 12 12 14 16 17 20 22 24 27 29 31 33 35 36 38 39 39 40 40 39 39 38 37 36 34 33 31 30 28 27 26 25 25 25 25 26 27 28 30 32 35 37 41 44 47 50 53 56 59 62 64 66 68 69 70 71 70 71 70 69 68 67 65 64 63 61 61 60 59 59 59 59 61 62 64 67 70 73 77 80 84 89 93 97 102 106 110 115 117 120 123 125 127 129 129 130 131 130 130 131 129 129 129 127 128 128 128 129 131 132 135 138 140 144 149 152 158 164 169 176 182 188 194 200 205 212 217 222 227 232 235 240 244 245 248 250 252 254 256 257 259 261 263 265 268 270 274 277 281 286 292 298 304 312 319 327 335 344 352 362 371 380 390 400 409 419 427 435 444 451 459 467 474 480 488 494 500 507 513 518 525 531 538 546 553 561 570 579 588 599 609 620 633 645 657 673 686 701 717 731 747 763 778 794 811 826 842 859 874 890 907 920 936 952 966 981 997 1011 1027 1043 1058 1074 1091 1107 1124 1143 1159 1180 1200 1219 1241 1264 1285 1309 1334 1357 1383 1410 1435 1463 1492 1519 1549 1578 1606 1637 1668 1697 1728 1759 1789 1820 1853 1883 1915 1948 1979 2012 2045 2078 2112 2147 2181 2217 2254 2290 2328 2368 2406 2447 2489 2530 2574 2620 2665 2711 2760 2808 2858 2910 2961 3014 3069 3122 3178 3235 3292 3350 3410 3469 3529 3592 3653 3715 3780 3844 3909 3977 4042 4110 4180 4249 4320 4393 4465 4539 4617 4693 4771 4853 4933 5017 5103 5188 5276 5368 5458 5551 5648 5743 5842 5944 6046 6150 6258 6364 6474 6587 6699 6815 6934 7051 7172 7296 7418 7545 7675 7803 7935 8071 8205 8344 8486 8626 8772 8921 9068 9221 9377 9532 9692 9856 10019 10187 10360 10532 10710 10892 11073 11260 11452 11643 11841 12043 12244 12452 12664 12876 13094 13317 13540 13769 14004 14238 14479 14725 14970 15224 15481 15739 16004 16275 16545 16823 17106 17389 17680 17977 18275 18580 18892 19204 19525 19852 20181 20518 20862 21207 21561 21922 22285 22656 23036 23417 23807 24207 24608 25019 25438 25860 26292 26732 27176 27629 28092 28558 29034 29520 30008 30507 31017 31530 32054 32589 33127 33677 34238 34804 35381 35970 36563 37168 37786 38408 39043 39691 40343 41010 41690 42375 43075 43788 44508 45243 45992 46748 47519 48307 49100 49910 50736 51569 52419 53285 54160 55052 55962 56880 57817 58772 59736 60720 61723 62734 63766 64818 65879 66962 68065 69178 70314 71471 72640 73831 75044 76270 77520 78793 80079 81391 82727 84076 85453 86853 88269 89712 91181 92666 94180 95721 97279 98868 100485 102120 103787 105484 107199 108949 110728 112528 114363 116230 118118 120042 122000 123982 126000 128054 130131 132248 134402 136582 138803 141062 143349 145678 148047 150446 152887 155371 157886 160446 163051 165687 168373 171104 173870 176686 179550 182450 185402 188405 191447 194543 197692 200881 204127 207429 210773 214177 217638 221144 224714 228342 232019 235761 239567 243423 247346 251336 255379 259492 263675 267913 272225 276609 281053 285573 290169 294828 299567 304386 309269 314236 319286 324405 329612 334907 340272 345730 351279 356904 362624 368439 374334 380330 386424 392604 398887 405275 411752 418338 425033 431821 438723 445739 452853 460087 467439 474894 482475 490180 497994 505938 514013 522201 530526 538987 547567 556291 565157 574148 583290 592580 602002 611581 621314 631186 641222 651420 661765 672279 682966 693803 704820 716015 727371 738913 750641 762538 774630 786916 799380 812047 824919 837976 851247 864732 878409 892311 906436 920765 935328 950124 965133 980388 995886 1011611 1027589 1043822 1060291 1077028 1094031 1111282 1128812 1146622 1164690 1183052 1201704 1220629 1239860 1259395 1279217 1299357 1319816 1340575 1361667 1383094 1404834 1426924 1449363 1472130 1495263 1518760 1542603 1566828 1591434 1616402 1641769 1667536 1693682 1720244 1747225 1774602 1802415 1830666 1859333 1888456 1918036 1948052 1978546 2009516 2040947 2072871 2105298 2138205 2171632 2205582 2240034 2275030 2310574 2346643 2383283 2420493 2458255 2496612 2535567 2575100 2615254 2656035 2697420 2739456 2782147 2825471 2869474 2914162 2959512 3005576 3052352 3099825 3148040 3197004 3246695 3297163 3348414 3400427 3453250 3506894 3561334 3616623 3672769 3729749 3787618 3846381 3906018 3966583 4028084 4090501 4153885 4218250 4283571 4349908 4417268 4485629 4555051 4625544 4697086 4769736 4843504 4918370 4994396 5071591 5149936 5229491 5310270 5392251 5475499 5560025 5645810 5732917 5821363 5911124 6002271 6094812 6188734 6284102 6380931 6479202 6578985 6680295 6783114 6887512 6993509 7101081 7210308 7321203 7433749 7548023 7664040 7781786 7901336 8022710 8145891 8270959 8397932 8526797 8657633 8790464 8925269 9062137 9201088 9342107 9485279 9630629 9778142 9927907 10079946 10234250 10390904 10549938 10711340 10875199 11041546 11210365 11381755 11555744 11732319 11911583 12093559 12278244 12465734 12656065 12849224 13045315 13244373 13446391 13651473 13859656 14070932 14285411 14503130 14724084 14948387 15176073 15407143 15641709 15879814 16121456 16366751 16615743 16868434 17124941 17385316 17649551 17917779 18190044 18466349 18746822 19031515 19320430 19613703 19911382 20213479 20520124 20831378 21147246 21467868 21793304 22123562 22458790 22799046 23144344 23494832 23850574 24211585 24578019 24949943 25327376 25710470 26099302 26493891 26894396 27300894 27713407 28132102 28557059 28988301 29426004 29870244 30321054 30778611 31243000 31714255 32192556 32677995 33170609 33670582 34178016 34692941 35215558 35745962 36284201 36830471 37384876 37947466 38518447 39097925 39685955 40282746 40888416 41503019 42126774 42759804 43402166 44054088 44715696 45387054 46068397 46759856 47461502 48173578 48896217 49629501 50373671 51128880 51895204 52672904 53462129 54262966 55075681 55900436 56737318 57586609 58448467 59322998 60210483 61111097 ", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n46 8", "expectedOutput": "0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 2 1 1 1 0 1 1 1 2 2 2 2 ", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n56 10", "expectedOutput": "0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 1 1 1 2 2 2 2 ", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1250 50", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 0 0 0 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 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 11 10 9 8 7 6 5 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 6 8 9 10 12 13 15 17 18 19 21 21 22 23 23 23 23 22 21 21 19 18 17 15 13 12 10 9 8 6 5 4 3 2 2 1 1 1 0 0 0 0 1 1 1 2 2 3 4 5 6 8 10 11 13 15 17 20 22 24 27 29 31 33 35 36 38 39 39 40 40 39 39 38 36 35 33 31 29 27 24 22 20 17 15 13 11 10 8 6 5 4 4 3 3 3 3 4 4 5 6 8 10 12 14 16 19 22 25 28 32 35 39 43 46 49 53 56 59 62 64 66 68 69 69 70 69 69 68 66 64 62 59 56 53 49 46 43 39 35 32 28 26 23 20 18 16 15 14 13 12 13 14 15 17 19 21 25 28 31 36 40 45 51 56 61 67 72 78 84 89 94 100 104 108 113 115 118 121 122 123 124 123 122 121 118 115 113 108 104 100 94 90 85 79 74 69 64 60 56 51 48 46 43 42 42 41 42 44 45 49 52 56 62 68 74 81 89 96 105 114 121 131 140 148 158 166 174 182 189 195 202 207 211 215 218 219 221 221 219 218 215 212 208 203 197 191 185 178 171 164 156 150 143 136 131 126 121 117 114 112 111 111 112 114 118 122 128 135 143 152 161 172 183 195 208 221 235 249 262 276 290 303 316 328 339 350 361 369 377 384 389 394 397 398 399 398 396 393 389 383 377 371 362 354 346 337 329 320 310 303 295 288 282 277 272 270 269 268 271 274 278 285 292 301 313 325 339 355 371 388 408 427 447 468 488 508 531 550 570 591 609 628 645 660 674 688 699 708 717 722 727 732 731 731 730 726 722 717 708 701 693 683 674 665 654 645 638 628 622 617 611 609 608 606 609 614 619 628 639 650 666 684 702 724 747 770 798 825 852 883 914 945 977 1009 1039 1071 1103 1131 1160 1187 1212 1238 1260 1279 1299 1316 1330 1343 1353 1360 1366 1371 1371 1372 1370 1366 1363 1358 1351 1345 1338 1331 1325 1318 1312 1308 1305 1303 1303 1305 1309 1316 1326 1337 1352 1369 1390 1412 1438 1466 1497 1532 1568 1606 1647 1689 1734 1780 1826 1873 1921 1970 2017 2065 2112 2158 2204 2248 2289 2331 2368 2404 2438 2469 2496 2522 2546 2566 2585 2601 2613 2626 2636 2642 2650 2654 2658 2662 2664 2666 2670 2674 2678 2685 2693 2701 2715 2728 2744 2765 2787 2813 2844 2876 2912 2953 2997 3044 3096 3150 3206 3269 3331 3396 3466 3535 3607 3682 3755 3831 3908 3983 4058 4135 4207 4279 4352 4420 4487 4554 4614 4675 4734 4786 4839 4889 4934 4978 5020 5056 5092 5128 5158 5189 5221 5247 5277 5306 5332 5362 5393 5423 5457 5493 5529 5569 5615 5659 5711 5767 5823 5888 5956 6025 6103 6185 6268 6359 6453 6550 6653 6761 6867 6981 7097 7212 7334 7457 7577 7703 7828 7952 8078 8203 8325 8449 8572 8689 8808 8924 9035 9147 9255 9358 9462 9562 9659 9754 9847 9936 10026 10114 10198 10283 10369 10450 10536 10620 10704 10791 10880 10971 11064 11161 11260 11365 11474 11585 11702 11826 11952 12087 12226 12369 12518 12675 12836 13003 13176 13353 13535 13725 13916 14112 14314 14518 14726 14937 15149 15364 15582 15800 16018 16238 16457 16675 16897 17113 17329 17546 17760 17973 18185 18393 18600 18807 19012 19212 19415 19613 19811 20012 20208 20404 20604 20802 21002 21205 21407 21613 21824 22037 22252 22476 22699 22929 23169 23410 23657 23915 24175 24445 24723 25005 25296 25598 25904 26217 26541 26868 27204 27551 27898 28254 28619 28985 29360 29741 30122 30510 30905 31300 31699 32103 32506 32912 33326 33732 34144 34558 34969 35384 35801 36212 36628 37046 37460 37877 38296 38712 39132 39557 39976 40402 40831 41257 41692 42132 42568 43015 43467 43921 44384 44855 45327 45812 46307 46803 47313 47834 48357 48898 49447 50001 50571 51152 51740 52342 52955 53574 54209 54857 ", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n345 64", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n675 23", "expectedOutput": "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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 1 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 4 3 3 3 3 4 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 12 11 10 10 9 9 9 9 9 10 11 11 13 14 15 17 18 19 21 21 22 23 23 24 24 23 23 23 22 22 22 21 21 22 21 22 23 23 25 26 27 29 31 32 34 36 37 39 40 41 42 43 43 44 44 44 45 45 45 45 46 46 47 48 49 50 52 54 56 58 60 62 65 67 69 72 74 76 78 80 81 84 85 86 88 89 90 92 93 94 97 99 101 103 105 108 111 114 117 121 124 128 133 135 139 144 147 151 155 158 162 166 169 172 177 180 184 188 191 195 200 203 208 213 217 224 229 234 240 247 252 259 266 272 279 287 293 301 309 315 323 331 338 346 354 361 369 378 386 394 404 412 422 432 441 451 462 472 483 495 507 519 532 544 557 571 584 598 613 626 641 657 671 687 703 719 735 753 769 786 805 822 840 861 879 899 920 941 962 985 1007 1030 1055 1078 1103 1129 1154 1181 1210 1236 1265 1295 1324 1354 1386 1416 1450 1483 1515 1549 1586 1620 1657 1696 1732 1772 1813 1853 1894 1938 1980 2025 2072 2117 2165 2216 2264 2316 2369 2422 2477 2534 2589 2648 2708 2768 2831 2896 2959 3026 3096 3163 3235 3308 3380 3456 3534 3611 3692 3775 3858 3944 4035 4122 4214 4309 4404 4501 4603 4703 4808 4916 5024 5136 5251 5367 5486 5610 5732 5859 5990 6121 6256 6396 6535 6681 6830 6979 7132 7292 7450 7615 7784 7953 8127 8308 8488 8675 8867 9059 9259 9464 9670 9881 10100 10318 10544 10777 11011 11251 11500 11748 12006 12269 12535 12809 13091 13373 13665 13964 14266 14576 14895 15216 15547 15888 16229 16583 16944 17308 17684 18070 18458 18858 19267 19682 20107 20545 20985 21439 21904 22374 22857 23353 23852 24367 24894 25427 25974 26535 27103 27686 28284 28888 29509 30145 30788 31448 32126 32809 33514 34233 34963 35710 36477 37253 38050 38865 39691 40538 41407 42285 43187 44110 45045 46005 46987 47984 49005 50049 51108 52195 53306 54434 55588 56772 57970 59200 60457 61733 63040 64378 65735 67126 68547 69992 71470 72983 74518 76090 77699 79333 81005 82714 84451 86229 88047 89894 91785 93716 95681 97690 99746 101832 103969 106153 108374 110644 112966 115325 117740 120207 122716 125282 127905 130571 133298 136086 138919 141817 144779 147791 150871 154018 157218 160492 163835 167237 170713 174266 177880 181575 185349 189189 193113 197124 201203 205375 209632 213966 218397 222921 227525 232230 237034 241925 ", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n8 1", "expectedOutput": "1 1 2 2 3 4 5 6", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10 2", "expectedOutput": "0 1 0 1 1 1 1 2 2 2", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n800 20", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 2 2 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 6 6 5 5 4 5 5 6 7 7 8 9 10 11 12 13 13 13 14 13 14 14 13 13 12 12 12 12 12 13 13 13 14 15 16 18 19 19 21 21 23 24 24 25 25 25 25 26 25 26 27 26 26 27 27 29 30 30 32 33 35 36 38 39 41 43 43 45 46 47 49 50 50 51 52 53 54 55 56 57 60 61 62 64 66 69 71 73 75 78 81 83 86 88 90 94 95 97 100 102 105 108 110 112 115 118 121 124 127 130 135 138 142 147 150 155 160 163 168 173 178 183 188 193 197 204 208 213 219 223 230 236 241 248 255 261 268 275 281 289 298 305 313 323 330 340 350 358 368 377 387 397 408 418 429 442 452 463 476 486 500 513 525 539 553 568 582 598 613 629 646 661 678 697 714 734 754 772 792 813 834 855 877 899 921 947 970 994 1021 1046 1074 1101 1127 1155 1186 1216 1247 1280 1311 1344 1381 1414 1450 1488 1524 1564 1604 1643 1685 1729 1773 1818 1864 1909 1957 2009 2057 2109 2164 2216 2273 2331 2387 2448 2510 2573 2636 2703 2769 2838 2912 2983 3058 3135 3211 3293 3376 3457 3545 3634 3724 3816 3912 4007 4107 4212 4314 4420 4531 4641 4757 4876 4994 5118 5245 5374 5506 5643 5780 5922 6072 6218 6370 6529 6686 6853 7022 7192 7368 7550 7734 7923 8118 8315 8518 8729 8939 9157 9383 9608 9845 10086 10328 10579 10838 11100 11370 11647 11928 12216 12516 12816 13125 13446 13768 14103 14445 14790 15148 15515 15889 16272 16666 17064 17474 17899 18325 18766 19219 19677 20151 20637 21127 21634 22154 22684 23226 23783 24348 24930 25530 26135 26759 27401 28049 28719 29406 30100 30818 31552 32301 33067 33855 34655 35476 36323 37179 38060 38964 39881 40828 41795 42778 43790 44827 45882 46964 48073 49202 50361 51552 52760 54000 55274 56567 57899 59260 60646 62069 63527 65013 66536 68096 69686 71316 72991 74690 76433 78222 80041 81912 83824 85772 87770 89817 91905 94042 96232 98464 100751 103097 105483 107930 110437 112991 115613 118295 121025 123826 126693 129618 132612 135679 138805 142007 145290 148632 152056 155564 159139 162805 166553 170374 174292 178299 182391 186577 190863 195232 199707 204291 208961 213744 218640 223633 228749 233980 239316 244781 250372 256080 261919 267892 273988 280227 286615 293128 299795 306618 313575 320702 327988 335422 343032 350815 358761 366888 375200 383686 392366 401251 410312 419584 429068 438745 448652 458778 469114 479690 490505 501545 512835 524381 536167 548222 560554 573135 586003 599164 612595 626338 640386 654724 669392 684384 699695 715347 731350 747688 764395 781480 798913 816741 834969 853574 872605 892053 911906 932207 952955 974145 995802 1017940 1040543 1063650 1087272 1111383 1136032 1161228 1186949 1213249 1240123 1267557 1295604 1324267 1353535 1383447 1414015 1445227 1477124 1509728 1543009 1577024 1611787 1647276 1683554 1720616 1758457 1797132 1836649 1877001 1918233 1960362 2003376 2047330 2092249 2138100 2184956 2232832 2281709 2331658 2382684 2434779 2488011 2542395 2597924 2654655 2712611 2771784 2832240 2894009 2957064 3021487 3087301 3154488 3223139 3293260 3364848 3437988 3512696 3588976 3666892 3746481 3827738 3910742 3995532 4082089 4170507 4260819 4353016 4447202 4543391 4641592 4741902 4844349 4948942 5055766 5164869 5276251 5390013 5506204 5624812 5745949 5869666 5995960 6124953 6256676 6391145 6528480 6668721 6811893 6958099 7107400 7259815 7415460 7574406 7736647 7902327 8071511 8244209 8420572 8600646 8784462 8972165 9163820 9359465 9559228 9763196 9971400 10183989 10401054 10622610 10848832 11079805 11315562 11556284 11802044 12052889 12309006 12570483 12837379 13109864 13388047 13671986 13961866 14257813 14559865 14868233 15183041 15504344 15832370 16167218 16508977 16857870 17214021 17577526 17948594 18327377 18713964 19108594 19511429 ", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}]}, {"name": "BTTLSGMT", "objective": "There are n disarranged bottles in a rack, but chef likes everything organized so they want bottles of the same colour to be together. So what they do is choose any one colour such that bottles of only that colour remain. for this, they will have to delete any other coloured bottles that are in between them. Help chef select a colour such that bottles of only that colour remain and the segments that they delete are minimum. Example: For B G R B chef will have to delete 1 segment that is G R so only blue bottles remain and the segment is minimum.", "inputFormat": ["-The first line contains the number of test cases(t). -The second line contains the value 'n' which is the size of the array. -The third line contains the array values."], "outputFormat": ["A single integer representing the number of segments"], "constraints": ["1\u2264t\u22642\u22c510^4 1\u2264n\u22642\u22c510^5 1\u2264ai\u2264n"], "round": 1, "sampleTestInput": ["4\n1\n5\n3\n1 1 1\n5\n1 2 3 4 5\n5\n1 2 3 2 1"], "sampleTestOutput": ["0\n0\n1\n1"], "explanation": ["Here every number represents a different colour. 1 2 3 1 2 3 1 for example, if you remove segment 2 3 twice you will get 1 1 1 1 2 3 1 2 3 1-> 1 1 2 3 1-> 1 1 1"], "testCases": [{"input": "5\n3\n1 1 1\n5\n1 2 3 4 5\n5\n1 2 3 2 1\n7\n1 2 3 1 2 3 1\n11\n2 2 1 2 3 2 1 2 3 1 2", "expectedOutput": "0\n1\n1\n2\n3", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "4\n1\n1\n2\n1 1\n2\n1 2\n2\n2 2", "expectedOutput": "0\n0\n1\n0", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n13\n12 12 12 12 12 12 12 12 12 12 12 12 13", "expectedOutput": "1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n13\n12 12 12 12 12 12 12 12 12 12 12 12 13", "expectedOutput": "1", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n3\n1 1 1\n5\n1 2 3 4 5", "expectedOutput": "0\n1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n7\n1 2 3 1 2 3 1\n11\n2 2 1 2 3 2 1 2 3 1 2", "expectedOutput": "2\n3", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}]}, {"name": "STAIRCASE", "objective": "Chef wants to build a staircase. He has ordered blocks of different sizes in order to construct it.\nHe was delivered the stairs separately in a jumbled order. He makes trips using a crane to pick up blocks on the way and stack it. He gets two groups of stairs such that, when placed one after another, a full staircase is made. Order of the sizes of blocks is given in an array. Chef has fuel for maximum two trips. Print whether he can make the staircase or not", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, Line 1 contains an integer, N denoting the height of the staircase", "Next line contains N space separated integers each denoting the height of the blocks"], "outputFormat": ["Print \"Yes\" if it is possible to make the staircase in 2 trips. \"No\" otherwise"], "constraints": ["1<= N <= 10^5"], "round": 2, "sampleTestInput": ["3\n1 3 2", "4\n1 4 3 2"], "sampleTestOutput": ["Yes", "No"], "explanation": ["Chef can pick blocks 1,2 in his first trip and blocks 3 in his second trip. He can join them together to get staircase 1,2,3.", "Chef can pick staircase 1,2 in his first trip and block 3 in his second trip. He is left without block 4 and hence cannot construct the staircase"], "testCases": [{"input": "1\n6\n4 5 6 1 2 3", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n5\n1 3 5 2 4", "expectedOutput": "No", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10\n9 4 3 5 1 2 8 7 6 10", "expectedOutput": "No", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10000\n3718 2987 4086 9948 5618 959 7191 8400 808 4584 7840 3977 8464 7716 6890 3547 3418 9094 7869 2808 6645 4153 8262 704 1609 988 8202 4673 549 2380 9807 9221 7435 7223 9307 9721 9841 7896 1999 1963 4366 367 360 3252 8681 3131 2810 4488 8636 1814 179 7184 3467 5995 7640 2065 9447 1468 5549 7658 3213 9106 6118 5323 3984 833 9862 4712 6530 1136 305 2466 1366 4434 1518 511 3596 7774 9132 2185 4853 3488 4133 1256 2110 3097 7312 7408 7564 682 3314 7828 6156 803 1310 5244 8303 5519 8973 4869 2695 7338 1522 687 9265 9048 7152 5848 8612 1998 2536 6532 7799 7974 8559 3207 9955 6463 193 2019 705 1931 5050 6703 9913 9147 869 1070 5464 7742 9286 7901 6491 7740 1264 3391 7109 857 3182 368 6782 4737 4588 5450 6730 8778 661 9564 9197 8409 479 6083 5172 9890 4656 9465 8933 3311 4109 5509 2073 3732 2855 467 9855 1227 2597 6447 6835 6813 7902 320 8226 3797 4524 3309 2697 4906 1388 2420 7438 2131 9645 1149 9035 7713 5416 3384 2944 3829 6585 2455 3402 9210 1548 4957 280 9901 6985 136 987 1304 2822 9243 4717 5570 506 1182 868 1704 9971 5277 7601 860 9269 4549 2189 7721 8677 1132 3852 9519 7415 2952 9793 3307 3993 7653 4739 4121 6629 7935 8968 8742 4909 3907 9702 1350 7510 1876 8757 7669 9542 9836 4699 4953 8427 5697 6458 5809 7481 9976 379 1850 2421 1205 8929 8038 3770 4865 2433 9835 8073 3456 1806 3335 5984 2946 6939 373 7138 4442 9883 5405 4170 8239 8115 405 9054 265 4972 9220 43 2734 7798 44 9273 8452 7467 932 7196 7562 2761 6108 8736 2270 8059 4596 4793 9007 1102 8333 2355 2947 2654 4783 9644 9392 4494 2783 1462 7715 6177 6011 9330 9389 4209 374 9608 7418 2495 9612 1558 4701 4075 7683 5430 8689 4489 8793 9885 5473 173 8554 7541 2804 4353 2208 6259 9488 3348 2319 9490 1177 9218 5009 891 204 2534 4786 1820 4096 35 7816 5724 4563 9828 2213 5783 9075 2899 5358 6736 536 3974 6504 5515 6162 352 4555 1500 2870 6012 4082 7944 1940 640 5291 2416 8927 2938 1531 5055 2838 6959 8320 5384 7707 4747 6855 4478 7847 4185 6405 2782 503 3671 9740 9653 6681 6063 9609 4843 7505 7729 4013 6989 427 5336 943 2864 7451 3381 6763 7576 6103 1415 6734 9998 6397 6829 7135 5890 1549 1622 6290 9158 6562 259 5045 2291 910 9104 9255 8749 4386 1253 4277 8906 2222 5130 215 3199 7389 1229 1447 5227 972 4054 9980 7737 8769 1372 9541 1627 3166 2350 68 1051 7469 2320 2405 8042 6453 701 2373 249 3480 7490 5555 493 6901 9083 1774 7686 5855 8666 9745 7549 296 7751 7028 1993 7220 2078 9891 8572 693 5876 4330 1021 8040 3967 8196 3552 5975 7311 9082 7818 5149 5288 1059 804 8250 7763 257 9099 317 6029 4420 3031 2612 8057 5704 7486 7743 4025 8946 2871 409 2050 9763 3971 7283 9060 2286 8394 341 9310 958 2195 3489 2996 7322 6513 5213 9295 6488 3693 1497 9520 488 267 8284 7476 6809 5054 109 3372 4378 5312 708 8328 9308 2088 3848 9988 164 7546 2526 162 9613 7319 284 8444 7234 7777 3114 1917 2194 1212 3592 628 9362 8569 8376 5151 3512 123 105 2705 7693 9867 9658 4777 8161 3144 8122 7674 6884 1066 3608 1015 7800 9587 9402 8307 9947 3027 5344 6134 8508 1737 8114 1133 1515 616 4390 5387 1419 7911 6910 8447 8129 7873 2499 2824 2717 6242 2722 9938 931 3837 8540 7009 844 1079 39 6367 2087 1402 1370 3510 5674 2475 5813 1353 5253 5997 2394 6851 1110 1199 7050 3413 2196 1902 8459 3577 437 9224 7937 1294 5722 96 5064 8884 1719 16 9741 9318 760 7973 3363 6622 6900 1972 1550 5270 50 2367 5158 8180 3181 6863 8381 8456 5911 6392 6648 1995 9453 2535 8766 7259 6980 8100 2383 1175 1281 8154 1058 1178 436 5441 4216 9924 1773 6365 9779 7638 4066 2527 3690 1701 3840 9361 666 5529 5391 6075 5510 5229 3685 8865 5947 912 8613 1194 1394 6778 4782 3130 7362 4579 3761 329 9199 2906 7586 6496 6046 2230 1262 6988 6325 7783 6838 633 4904 7750 4566 3264 6555 9368 4401 7359 4475 7664 9796 7 6192 874 5164 3124 4663 3684 2337 7963 6769 7250 2807 830 7482 6015 1354 4876 1130 8977 3292 933 4846 979 4940 4744 8631 404 9433 8974 2922 7175 5101 8041 89 7036 1302 1239 7504 3904 1991 8606 2409 8932 8199 9165 1888 7514 5481 4886 3780 9729 5715 2834 6475 476 595 9737 9141 3969 5422 6982 4301 1686 8050 1697 1640 9235 4079 7708 6229 614 6972 2142 6537 263 2622 2940 2977 2948 8355 6818 8984 2516 6386 929 3566 7263 627 919 2787 8627 4042 2000 1648 3229 8571 7111 3439 2315 4544 1012 6670 458 9759 203 5445 7125 5878 9109 6889 7958 5005 2302 2332 9585 275 3069 8614 3888 612 5676 8171 3475 6667 428 4880 4980 2806 8745 4283 5296 4182 5347 6459 5200 5582 2267 6870 6033 875 6684 3195 6923 5561 9646 3783 4542 8794 7034 5898 133 1903 6243 487 4643 1343 6705 9589 6117 7098 6548 1665 4394 7588 2221 1490 702 8728 3138 6933 6126 1628 8374 3513 6856 4376 5524 6840 3431 977 7637 7129 8477 8087 1375 4002 3303 4977 8761 5394 3315 7986 8274 5959 6967 9288 3742 6772 1397 7052 4611 1485 1968 2604 1915 4331 8845 1629 4668 3426 3034 2852 5309 4427 4168 8960 5143 9268 5470 7215 3527 6233 5716 2395 6529 5717 4210 6133 9259 29 3901 3957 8223 1945 4437 4808 7361 8899 9496 6342 3830 3030 6495 6927 8305 5617 6783 8672 3393 4402 4038 9532 8484 4180 4873 1422 6319 4143 1642 5190 7258 4662 3093 5373 945 6600 1032 9560 8782 1994 8224 3119 3667 8338 1268 7328 4936 1930 1976 254 725 9610 3472 6541 3741 1745 6109 383 7998 4286 8856 7789 9167 2035 2920 1539 5239 7292 2111 7403 7747 5298 9038 1870 3863 5943 2997 1986 1939 6281 8883 4322 1947 6157 563 2766 9336 1574 7139 631 1426 1911 9577 3624 7429 9591 3174 9940 9348 8220 1781 8945 5131 7512 4921 7376 8520 709 2939 3898 6789 1508 4608 6906 8912 8322 8315 6672 8370 7209 8498 4560 7702 1228 2980 6297 6385 2393 8045 2704 7065 2595 9049 1225 7284 5153 2522 5226 4856 1758 1505 8133 151 2632 3448 1275 8416 8235 4849 5502 3056 6665 3818 6874 1061 1967 4842 737 8324 2441 4766 1519 456 1877 2076 4361 5189 8969 3405 229 9112 1064 8064 2069 3386 2746 7793 2299 5370 3227 2163 51 2459 400 4790 4695 1338 6940 7360 7519 7746 2973 5170 4282 5659 7419 3208 4902 7146 5150 5774 8893 8776 1453 7807 495 9714 4047 5712 6409 7521 6675 5951 8158 6560 5822 8372 9388 6614 3620 6608 8152 8256 37 8735 7401 5955 1347 5702 5921 6398 1513 3424 5214 3910 2150 8408 4812 5763 707 5689 2793 8658 9156 1100 5466 6544 9185 5372 4597 4851 630 3136 9593 8949 6588 4637 6566 1551 4071 9411 9257 3160 8407 9789 1532 1379 655 238 9500 5856 2278 3318 1584 7528 1924 6942 1718 9578 9378 1020 4961 1812 7059 2628 7181 974 83 6215 2821 5245 8194 685 2657 8352 9107 1464 7632 3883 5641 5613 1647 2809 4348 8065 8619 9617 7126 1565 9850 5698 5945 629 1786 2681 6639 8028 2501 2180 5887 7753 246 9175 5302 7391 5636 8870 2106 4867 8363 1140 8096 1341 4604 1414 924 5879 2321 8754 5013 7690 9832 8829 2201 5902 6239 7194 572 5167 5869 2051 6646 3410 8985 3083 3508 2345 5639 904 2430 6506 6607 6053 762 4995 4885 7947 1846 9869 88 9154 7764 1427 8039 9784 521 7651 7216 4903 393 8478 9518 2326 499 5303 38 412 4506 6918 9987 6260 8979 3038 2543 8779 4370 8463 2932 2203 3173 2147 7211 6466 9650 9480 2540 7410 9292 1078 5182 3700 1808 4553 947 7668 6328 6079 5625 3755 6542 9590 3550 9133 9736 2398 6210 6995 5662 3049 2437 93 394 1474 3536 3648 8290 9786 542 7461 1530 6090 3256 649 1198 5004 2043 8917 9249 1953 7373 3126 113 6824 2990 7057 8799 4136 6360 4559 660 748 8919 3670 6873 3537 953 1308 8784 2399 8882 8008 1839 7041 3900 6172 3216 6802 6196 2273 575 2750 5308 4758 3515 9025 5846 6573 794 9231 1114 5979 3563 9251 6766 8430 7213 5123 5986 7535 603 8265 3519 2436 1241 6321 3919 9902 821 4828 4647 8227 8295 232 9241 7101 894 555 1528 2254 2702 7852 5762 3796 148 2656 634 8814 9677 9727 160 6274 9136 2648 7503 9032 5171 2060 3010 453 2639 6363 1292 3352 3146 8086 2276 7027 9207 9198 1506 8437 9959 146 8744 5634 819 4471 9760 6965 6041 2725 7543 8439 7392 9481 3812 3012 2910 4318 5014 3400 723 8633 3930 4655 28 5963 7202 813 547 1300 2739 1559 5068 6283 3089 8174 9353 3764 3798 1527 7892 472 4897 5295 3332 5710 8699 3271 2508 2092 1598 452 5369 8121 4028 4163 2334 80 3944 8663 7629 6116 9586 4968 1975 1830 4030 3640 1322 903 1897 6881 4450 3786 4145 9486 8182 1889 8513 8033 9184 3217 1172 4403 785 8820 7008 4838 6050 2048 6714 7616 9934 5145 1088 592 5826 3022 5036 4800 853 6758 210 8706 4491 2620 7436 1090 4810 797 8682 7886 6194 1041 8230 6917 4014 9436 3885 3723 7022 4384 4184 2169 6025 6470 8271 7222 1280 1378 63 2993 2155 9895 1028 7073 8418 8497 4451 189 4347 1408 4156 2575 5254 513 783 7015 7282 1437 1190 6792 5893 9338 353 8237 5703 6707 8027 9245 8247 2818 5543 7457 676 3295 8173 3749 5807 3257 602 596 3302 8623 2187 1841 4364 6557 2730 3954 9067 4791 2022 5084 1743 1185 8241 1147 5530 5324 240 5066 7444 2365 4894 3862 2549 9344 887 8786 6284 703 539 4907 6733 4631 6477 4920 2585 9178 5563 4513 1180 3613 610 125 7321 913 5793 9566 7460 7607 9021 3359 2506 948 6184 3502 8711 9240 2172 7337 5534 5575 3251 9394 7844 6036 624 4765 8765 3408 1403 7797 4194 2728 5098 9813 9023 4259 8593 7039 3420 1363 1833 4445 5816 8691 8141 7706 7517 873 3597 291 4169 82 8987 20 9537 7868 6752 186 9780 7478 9149 9073 8384 3828 3374 2819 7884 2590 4692 7269 4193 2193 7063 7832 4748 1094 810 5615 5382 1842 6807 2310 4474 6915 4884 9095 7005 36 1725 8701 1381 8780 6812 820 8391 9366 4004 4965 621 1170 3706 1672 3484 2941 4227 583 3073 4132 2287 4388 824 256 5429 1678 2116 671 5579 7060 7042 2285 6272 2649 2192 9814 1602 3589 4154 4303 1782 153 7907 5265 765 8287 406 414 9008 9317 9350 9549 4015 6977 4321 1039 759 7002 8661 1721 4501 5051 2166 9515 9358 6111 2962 206 8767 4967 4639 8283 9042 283 3559 7605 9192 4324 7877 3792 6723 6482 6969 8543 9698 6711 4431 1957 1577 4076 6388 8507 6042 8198 6251 9105 5917 5589 3037 609 7870 5790 7978 4165 570 504 3057 5835 1974 3531 799 3326 2492 3290 5851 1611 9417 3452 4352 619 9951 7383 6569 8988 5395 1101 9263 9103 9626 2157 2054 4100 356 5584 1741 662 9561 8942 7879 7697 9993 827 816 4982 5927 1525 1707 177 5940 3358 7417 9078 2207 4847 1699 1168 5138 2329 7289 8467 4228 3976 501 2979 1673 8063 4267 5019 9696 2290 1942 9033 4476 237 3864 1510 5923 1893 115 4556 4173 4299 9420 6747 5328 5928 6171 9872 1399 2327 386 839 3627 9485 6441 4976 6276 2658 884 7711 8323 3236 9302 7585 6632 9432 1878 183 6455 4938 8990 5425 5545 7010 4887 9246 480 8475 9379 615 5292 1258 2362 2080 1115 6720 8325 4356 928 7241 1458 5012 8120 9756 9055 7560 6832 1250 7587 4962 5535 7425 7422 5894 7413 3644 2583 4436 7531 2823 571 1038 326 8317 2153 7965 6195 8787 9615 1670 6849 9958 7663 5222 5283 3849 1653 1274 4373 9638 1442 8387 8809 131 8188 5197 5796 5389 6120 5297 753 98 8832 416 4341 6651 1467 5773 1914 7077 1716 3875 138 4453 4984 2041 7150 5113 7860 382 3 8838 9120 202 4064 3565 8948 6225 3603 6287 2488 9294 1909 3839 4660 3468 484 4671 2984 5983 184 4385 6960 3399 7116 905 4200 613 6317 5023 8486 6759 954 334 4251 6424 6895 7051 5446 6957 9475 5539 3299 9748 5140 2797 9904 6040 1935 2067 2737 1529 5723 2772 4514 8072 8225 1789 6186 8657 4099 6819 3158 2524 8599 7086 1934 4760 4138 4587 4007 1650 7940 9665 3432 1836 3171 573 7782 7968 1561 9723 9393 325 2609 66 1359 2665 7320 3192 7032 5449 7880 736 5622 6640 5918 4615 6208 4512 6935 3020 3170 6508 8222 1922 5695 6439 8901 2586 3874 1472 1377 7256 1224 6422 6627 6295 47 9206 7398 2558 7836 8825 6745 8683 23 3087 359 4332 7790 5037 2253 3090 4334 731 3825 5808 5667 4381 6847 1636 756 6580 6944 650 8505 2670 8560 7314 5249 2072 3663 7850 7980 3084 1706 4389 137 2789 4261 3629 4485 6147 9952 7769 224 2671 1759 2381 5501 3538 877 6958 9122 6816 7772 5672 2866 7687 2912 8422 2577 3719 4572 4521 5611 347 8660 8966 2198 2200 3443 8690 5287 1840 2026 651 9171 7474 4118 9794 7785 2284 2359 8788 944 3284 1943 1623 7169 6563 1969 5939 9289 6159 3962 1154 9011 1859 377 4011 2801 4461 2095 1160 865 7156 6931 9859 6267 6924 2259 1455 4978 15 8575 5925 2888 6737 9491 6257 812 1944 970 3454 1792 9743 8703 2070 5978 3676 6663 1588 8713 9887 749 7550 5748 4006 2404 7426 8796 6318 9765 2539 761 7602 9202 1463 940 3201 7727 4599 5891 6522 4226 5550 3244 6909 7811 2423 7583 3403 2896 5652 156 3704 9790 9045 3305 7667 3540 1576 9716 2588 1018 2893 2680 8366 1568 2126 3369 8885 2626 7246 2397 2432 8934 6357 3044 2239 216 5237 3327 4616 8216 5599 4067 4174 7037 4290 4093 2757 4017 2450 1044 8645 8310 5583 8517 7000 6787 2483 9874 3567 9877 4349 7380 7281 5795 145 3784 2168 7581 9375 1566 3098 440 6310 8103 5278 9551 6914 3715 2236 5110 3922 7434 2309 1803 6037 2600 8822 2610 7985 2587 5627 3053 4719 2241 561 3196 6009 8686 8823 7830 9430 2482 3401 7045 7249 4580 4365 9364 7055 9070 985 3342 8294 7416 721 3539 2008 5593 1134 5255 1011 2573 6047 6334 7019 2615 9454 7876 9671 4666 1435 6349 7970 9382 8399 6078 1116 3881 2144 670 1048 9135 2071 7186 3813 222 8167 6400 5362 3258 9264 3291 5711 5349 7887 9703 2966 9669 6693 7349 5476 3763 3999 7633 5106 4060 6578 1601 8950 5078 1811 2745 1950 2400 8068 9712 5074 388 6561 1583 1661 8017 4379 3409 8030 2237 5520 2868 2694 4811 5480 3525 5096 6951 3767 7291 1971 2780 8019 2716 6740 3744 4817 8712 1959 8441 3396 5201 2440 5313 2117 6945 3062 5039 8714 2119 5166 3666 231 6445 335 2388 5420 6390 3234 4601 6481 8753 7885 7351 2817 7726 7197 1054 8210 3505 5334 3434 5713 6683 9652 6598 8177 2280 3604 9196 1062 5102 8385 7966 8124 5797 7553 9058 4369 3686 6793 5771 4992 2623 9640 4768 4834 815 729 92 5128 6916 7745 4490 8029 5377 5431 7345 7618 9897 8869 6324 6005 323 2408 331 4924 8860 6579 2669 1740 8470 5728 892 3856 2268 100 6831 4526 1916 3345 1747 4484 3159 4253 2744 2313 3328 1401 552 4964 4463 8023 861 1452 4350 152 8007 7548 1785 3204 7838 8898 5317 4469 3532 8918 3903 1477 792 9276 6571 653 7919 7681 6330 2173 9886 5731 9508 5904 4078 9111 4533 5860 8268 7157 6866 7916 4855 42 1884 6844 7084 8431 6502 355 7518 6612 8931 6858 921 5623 1946 3168 1029 9412 9816 8707 2881 2968 5352 7773 3692 5177 6992 1449 4458 4654 3961 2894 2234 2605 9177 2720 6689 3948 1900 1254 529 4763 9975 1936 1081 6878 7569 8259 9296 1732 8789 1951 9435 7739 3593 8849 6821 2562 3807 6446 9244 8959 7843 5802 5160 2075 8997 7307 9410 8137 5506 6825 5363 2403 2390 165 5175 5580 4568 6775 4058 1964 6174 899 4372 1289 1123 831 3734 7013 5654 5562 1885 8519 5402 2312 8339 519 9798 2614 7108 6183 2412 7841 4081 7537 4425 3949 3435 4652 3099 3493 1907 4985 6586 4935 7666 7941 7379 4784 4741 3482 9084 8637 9870 8026 7131 1790 3669 1797 7718 9071 9927 1494 2389 9179 375 1049 7957 3025 7230 6034 4455 9949 4698 4439 8922 5954 1248 828 8132 8833 3952 4581 4208 4470 1060 5642 2128 4188 482 8175 8616 8179 9039 4928 9238 9427 9623 2625 7835 9396 8584 4432 606 956 5888 9459 8353 5355 635 3558 4523 2655 5216 8592 3455 3521 9968 2379 2250 5735 7206 9034 3218 7477 4895 6142 5022 5456 7962 7848 491 5467 417 2916 3286 9584 6704 7182 1206 8106 9201 213 262 2826 3440 6080 9096 1904 7087 4095 2890 5655 2446 2566 3765 8570 5799 9043 4176 2006 9939 9550 6245 54 7766 2460 4857 9605 4688 1270 7779 3245 6695 5961 4612 9935 6353 2802 6021 8941 4024 97 2781 5612 6966 9239 6384 9012 1386 9088 1385 2958 4932 9036 4625 1827 4190 7796 3081 6141 3968 3844 272 696 3194 659 350 3379 9687 3731 1219 3707 6010 6370 9018 8936 4919 1862 8670 2969 644 706 3980 8004 5142 7394 6428 4262 1119 294 1511 395 7464 4605 2029 8081 1411 9484 8232 7803 745 1425 8596 3466 5701 2820 6576 9092 3133 4657 9399 415 8170 2490 7615 9137 4942 2914 4650 4459 6857 8345 4371 9768 6661 4648 6362 6203 9030 2086 3366 3610 8552 9150 7462 9081 6505 8185 3622 5376 7765 1610 8421 5337 782 3280 313 6668 6625 6254 5739 4062 6706 9124 5669 5892 3720 5949 269 3354 7236 4052 8891 2330 7936 4742 1124 719 2146 1232 618 1251 4690 429 4315 825 9470 4419 8006 3623 9530 7930 3376 9882 2706 1901 2799 8190 2024 5608 8148 4178 127 3203 300 1980 8896 4270 8583 9600 1141 8011 3285 5393 8975 5544 7590 1713 9041 856 121 1473 6760 4195 4913 2190 9351 2357 3779 290 3187 8343 8466 7589 5638 1664 1265 4989 3643 1961 2314 950 4899 9005 4835 8289 1933 1504 8603 5179 8010 7925 8401 6199 3576 1645 589 6442 6641 4949 728 4103 7755 8091 9744 6235 7748 9967 8454 5204 3313 5269 1705 1798 1729 5547 9545 139 9293 7760 4619 361 989 8879 8971 1674 364 2576 8842 6932 601 2175 6659 2269 8684 2311 5786 6474 6749 632 4010 2486 9333 8245 9367 7719 9281 3769 8848 4131 4468 8648 3520 5181 9928 845 2435 2765 8292 2954 4205 1990 1580 5865 9212 8521 6490 8336 7833 3021 2889 1057 3771 3282 5070 4815 5497 3834 8417 4393 8981 9570 4814 9278 8737 978 9678 3894 8298 6880 8697 4630 9960 3580 9279 1210 4731 3191 6085 4158 4500 8393 971 3385 8473 3429 3395 5680 7303 3688 2732 3833 1858 9462 1035 6511 8052 6484 6644 9303 190 9311 5357 6473 1570 7273 8014 3815 9601 3584 1318 1690 4135 3516 9466 3557 9026 3774 112 3745 2133 3594 8529 4732 7265 8758 9526 2007 4343 2559 8640 4836 6313 2028 9767 1765 9195 7424 8361 8066 658 3296 8721 1659 5472 4860 2713 5 9829 8369 5183 7448 3116 2084 7069 8145 7058 7710 5210 1312 896 3698 8759 8104 6378 418 6086 3702 3912 5746 7530 4898 5841 9979 7016 6161 2951 769 9028 1076 4565 2936 2023 5325 9517 6846 2661 2347 4284 5937 1637 2875 6776 7600 1879 835 2105 4285 7889 5383 752 6081 9705 8738 5438 6726 2103 7804 3517 9755 8110 4726 1307 2719 5903 79 5805 3061 6149 2152 8889 2579 4705 996 4391 7004 3581 1886 4883 5428 6237 1752 9301 2640 9733 475 8907 4063 2456 8952 6908 6713 3611 5457 9123 3066 7239 788 8140 1805 8897 1612 3164 8723 397 2749 1555 4733 3799 9300 4520 9861 1075 4412 8921 6278 211 567 3486 2498 4446 2733 7626 502 3474 2672 5877 9921 5247 3298 8013 8462 6869 6628 6421 1008 6744 5737 3301 4931 6947 4946 8354 6875 7227 8201 9398 3000 4449 8326 9547 303 9932 9922 158 3528 7173 4219 2406 5988 1220 7709 3404 3972 7597 7568 5174 9876 9424 6710 7007 3096 8605 197 9461 2376 6148 1195 306 1958 3851 1221 64 4704 9305 8580 5108 8388 7128 6145 3975 8178 854 5057 6227 2122 8857 6088 1596 5122 4841 6246 9312 3814 6348 2182 446 5427 8783 1201 7855 2520 6293 3140 297 9864 8499 3243 5732 3966 7733 8094 2044 4983 3110 6084 8639 6377 245 1828 8435 1409 2036 1466 9907 8568 6211 7953 1912 5094 2014 6160 1371 141 6238 1173 647 3209 4845 9386 3380 2599 5868 7252 4375 9579 5577 6187 5060 5310 3149 7038 4661 510 3561 9405 6478 6232 6647 6633 7988 1634 8389 9937 9440 4617 330 2491 6786 9004 87 3421 3641 715 8887 3169 7952 3691 8771 3043 7105 8914 8826 9401 2726 12 9795 46 5477 6270 1834 279 8367 8821 3989 6415 1259 363 6345 1332 7268 3773 937 7890 8080 483 6123 1562 7393 6799 9834 1502 7578 6642 8308 5107 7497 5067 4609 5803 3802 5684 8285 8134 1306 3155 7287 679 2617 1516 9142 1593 6026 1142 9878 7677 694 6327 7595 7224 7245 8808 2784 1269 2001 4594 5448 8611 7665 9709 7188 9487 1395 2052 5564 7909 6383 4642 5970 5882 5403 1111 585 4177 1031 6976 7145 8811 1695 9771 9456 617 4220 5028 2013 8090 2976 3574 9525 7649 7001 8547 5761 4600 8679 2227 8601 3065 7165 2328 9817 9844 3806 6811 9256 7918 8940 9749 8533 4479 9588 9266 1534 370 6794 9522 9595 4586 6271 852 5257 5962 500 9732 4570 3011 2004 435 4959 5188 8420 4085 1688 4189 6414 587 3189 6089 527 9489 6099 3823 6356 2431 8867 8515 9093 9556 1590 3853 1481 5029 9574 5915 8510 1483 4218 6590 8036 2205 1137 8279 2636 7619 6803 5508 5780 8082 3653 8558 2130 9649 5458 9535 3373 9252 7732 5284 4557 1003 2505 5604 5159 6898 311 9769 1949 3316 2538 9299 740 174 5223 9977 6144 2758 8938 8471 6520 3681 5880 5069 3929 7784 6217 1499 81 343 7334 3811 6308 3330 8 969 7468 1162 8662 8835 3411 9686 439 6399 3125 1985 3586 2030 6231 3394 5307 7891 5418 7118 9404 199 7598 5760 4115 4896 2796 6268 1784 6464 5439 8986 27 9228 522 9770 2707 5165 8351 5607 8329 914 2504 9200 8487 2753 9614 2148 732 7387 3899 1457 7643 3591 348 2908 5032 2762 8892 3963 2316 470 7068 8460 6694 930 9514 3414 879 2773 7390 2788 10000 3308 8649 4833 5132 5899 468 5938 7881 2971 1152 4819 2252 2950 5901 5994 4001 1329 9121 3360 2913 7513 9533 4527 7025 5463 3876 4293 8610 6114 5341 9647 3007 1819 2675 4298 8240 5198 2149 4113 4530 5637 8335 5537 7557 8801 7767 9283 8214 2238 8644 4083 8044 7999 1495 2999 6154 5857 8725 241 9961 2886 814 2872 2551 3778 6331 3143 7054 3733 8846 3412 7368 2829 2953 8273 9408 485 3942 3014 1287 2964 7533 7006 5126 7954 2469 8602 3730 5342 9047 9053 889 1979 4678 6341 5969 4392 1654 3940 6528 834 4357 7433 4725 1163 5789 8280 9254 1255 3343 957 2210 7304 9219 9463 8731 8362 1243 6963 2457 8396 778 8130 2813 9187 3560 6655 2747", "expectedOutput": "No", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000\n51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000", "expectedOutput": "Yes", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "BALLSPLIT", "objective": "Chef has been given a special kind of ball. Size of the ball at any given time is indicated by an integer, n. Also, a ball of size n can be split into two balls of size n1 and n2 if n=n1+n2. This is done until neither n1 nor n2 can be written as product of legal values of n1 and n2. It is said that balls of size 1 do not exist.\nGiven chef starts with two balls of size a and b, he can split either of the balls in multiple ways such that they cannot be split further. For all the cembinations of such splitting for both the balls, chef notes down the maximum absolute difference between sub balls of the two given balls. What is the minimum value among these noted values", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each test case, First line contains two space separated integer A and B denoting the initial size of the balls"], "outputFormat": ["For each test case, output the minimum noted valu by the chef"], "constraints": ["1 <= A,B <= 10^9"], "round": 0, "sampleTestInput": ["3 4", "6 8"], "sampleTestOutput": ["1", "0"], "explanation": ["Splitting balls as 3 and 2+ 2, The max difference is 1. This is the only possible splitting and hence the output is 1", "6 can be split as 2 + 2 + 2 and 8 can be split as 2 + 2 + 2 + 2 and the max difference is 0. It can be shown that for any other possible splitting, difference cannot be lower than 0. Hence the output is 0"], "testCases": [{"input": "1\n6 9", "expectedOutput": "0", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n7 9", "expectedOutput": "1", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n100 121", "expectedOutput": "1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n248785748973758934758978978768945896745654 3485738975837583758734857348578437584375843785432", "expectedOutput": "0", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n29005460600454830466116280404610937241609159934266884270177622692593903718521525319842155036615799347659710559710559713701749473250785210893164659420827799876 29005460600454830466116280404610937241609159934266884270177622692593903718521525319842155036615799347659710559710559713701749473250785210893164659420827799876", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "ZMBAPCLPSE", "objective": "Chef lives in neighbourhood which is made up of small blocks connected via roads. Each block has a specific identifying value such that neighbours of any given node is 2i+1 and 2i+2 where i is the value of the current block. Given chef lives in block 0, a zombie apocalypse starts at a block, Z, Chef needs to get to block, D asap in order to escape the neighbourhood. With each step chef takes, zombies spread to immediate neighbour block from their current blocks. Find if chef can make a safe escape", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each testcase, First line contains an integer, N denoting the number of blocks in the neighbourhood", "Next line contains 2 space separated integers D and Z denoting the destination and starting block of zombies"], "outputFormat": ["Output \"Yes\" if chef can make it alive. \"No\" otherwise"], "constraints": null, "round": 1, "sampleTestInput": ["4\n3 1", "4\n3 2"], "sampleTestOutput": ["No", "Yes"], "explanation": ["No explanation", "No explanation"], "testCases": [{"input": "1\n15\n9 6", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n20\n3 12", "expectedOutput": "Yes", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1293893\n232 12213", "expectedOutput": "Yes", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n3748374\n7324 7324", "expectedOutput": "No", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n3744\n2332 323", "expectedOutput": "Yes", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n427643\n23 76", "expectedOutput": "Yes", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n384783\n232 343", "expectedOutput": "Yes", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n343\n43 43", "expectedOutput": "No", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10\n2 7", "expectedOutput": "Yes", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n15\n6 9", "expectedOutput": "Yes", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}]}, {"name": "WTEQLZ", "objective": "A giant Ferris wheel has been put up in basin city and everyone wants to sit on it but there are a few conditions that need to be satisfied before that happens. The town has n people every kth person has a weight w(k)- that is the weight of the 1st person is w1 the 2nd person w2 etc. The conditions are:\nOne capsule of the Ferris wheel can only have two people.\nEvery capsule should have the same weight. That is when we have n people then (person1,partner1), (person2,partner2).........(person n, partner n) person 1 + partner 1 = person 2 + partner 2 = \u2026\u2026\u2026 person n + partner n = capsule_weight\nSince the people of basin city cannot figure out how to achieve this they have called you a magician, as a magician, your task is to select a value of capsule_weight such that maximum number of people can sit on the Ferris wheel. Once you are done with the calculation you have to tell them the maximum number of groups that can sit on the Ferris wheel.\nFor example, there are 6 people: The weights of these 6 people are: 1 3 5 6 2 20 one of the groups that can be are: (5,2) and (6,1) hence the answer is 2", "inputFormat": ["-The first line contains the number of test cases(t) -The second line contains the number of people(n) -The third line contains the weight of each of these n people"], "outputFormat": ["-Output the maximum number of pairs which can sit on the Ferris wheel"], "constraints": ["1\u2264t\u22641000 1\u2264n\u226450 1\u2264w(i)\u2264n"], "round": 2, "sampleTestInput": ["5\n5\n1 2 3 4 5\n8\n6 6 6 6 6 6 8 8\n8\n1 2 2 1 2 1 1 2\n3\n1 3 3\n6\n1 1 3 4 2 2"], "sampleTestOutput": ["2\n3\n4\n1\n2"], "explanation": ["For the 1st test case (5,2) and (3,4) add to 7. 5+2 = 3+4 = 7 hence only two pairs are possible so the answer is 2"], "testCases": [{"input": "5\n5\n1 2 3 4 5\n8\n6 6 6 6 6 6 8 8\n8\n1 2 2 1 2 1 1 2\n3\n1 3 3\n6\n1 1 3 4 2 2", "expectedOutput": "2\n3\n4\n1\n2", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "2\n50\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50\n50\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50", "expectedOutput": "25\n25", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "2\n50\n50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50\n50\n50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50", "expectedOutput": "25\n25", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "3\n50\n17 24 43 25 36 48 4 35 17 42 9 5 3 10 46 7 13 22 5 6 35 37 36 15 43 1 12 2 43 41 28 40 9 4 19 36 17 19 9 47 26 21 12 29 38 11 1 15 12 31\n50\n11 28 48 18 46 3 17 20 46 18 31 28 29 13 10 41 35 4 43 9 40 1 35 46 34 4 19 20 20 7 17 21 27 29 10 3 15 44 47 18 20 48 48 31 33 27 12 10 11 2\n50\n29 25 6 7 43 12 35 1 48 32 34 49 13 49 31 5 4 42 22 46 42 18 16 37 21 49 24 30 29 12 29 50 17 42 2 43 25 7 24 25 23 16 38 3 43 47 13 38 27 30", "expectedOutput": "15\n13\n16", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "7\n36\n1 25 34 5 13 29 2 5 23 5 10 20 23 10 25 20 14 4 8 19 23 31 14 24 30 30 29 23 35 23 17 15 27 14 20 3\n41\n4 8 35 24 1 19 10 2 27 13 38 40 40 8 22 30 20 23 3 6 35 34 15 21 33 11 37 27 15 27 41 18 34 36 3 35 13 12 36 41 26\n4\n3 3 2 1\n7\n1 3 4 7 4 5 2\n19\n10 4 5 19 5 5 1 8 19 18 7 18 17 6 14 8 4 3 10\n23\n2 4 8 5 17 17 21 16 14 20 15 20 21 2 8 15 19 23 12 13 20 1 16\n16\n14 11 4 6 5 11 8 4 2 4 10 6 7 16 6 13", "expectedOutput": "9\n12\n1\n3\n5\n6\n5", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1000\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1", "expectedOutput": "0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "3\n50\n2 2 2 3 10 3 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1\n50\n2 5 6 9 10 13 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1\n50\n2 5 6 9 10 13 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1", "expectedOutput": "19\n22\n22", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}]}, {"name": "GDKDNPR", "objective": "Mary Port is organising a carnival and all children of the town are attending it, there are also multiple kidnappers in the carnival and only one policeperson. The children's area is the area where the parents are not allowed and is a good area for the kidnappers to kidnap the children. But there is also a policeperson who can catch these kidnappers. So the policeperson is at the front of the carnival at coordinate 0 and all the kidnappers are between coordinate 0 and C. Now your task as the head of the kidnappers is to ensure that most of your kidnappers reach the children's area you can select any of your kidnappers and give them instructions to move.\nThe movement happens in the following way: 1. firstly a kidnapper moves closer to the children's area by 1 step if it reaches the coordinate c it is successful and cannot be caught anymore. 2. Once any of the kidnappers has moved one step the next step will be of the policeperson who can also move 1 step if at this step any of the kidnappers is found they are caught\nThese two steps repeated until all the kidnappers have reached the children are or are caught. Now you ask the leader of the kidnappers to ensure that most of your kidnappers reach the children's area you can do this by selecting any of your kidnappers when you get the chance to move 1 step. At the end you have to print how successful you were that is how many of your kidnappers could reach the children's area", "inputFormat": ["-The first line contains the number of test cases(t) -The second line contains the coordinates c and k the number of kidnappers -The third line contains the coordinates of each of these kidnappers"], "outputFormat": ["The maximum number of kidnappers that can reach the children's area without being caught"], "constraints": ["0"], "round": 0, "sampleTestInput": ["3\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1\n12 11\n1 2 3 4 5 6 7 8 9 10 11"], "sampleTestOutput": ["3\n1\n4"], "explanation": ["No Explanation"], "testCases": [{"input": "3\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1\n12 11\n1 2 3 4 5 6 7 8 9 10 11", "expectedOutput": "3\n1\n4", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "4\n2 1\n1\n2 2\n1 1\n2 3\n1 1 1\n2 4\n1 1 1 1", "expectedOutput": "1\n1\n1\n1", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "3\n1000000000 2\n500000000 499999999\n1000000000 2\n500000000 499999999\n1000000000 2\n500000000 499999999", "expectedOutput": "1\n1\n1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n1000000000 5\n900000000 900000000 900000000 500000000 499999999\n1000000000 5\n900000000 900000000 900000000 500000000 499999999", "expectedOutput": "4\n4", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1", "expectedOutput": "3\n1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "MINAMNT", "objective": "There are n islands for which X and Y coordinates are given. Chef, being a greedy ruler wants to conquer them all. The cost to conquer each island is K. However, when chef conquers island, he can connect them using bridges. When an island can be surrounded by other island and its bridges completely, conquering the island becomes easier. The cost to conquer now gets divided by a constant C. Chef wants to spend the least and conquer all the island. Find the minimum amount he will have to spend to conquer every island optimally", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, first line contains an integer,N denoting the number of islands", "Next N lines contain two space separated integer denoting the x and y coordinates of each island", "Next line contains an integer, K denoting the initial conquering cost", "Next line contains an integer, C denoting the reduction factor once an island is surrounded completely"], "outputFormat": ["For each testcase, print the floor value of the minimum amount required to conquer all the islands"], "constraints": null, "round": 1, "sampleTestInput": ["2\n0 1\n0 5\n100000\n2", "4\n0 0\n0 1\n4 5\n3 3\n50000\n4"], "sampleTestOutput": ["200000", "200000"], "explanation": ["No explanation", "No explanation"], "testCases": [{"input": "1\n2\n0 0\n0 5\n1000\n5", "expectedOutput": "2000", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1\n0 0\n10000\n2", "expectedOutput": "10000", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n8\n0 3\n1 1\n2 2\n4 4\n0 0\n1 2\n3 1\n3 3\n10000\n2", "expectedOutput": "60000", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2\n0 0\n4 5\n50000\n2", "expectedOutput": "100000", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n4\n0 0\n4 3\n4 5\n1 2\n100000\n2", "expectedOutput": "400000", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n30\n62 82\n38 11\n7 74\n73 26\n25 93\n71 39\n8 59\n21 97\n94 72\n1 45\n22 40\n57 32\n88 80\n56 19\n12 18\n48 25\n40 67\n69 72\n43 73\n59 81\n59 19\n11 78\n69 72\n62 23\n100 47\n98 10\n35 59\n90 64\n8 100\n17 51\n100000\n2", "expectedOutput": "1743750", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n7\n0 0\n4 3\n1 2\n4 5\n3 5\n6 7\n4 10\n100000\n2", "expectedOutput": "550000", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n500\n85 11\n9 29\n63 88\n73 89\n84 98\n70 84\n56 62\n77 20\n4 57\n12 18\n52 55\n22 57\n50 74\n12 16\n59 6\n78 81\n91 63\n13 6\n62 70\n20 54\n100 27\n64 58\n100 84\n81 94\n62 68\n80 61\n8 3\n26 10\n39 21\n4 100\n44 16\n51 69\n55 63\n11 96\n7 60\n23 14\n58 7\n32 71\n24 49\n24 26\n26 56\n77 64\n93 95\n46 70\n30 78\n14 70\n44 80\n60 58\n40 61\n99 14\n71 36\n5 47\n80 54\n48 74\n54 51\n29 95\n11 92\n33 48\n52 88\n28 9\n52 88\n38 32\n45 76\n54 31\n23 76\n47 52\n95 38\n1 28\n54 78\n73 80\n41 32\n54 59\n3 87\n34 1\n16 99\n66 53\n43 71\n15 87\n9 27\n28 8\n73 79\n81 32\n21 44\n47 44\n68 69\n77 51\n50 13\n2 58\n47 53\n90 51\n3 70\n73 42\n90 6\n98 34\n91 87\n74 99\n81 82\n18 85\n21 86\n71 10\n6 21\n99 63\n27 11\n62 16\n16 77\n43 13\n79 43\n97 82\n4 4\n12 20\n26 55\n37 57\n58 85\n2 18\n92 4\n85 2\n98 75\n40 9\n16 25\n59 93\n81 15\n80 25\n11 29\n40 49\n64 5\n41 20\n33 74\n27 97\n42 21\n74 42\n83 58\n80 11\n51 23\n16 18\n57 1\n23 60\n80 75\n59 87\n46 37\n91 97\n30 14\n59 95\n35 78\n44 72\n8 31\n66 4\n8 66\n63 8\n8 99\n67 26\n34 2\n59 56\n72 37\n26 74\n5 8\n60 53\n11 34\n87 44\n49 54\n28 20\n37 43\n81 74\n53 44\n41 55\n64 20\n63 88\n83 53\n69 92\n6 12\n2 48\n60 3\n99 74\n8 49\n44 33\n11 14\n39 77\n26 43\n84 29\n31 6\n28 35\n60 52\n28 75\n51 51\n58 40\n44 6\n68 4\n34 27\n30 59\n35 71\n43 98\n59 77\n3 82\n44 23\n92 60\n28 74\n100 67\n27 26\n3 14\n40 51\n55 58\n55 37\n26 16\n62 60\n47 35\n30 86\n97 31\n24 51\n70 84\n70 19\n39 83\n33 94\n25 63\n71 79\n5 64\n46 67\n74 17\n31 100\n63 91\n55 94\n19 97\n90 77\n36 78\n21 20\n82 26\n89 7\n53 81\n75 79\n100 31\n98 18\n23 28\n49 28\n27 30\n70 6\n79 28\n31 57\n66 69\n53 93\n82 21\n83 44\n18 50\n8 67\n69 48\n86 71\n71 53\n67 62\n98 16\n26 39\n100 48\n82 9\n23 82\n52 30\n78 36\n74 89\n64 93\n56 92\n84 22\n44 40\n61 93\n61 14\n65 37\n58 63\n49 28\n72 88\n94 83\n17 80\n18 75\n27 98\n95 78\n6 78\n90 39\n46 17\n63 49\n75 24\n1 90\n100 44\n81 39\n50 53\n1 9\n93 1\n94 45\n84 83\n46 37\n44 34\n33 76\n29 10\n84 85\n74 11\n4 43\n35 99\n81 16\n96 100\n19 12\n89 83\n58 38\n50 37\n91 67\n54 27\n67 47\n44 57\n40 71\n61 30\n34 76\n49 33\n26 77\n60 37\n77 75\n93 3\n60 5\n27 25\n45 86\n33 12\n8 29\n96 28\n57 57\n18 75\n69 55\n93 52\n29 13\n77 94\n24 69\n8 10\n97 25\n82 43\n51 59\n51 63\n84 23\n35 91\n83 65\n13 50\n55 69\n56 95\n83 58\n94 18\n67 96\n20 87\n95 70\n27 81\n52 32\n2 46\n10 54\n71 81\n81 67\n40 1\n84 77\n100 57\n39 83\n78 93\n76 68\n51 78\n84 5\n62 74\n64 8\n81 10\n98 84\n12 30\n50 62\n52 78\n49 78\n79 76\n37 88\n56 63\n29 97\n14 95\n80 53\n61 66\n92 89\n50 98\n89 58\n74 87\n50 65\n99 80\n28 86\n27 48\n26 40\n58 31\n20 85\n48 51\n46 30\n85 28\n100 27\n70 33\n89 26\n67 42\n5 86\n46 29\n100 36\n34 56\n76 73\n27 43\n69 49\n97 65\n20 44\n20 81\n2 39\n4 74\n91 27\n12 3\n60 94\n90 83\n9 5\n51 64\n77 47\n40 45\n15 37\n14 74\n23 10\n57 56\n66 100\n64 56\n25 28\n96 28\n12 84\n72 12\n93 57\n49 50\n80 86\n92 74\n49 53\n67 95\n49 1\n44 25\n91 62\n57 55\n73 10\n98 1\n66 4\n63 33\n72 84\n4 22\n92 60\n67 93\n1 59\n21 23\n43 79\n91 15\n83 9\n23 29\n39 71\n49 10\n24 94\n68 44\n86 58\n89 18\n91 49\n96 21\n73 30\n56 41\n37 69\n84 14\n52 41\n27 82\n24 33\n15 2\n19 73\n77 18\n79 81\n11 29\n50 89\n13 43\n54 52\n11 54\n72 60\n2 70\n85 96\n32 65\n65 2\n59 55\n57 7\n64 73\n14 83\n41 74\n6 28\n7 63\n1 90\n43 32\n8 86\n13 44\n21 70\n10 23\n44 65\n63 18\n45 1\n40 19\n39 62\n25 30\n11 62\n90 25\n28 77\n46 83\n41 9\n94 84\n46 56\n80 68\n71 76\n25 58\n53 81\n63 64\n76 79\n80 84\n71 83\n100000\n2", "expectedOutput": "10705380", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n494\n94 64\n23 48\n16 69\n98 88\n60 95\n55 66\n8 68\n52 32\n30 87\n63 50\n8 94\n22 30\n7 12\n31 86\n72 54\n89 96\n26 81\n33 21\n55 96\n54 100\n8 55\n55 71\n30 54\n98 58\n52 19\n9 31\n80 32\n79 50\n21 74\n38 53\n39 17\n58 37\n36 49\n45 27\n1 41\n87 21\n87 74\n65 16\n39 90\n68 9\n90 75\n49 14\n91 41\n14 22\n39 42\n14 56\n87 42\n70 62\n20 49\n51 57\n68 73\n61 48\n23 92\n39 55\n53 86\n82 31\n27 88\n38 3\n30 15\n72 55\n11 10\n25 7\n64 33\n95 24\n33 76\n5 74\n15 77\n32 45\n91 90\n10 99\n86 9\n48 3\n92 91\n41 43\n17 93\n34 40\n6 81\n51 92\n98 80\n20 26\n96 84\n82 67\n83 57\n16 16\n58 52\n71 87\n22 91\n19 6\n10 18\n78 35\n35 96\n89 12\n6 25\n65 34\n17 40\n30 6\n58 31\n29 95\n6 70\n8 43\n23 88\n37 97\n35 33\n29 7\n49 9\n13 9\n34 77\n31 69\n82 65\n96 60\n64 98\n18 38\n54 29\n62 17\n36 37\n56 14\n99 26\n83 15\n26 4\n85 30\n16 26\n9 25\n19 76\n31 19\n10 11\n68 73\n83 81\n63 49\n68 38\n29 93\n30 24\n31 85\n32 71\n36 20\n52 47\n16 38\n20 32\n51 84\n4 31\n99 30\n65 54\n53 89\n24 8\n13 94\n83 100\n74 89\n1 18\n44 98\n84 76\n46 69\n93 77\n1 64\n9 96\n1 94\n36 55\n67 94\n40 67\n19 54\n12 64\n5 91\n4 8\n60 74\n2 54\n27 57\n46 76\n51 53\n82 50\n54 1\n77 71\n53 53\n8 18\n3 77\n66 18\n62 72\n70 79\n90 83\n15 20\n73 96\n37 54\n37 55\n42 80\n5 36\n74 28\n40 18\n13 30\n93 36\n88 18\n1 57\n2 83\n24 75\n3 38\n29 51\n85 35\n99 27\n27 9\n55 8\n6 61\n100 36\n46 85\n84 36\n92 78\n46 60\n78 20\n47 55\n53 76\n69 83\n14 99\n64 80\n61 5\n22 50\n42 30\n74 61\n71 6\n11 41\n61 87\n64 3\n3 72\n86 74\n92 51\n33 34\n98 76\n47 85\n45 4\n4 91\n54 32\n47 31\n80 26\n79 34\n48 77\n34 34\n79 91\n70 67\n81 14\n93 24\n57 17\n97 54\n21 90\n20 61\n21 53\n16 81\n100 43\n16 42\n98 47\n30 92\n50 55\n63 19\n48 9\n62 90\n56 61\n64 23\n38 1\n59 44\n98 54\n51 23\n40 69\n59 42\n15 86\n96 74\n55 94\n88 88\n88 95\n14 1\n91 31\n81 80\n7 74\n52 70\n28 68\n56 52\n56 78\n43 66\n54 6\n31 8\n70 82\n71 65\n65 45\n73 88\n21 35\n28 8\n76 22\n86 34\n70 53\n16 83\n49 37\n96 23\n99 75\n68 30\n32 14\n37 31\n26 55\n93 17\n70 56\n19 99\n35 10\n43 43\n12 98\n57 79\n4 48\n26 95\n6 39\n58 86\n20 52\n40 73\n39 55\n45 62\n40 61\n70 25\n90 82\n91 82\n20 57\n13 6\n64 13\n56 26\n20 24\n14 20\n27 20\n34 27\n71 53\n41 76\n61 59\n52 31\n35 73\n62 49\n45 65\n40 45\n17 36\n99 2\n81 57\n55 2\n59 41\n99 15\n50 11\n48 27\n67 76\n35 30\n81 59\n63 25\n76 93\n58 14\n50 44\n21 73\n47 91\n56 19\n38 31\n34 22\n86 93\n61 31\n62 78\n68 94\n96 64\n52 77\n34 4\n27 58\n11 63\n96 65\n57 40\n89 35\n32 66\n35 89\n37 97\n93 88\n10 16\n56 74\n66 45\n20 76\n33 39\n74 22\n82 91\n40 73\n4 45\n100 99\n6 40\n29 86\n25 96\n16 47\n69 67\n24 38\n52 11\n22 65\n67 59\n6 100\n74 49\n21 88\n1 29\n78 33\n88 26\n25 59\n15 29\n28 97\n50 94\n14 79\n17 21\n64 6\n16 69\n2 38\n80 47\n7 34\n27 36\n99 66\n56 83\n56 19\n41 11\n92 4\n94 77\n35 3\n36 86\n85 56\n81 78\n18 98\n49 37\n44 100\n13 38\n15 77\n86 41\n94 53\n61 22\n36 2\n2 28\n6 83\n98 12\n47 28\n38 19\n64 75\n54 53\n21 88\n72 25\n94 19\n86 23\n11 96\n28 87\n81 55\n78 25\n89 65\n31 85\n1 84\n91 78\n86 26\n32 6\n69 82\n96 30\n50 47\n56 88\n48 6\n6 50\n56 61\n62 27\n80 16\n27 70\n24 48\n31 83\n14 21\n16 53\n22 22\n32 58\n43 97\n50 40\n60 40\n14 79\n100 73\n97 26\n90 31\n22 73\n75 64\n100 64\n43 9\n68 98\n99 9\n71 3\n39 92\n80 68\n69 6\n87 57\n79 33\n49 24\n10 19\n93 86\n53 46\n28 64\n79 84\n88 37\n18 59\n5 58\n47 10\n97 78\n26 63\n64 35\n27 60\n8 40\n9 22\n36 67\n34 35\n80 93\n60 15\n18 13\n88 46\n100000\n2", "expectedOutput": "10807071", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n49\n46 24\n38 31\n24 35\n94 46\n81 11\n89 4\n3 95\n21 74\n76 94\n26 47\n9 88\n33 26\n77 22\n61 41\n73 30\n4 83\n14 32\n34 21\n25 27\n96 91\n59 57\n84 68\n11 4\n49 24\n69 58\n72 23\n49 37\n38 4\n76 20\n98 69\n48 95\n83 13\n26 53\n25 4\n90 12\n19 74\n92 20\n12 67\n69 14\n38 20\n73 23\n97 90\n50 72\n74 41\n7 70\n85 37\n14 91\n74 34\n16 68\n100000\n2", "expectedOutput": "2081250", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}]}, {"name": "MACHINES", "objective": "Chef sets up a factory with just 1 machine initially to manufacture more such machines. Chef uses the newly manufactured machines to manufacture more machines for 2 days and then sells them. At the end of 0th day, no machines were made. At the end of 1st day, only 2 more machines could be manufactured. On all the coming days, chef makes his machine more and more efficient such that on any given day, machines manufactured on the previous day manufactures 3 machines each and the machines manufactured the day before that makes 2 machines each. This way, chef scales up his warehouse of machines. Find the number of machines manufactured on the end of Nth day.", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each test case, first line contains an integer, N denoting the day for which number of production is required"], "outputFormat": ["For each test case, print the amount of machines manufactured on the Nth day"], "constraints": ["2 <= n <= 10^6"], "round": 2, "sampleTestInput": ["3", "4"], "sampleTestOutput": ["22", "78"], "explanation": ["Machines made at the end of Day 1 and 2 were 2 and 6. Hence 3 times 6 + 2 times 2 = 22", "Machines made at the end of Day 1 and 2 were 6 and 22. Hence 3 times 22 + 2 times 6 = 78"], "testCases": [{"input": "1\n2", "expectedOutput": "6", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n5", "expectedOutput": "278", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n60000", "expectedOutput": "111976719836900641648717738219244233742937104484737461848012039892098549520641349643934300138637764084641254349293171280431052106533060636821921071227018697020997701872591964401611006761614654952249120769254637051927461421687861840594104544288405625979241336240109843000156423597984917034482142556100484225376585713641452543144409410919132404035737374193940207358334747827895811658627394093923159322711976062541233719321470138558412676156095993091180175564481837464481144738611250682625362912797877067695392690863953856166005982906056362654746457236286171637846119869115052674273695973073644900923227030573087927828305930065026606907717226055898777313064723001994960335008479930751323902247771394039323604647466302175631221633445820259975424989280010874918313766573349657739486703114454505879690625456072777506540592333177351095102880299339428980876475501066495310304528011054335929727220536163505164234682314193114103792983342124404161951948064340667049296370809373828284217091817790060578995955580700869898565436885146986649194290070978553276232670531901150705329070444415641454035857752326798038201618291718077034089453772228110160621402323687480118363542138471890587705940686820468938196970922314786588208363966413291586104682316910109716657544057527456158407945703133796025725625793326722280214061789598291634220144706442818161971745950702544965094568533594098693010970294766651894114170399692320033700056620363036993395629966538627332112236958626664007396294327858807333945338722815431963638116159309226935950011869324106716643106866669359939970039810184288015152039141064070981018996269808643945435038165771245137982161134503863149744872540631167977026135762581018915582063805885143026656237962130464344866778881304921819268237405685426254389955484160103541803310541519132757557812828547751278627703564110087250972777094095986740931675495205223122947210551255510100906503180280344913968628258918610238494027341978928314929491618140864415070407171658966185446923625891486510884964792650469652467837915181013622463184025745983919672685218222250423337933840966870784952059017244113651879950117665990519563443241258572303582476579316491805331237250430377793174320208197589388883974482934780862186294176198037620061452690431000142921478274770734548559462182481022339994170879697671867819424901650394879539261967131341903646239570436636456481437260405630054049314265299408481245380602356546139922123489185374945498434428530260671937463561379247747751307052224993399408877917126920615149947957296345245141957126268283440678014016975860178216053584249742381490733783981160486349401187159001293845451951557125356572920730773141796811757092449562567896412326345115439208802874068369754023280499551427220731115647346497387126878357553119443815250974506333540663336644153136933326725867833368935301899236799110999147494274673318803961551158581674409358152657971309066201212131500623651019720480458808357419717403684128384901692036599354882595182157041325603129616578403385941655298234218181857298691571456130529853583580906339908849747874092894312473768963227544810610001039229303565206572722243304404056599624102984384871148433517239889199991273214931170564465949129477295729697251466533051701179501367381548606650774695427385578403636674992098793257778393556804806280736756078848306476239810990370847321212921253428307059355357965148499982121235262793155047568183851654193373094138645440223524544860527995206288112647986984737108839326710962031031572788619141841522439066557377653269439823309042449982217324273417030923665455704279785475735410283971268414876140036024355528908591436315382976972606627356341008944039115470443921635580827392755077137883809806481112826948972160529738772379589339890016849681468561456921837218885870743711431106221541343265124520306619482435969878980532923995369851634720244783774049311062889678224589778742704935921753951689825838603090649344263688023259294638852423272211600888948474388652117328701655345651286470190761405731082827401779757733072374920478878505501102736249448954152938666799270020617297177576373154945198231737094347150197164769134598473626454355899814843107062166943228565089314234234072222329351604425378248824748629048025148346470718044625053677565183551869940735084200274058133721685151389983735643949313098514979986016714624830101321237559836098279518817765829769829754475164506398135821125010776696215808027018049205833182655996923893012220010230206929390880009181058422463224027607076184553784197031443720518895335287170191406967252813904571692960536859855590773717847669521376881672132999450762826116138519679006062126380125766509399630592675023058182029505302917323632617448074551801353407841198543406028814028119725952194140786307377050180061857132381175377129991663351752035054952041692649361001065889089362998937638951184025862273260761862029250407504347351455162386818467630752128396554351718692582234870868969755269106617944459143531354966540453237985266655834561343674996850979764562418494495284159538521501498644506034848899938868234404782809300579137198309157522056574163285891080138016496176242511212470529143687064508243506995497337099923411150241878474431421523563798101271501998460754337558025344267919998739062236420596448369771506109840395293075176533079877555698834411712919472510940244053313423979260579992000691596962564313178274243469958537220431782346693620138952384195575539367581067919969385024566089138608159296050746382908578490171436132284991684316429174728680525683174594933504078159119841030103609092721469689635413784024431372271322303899996069041181114018140939651003970689578755610780890582983035837612220754121330769036543528074913719459415139609882464686217047360197457573228313876466948212864654149812729327674075537882447045494205014842259466880879113410248259050168342873328403843663596651115339197085722689697919670800485296787811926000996793924428346862293877211806694417624227670708148836320732191538915479895114973235627961502679911667708966756994119560645898218347134725624887294571886581768571072150297775423381966112094635324891908849099748967296206330178477721623711029311952292188834680028551169629536951142230507979953262114126633184706708353579886797859245665091670742806073894996858219154576164727743334347827971983700209453543121566588370983525731544785514991362507512502570316032269628425645223907293767890135482501567933985983293692373419281072281395512857296643955820151395509233686615906614294148353716435436666466329740406604103131206454322133268970595322809054506843606643397981345822795906027347366806821931937197257055742649423334448033838640753131369545529381236312645433578941286840392523494263375437389429282081488698326042890653474994593981915744085183052759137920545647942843631391053957488974624133506247461326586646728251153450868273659498356557370746300231658878080179745927514375863062699455048013489532571388408509294102407493970393226223467762467327425639478801646150212403192651150907845920556010834296216538806160117203090847300690414327900649813244460172583164259222550711832867206498680944079449676180473122324036287792359604593333596572642393230234245590564468293195212305570694487804832267503292098063258482000870652915263396110209571097938002351121210076894604692291225284178496025292670139597431884192591427258596242703940743378003059441549555422835316747471737361809841938940595950775695444131482404595964127316504895640456297095563115451340680592710633948940870772866340548688561925267456288559117001598774283288946739738710220363149541473167006776503746935871349184903374567495296809384565256526273946382218500175935809799259616415509455031105414704521294754014099046867692658016588445048091336220305617476141951027332008693835495753878305407988756085532732881067645449622816631838868217293219679126762479001737118270735991810900206303921668408015013646509317365640428971717943006797017368685077960501738320667505631681999259206488514135793002305990162563365127477584317497806161635128238221709061403513259218723361437722529413949130362389997611692891982065730077051694142170572146209203479621401874028878042363450637608193127699263969052849402587106069896837881111977155266782458322806777321915430197187720000275365716311217406408452649907825436761666704862598424438410096884873722888437099690605361887478399673763514881231599993491852894001299767861930586192267174519238157244306252085435135722094735568605515277847311022865774352972780468910360780006868486619910446229854150872334951187958032437772596050689641872572820346737078165979290499731086243891922553734943108976320427683149146591991948957444499523958700914245748012007381011811627028547079551152360710149332542589587322424741786943619564615195806163433696833073412510715185373927968454762771791527510210639882850929003542514149369952009790537788483139457876139292464714685494177849980137349414187196406929001858270833227704345713228119341084921981267026299611424373168762559913976661016034162670675109974967134674285443811729566348412180125703186081691629176111505843432987873234548487787386082531098014525356584505970061056805489825795894197493777422189305548276241830756491621832439898440347274535476391914250220024636578722164900159163448910153013522010467428101698079071301382421820489025412208129180110234957084719180249768242802566022481318506695666559703398316603644596004327059117620196027498861568501330571654940022617739715840201289561733595418543768636372878928655145728122985473286105441804899410705055552252681613240715663084571897578923618185100092884867280120697217048768035149156332040873289181065363933408543265916512941587990805473806065065080560588088255583423997065574248089472740053018718352362042218392462928670803496269512083424317968157642247422633579455183943323123505108345403412758163958503610546117137467191253730746269041768795751894728822837688420400051360447622336245167516439093733142445850771818074113556738948660096990139714979596251133743379028125581318444129149028330852853722404284567582062442275979665534560554274612939733128338149842630501530043161607323830737105245623576823138575526799090387913234364580841644840287663517184673945236887513027487537202993177908572329435802448452625210706294804033678224457741850737146689969620787136826790883451418731968889917083793034255346354424021349642962925856290709765723053351800989937183105212717943950860046816862752231606678526716051225631591103510679834870484769510081073264867515619338784301794061546454755860607815958864703751314455086094104915627053851103467955825108529235477938770601910043788627765637874127185711695114701299742967747117917886423457558553917990623383838391102411342207585193979406609846810546156385483202351904667589962092707269308270662475717387049943801265384673464241083778243800855312625964545547769227254628111741258902551043416307667950320168149622388285051092808277017714957157406044728463672518535941480261378920998502510978866915349814664154740716758306622893932201603589528762621688150601642278837105842743448925532418164720759737995571912121016780205210261597234795481182056203988915495456528287481479300393557351780743818774042318849403310792501325279865389243978172342204355458630348951026709631873402541274886744032335335995547347923669825879045224807874676711594893257212863343435973591265639650208543819081528545669085118523511713758421642150871329572117221193648698080617763261581509384267552579195193654579252218202093971370362762990029113689754956541693925100155292084795180802579588848324615140578416298956695782690532401907067513192663970144514549947591878209901909502943544290239546231178999731541313482109880017055669450496216423659397533780190145277465410917550040875602207242066994146215348334118316324150598825051752302582685970254007298980102983315742263214485581701891917125447747023085106200033559627042074339803455062074282246644797806328371453071110346600740975885335984594249402220584372400811457017400711302375048905189700792072294249859180942623940011522782424540687135127385071888994204546340941657915236995967642321622949500516660469622765321750847617174815364402370550758617641274847015006455327497700660613346609643657339058154554090496153263201631313141422344661626550444721312653652804315693937633830904654776941823865173030979023457302944294949978854479695711136446397441435901756558895425256125412371591153254635034397316667295300839245945944240542788943951951802338521997900352486862947751713089929929284668539819115045873039990421517909822364587646153128995408382865121975787667933961759496764270562697892039027205309367660250004108937049961768535139337208321393320834318113501145642871988837609425728176429787621898928902765825090129721669176855161918725662199901675268143178004152499403285048650968317896677609982096693128295162889393195972332886405998382398618758266653176927913459563444297323730529052729261917960163809022324384151112730278229935796677705509522103970428854378310244999088180255652085858657033835460461780698933734247760076189324307171397529268177512262271752172025572726887954748177550292276443445778416433632496230508751435958042191394326874178885071797038687639049578454582405798821449595885018163812618430048794510838564387583692192256677594860161013519819911886065703447948182955881526661931906770281649944611277673737733082032789271681012433869344409668109348083686676739075884994324908543568926891686721856959222313799387779774256830722512733870208335444686615266116762844534180393701258092876073791252760493518980716027360147862078248267834657133255768226695754285274516954547980750964697716446245358200095551154583410189879052723999760115829988019407314837360460974542760357015820985569290819325717862111406223920094242044143653907841754360636931701920571385886262286971044014723305167412222719627892203918062868642238275351664446231768290293591837785522067474999589334101260259941244689950823440096342851241489394539078066058945773359175958958276134791268343071538120232052982000916484765563556717369164723535374934364490998958537277502410365480595728033582511905262336054133161377504507307693749831492624809721943146381620692605544071660930726755357506459459350320576161166360368640439586930813379974915839035676243151110323399859014823079374579374680780480640948019008937971679027954493729022554524648685480736077492051092013217296021745727234766988103764851226692990462568850301211238396143729649759125275989763488974480553610856196376715470669398387354827453909993605460491233188101824989899047559857509224794838907528473067095302270846367455566999203078875047898233651498460492856823651440569661972264457334451460215324872418471026898480239912540235066190273417744687974273696586393199409615349320313325268775596836815103771793768728109311545058775903070469038707722252407747484220576321986582577822991963272185252443702786679271250199147136653566697552428073508913147755654241310675239161214557727612901382087301103722479483948274420285858516263057344087345520409176939076766650666357213878151397193089619051825169104468166608293749811988382395559997328955091633035768121067794963661785037256901754150585770725689290049773028169848375903505193831428697334853242185315313757690881884842632760154357458571732399949116609586473944440201839398643127560114736720521257959900421504421839417331455053164763409643401657992010791968997634313882792350327828858108983856951152951947255375950096833856261655813800736819796017709437360423433601389971270993235007133496573454672369457274147638876744517263422148257196922939992064636606788282154281484973512781049545967145801428170660788004884093679715552607258099498070050861220260636546463961674854974002661265087809794810615856160174842710967882041718085571094336874544482663354675041820441347234671034546940088046590870130976896738485132784740375304777744348525279658302037495153617087962475634442872233072389417012534917771581366541625734142754761100771638070268863443567087347509101904264151935012849092425853281669629967572244931515043427332010798416775062982910674082531889039953082669480162597150286493334277096009644088220794531223005022898887312477874832575453557578501168671716623563109026861382912578514811034186755972019962610245040390443377473117714030454149528965027843477710382843159404154963470768415162544815350132456532980981424070932109877086090603785773513515900479029989576129916977939392051587394236397110938927898692550995296660494191319417712685128157542599246953427204883989792243494768348510365997112612380475866329288670975119531252528643720921168276136796319263074634900171229802659852623244806831596062153274014648238388483907607959831839861444318133480415431555078957755286082797389744955298705509201879858697926342012517449157133931657470588880473047785403608822339777987256928542066069387613886551348279754762624128023380217549794577166869729239370217318351590085143431015855205114696771537697212495093019061652318135638154578650289502056192364929121823217269816725614373680738648330048925557117342391075599329786296740931359373800401253209561481968082894808319912198996783124046271551908591210692117159081956578647695364745468754711229933072536154185425835897135581798680312884470266548292218882828506397607538197833054887183798366418394485802717922557428180872004583315348734538361058674379041878166798453777766276397535229348808348698300468105433150808386554743178672178131664473260296092126465094670841335439469162520547177960161351296330856611345295691453628679503606643366471206083052841800672444512055038403131793187961149578886234972707355599284923672577231515230887955047627508702051792391967603197833364131427382700519575813897488847151034875396073424454307990383315756218369595086276033926645676916774809411551923883327265802613215171317350653411601796666305918482403804903503938914311950482962314328365766834143807417558324717398430252029274911131486538506213890523476601592953168308611734197260791296058838708463198147540794887410542338274608408515828201829301926979314569756736686451559262784836076517013608730986946977900571813124372503028781688719409030781951064678670249890400439806935322826857094129430972202924564311951953752633570189333497017452734085723729758256178362425156680468978426683187259029578957858604730648400320047419400686460280231822451242146002250225489640039035207559614654619518348064079484931454337154505344344849999525286860870896226864354217999814766256911424441234722603957472682881636543780292306061446269408975310135559356183807731464524233151638469985111192186926643688980527861276316622464583386759445323167086379767382289290303531590319950883807209303815077830320077155487410912023866469635617209644939337611878387620202125934517281756520058257310476258575109951732701994795960851019327926819058932086452661338440069418981980170001312559924303246946434977323365818249413419670682294677755140574859175306510857857521336468341697030624011576335705639666857915595331388414387284908738250721524465376892188932670552717200718861932167000152500159945417737752594354164307636400755779220088223468160857714183883222114758005571387358153165022185652756628083039347758714170268008246270851254841618723734787216634103728546356811510175476715557141920742014703369520123967359816903408615373429051447390575462801518017011530673437214017848476359837509344193276748329986962635490772072906511644696737687739622953582899461830032136419293184824748272327250505073830604303401590126526013064166635911790472498580735731620967688032199563180551921043651774280926464033298368340249411718752494946549559817513428246848801337777951710390372810959809106652070053186276458020793505498652326238317714645934366386041274800043179613332194678181107809536539661265126704495341893421103059811488766096050838477754146412639517379039142795256946001000580312767838629713414049804593047868553957581187310177373265848531198469701340125999291002868520292090376880217603691751278144545079112186777777867400033031311166463989026292318506088629436662458138591151922167011289821457148312942901520926721539660952494473644100406286838594121171404008683437807835200000029362815732728772531274786637495492552398636506305998934440887997635563454705919270085701826374871323360211968589215583407177122500053921329539516230214765238373440178748297389637686349828287991628177687152662829667730052899327241958821523316794512550681489652005987077890162364157556939673018559192951946423298545748904479442240781135277993541381979389274488423462039361532661463650382685035296815476542422243702576312922423104442931913189648816220233706726325926931859155781093954450814491835217906629836808616709736397919015383324304274701546330719552131196106091330539594788258673579578793167208864404933159561175958545450500753596649564478922379297510415646588491451769303910257196777946050945572119109033179698050203045094664098522617562981912810173179743732074969182068790843047009549421600675529057574367279754775958817327910764860717991464076843746569446791994031630618667638450073035074188407549573527147321248121321373539406737406844357294937614025671669255556304186936289546316453946763284651779056000615012686474504870972884723499394535291596279482913507789886043266192689796050762554913899069470957756672615980158423852834858036533651944048961536749709291934473338231052903853451560388926856879667689079152450923410363720371192385084021282149384770706850169824829582961698713974835602244504593245156510402537544038639481755804657438870783358279570118321002093701026724100835966933885864018892124583925056327513959993945326554143900814719458469622630388869976829989180294522503641926391470442073330545141289448458629140872946038432984328805901468720318554454597911496722744437901706700162875434817593443860482586272851030705968395976147179698918936981220297840534632905153643497740185884172305168526031329288969164484043197671272302096559767121722489739578693436946996952593867142083835391967889411634963500517980661541390894269099197128221025119864946525197648149655061996308170082972196567641103327547150803727677392705368127782763457250138830587066381464810742780393444282796236644808745258630910631402262186454004244550435100605201815657360341047462669335008067002198263832190502087870482153248065455556798763843653498780258267689410398313468242413188107391195730075580404107512079215467254719893672758296760249730190964036558214336176378456577113543475668996361179003903298179331482892014135301690839858888391297502187049439741778504374415017446862121617761877702691737757834398379460802910246164876983698609782724896179185852431156337997675678770883368203655241824395618733193780985008919111752551950086329940760406910777731875264132248400651310253610689790995673714417310348179872906018689385014719270472969577000946749047309446092855738407078138164520344077540173833770287286900165266685246001185253524379702534535465210062457293770708766116630300703759654927640393812820450290304640641637144110017183045850598727528113079499021659919499066586941875085700894293845977488683277972999624120571582760348053682202965896670773125663095827871726171519347794816275857643724499362508388424823607820091324217385520844150643900450756694445458745980549582741156871276979113427248741322565916156747868688397092708797983440694110812434232172560573245417309650867830589493066627039753679332345607250902177453318701625700361337602493083770761135683933067137857475116064356686567725406484473433793772338043991073203423362082826210718778237232302323536229606599568880245918321255653645395491615627943076402773886029863338524494069865819563211317039621645306964370408048845999849741905461078018584853691725043993414482677676906759583823157093969470000968993427271909632706980199955707597139708947648002749237473650653632593861466003808133640471418692552921230217118085351719379566166260845551805572596668694499305421593291569577040290828303313843419686551032379855818083535859152064992715849092813158178740085574374250860766834538712807656621445586103797962331697483991177870232667444525531166067267755925612514123031413829605993342902752970187314819244469510906051134555279473259963492377007712855824049831643832741353094409402159642752157551806340009847782926943562034672808058969841427364956670987128499478756446096629502962462123906540658830087018293251755853235457514830816850476790565921100365577130848427779686020307085347278116586781168088268459019424003634453531865478858801368128131055110734698744906986774060507580541144191194666311120054418021372625056497025133304087726504206093118235063076281926454903742579846223208186061507476997435171847557336255031155548129998584743417946949652442461962075842822870997635287691062786655044480154572851803832231464147754510141745421426506598688842696098109510977013079378848089024755724015315768896649927026669022591801158345282092498629331832190020790799694718058740717558988924262758424121077432310310532138011577277536655286402363829653719474736996895905667081823089518263074693680803294541214765184764393467348624120311207193998236711184436225810941060578587213751812434764672637041602896013153285095083591033417971350899293170165382881646152600392596732638841759024688244756770295730190929188692568542260243274632035003883725510700567136075437183378731638949949337894314099083550573557172693972717762709349956061789409325424173067764593702378105729895078967966569591007600208872593760391544678154691273297187483408386785564003679905591014597642390414813935306672388178286929910705389903960035317546678495790593053852558435838182397489276446820106431321292667611872396591567983966110083914242844524194791124295284862712292285859839119341335457169694261147643123718596150613042443508612990432508920023080230689182012762554824729254905532977565344535792610478551860370160589682162518220810634123145181485677985660089872978868761881960186151713877589341150841965172283625395719899667986996850582301243041768344970242464950835887647770290955404638423659771519252788586191200722659527932091343603526689310538846929404634686865468660511018451740227574057604802440652701557273384958854743297117948224080933595239701798657291924680690934968841592200732256978227450961578396462349033881095417218329513112216885361102758333895316014551056552215523586429606400294592744630910317618561456528678372833772625540711173610073539361094429522996516052619878978848669198998498481407570278707575788560539998427670450828046262960467219321135549363111446324065319250100310675841728402540707656970044153999529106708425619692455523095269670019610017586101948569890881241337395461167342909762256506848733885816922719822644536524538014460548996016927449800003015223971759131611259069278486273760013905925770665218451605606136605534563672160751370938033966193936531976343194953759918713248932957178036463710482951245273272684705102103227845321594527210706611455790698005739150068416629662980489275458933556194079312468990342683906691558872362412199742697559363241077349489069082344859625184513615957213633344030730326485679665221281794187830153753419645747942472346482968588648902016126281219256702433725104919160943920078905355768224886317397820223455105573195698639848434459539657416647530831227774303708342091022710963024020958401157895751701138901665724511276204099405411106005458968900754012424828961035681022829840885393890667436339801372579353632127525800427048962115535946037654036358630191941807157724621370046961271967784013051124473536669472485216055418578357096039390291800640176277146375325635324064257671734039409013259245958009543369240110852537907754569192492320443857711511265890512927417799449022238422896611539109207920081133477612884644003799771877937613417264401538367779242053530121867497386990133879459801140947216423445394011671619756553049182702189282974369582673092553709278158490613365695592471445972692465469082661745537434839407352868876013035755318993115359181038905003253446496692077491371454429202546968154629298619721974466536272103302022045576397151868945439986980638888243751872066600624190447597391794244271066197223844622437644582795928356926133799130353287962218721316363914823662180216623293422400438551488779572600848147476329235613354601406043477091383630541764633956537397306474528768650640608506988377414601382252137811997935109906108683758302006812799210919087169487329361332696671068162683325660400942088031319314551329866517356083470895167941035376485776190424773952808567216351250193637772605653750437134607961601159615332657193537825214725700493454485110520605064038492858048250576289234384026725481046183279520624261063990809573780825587321553506458997164466441973231716422674199138134588771838973827742335537626894237239329909477660115907742451741989300974997695638524237952396791382859560275733124081070009384854067874841599066915664589061027114423408408070530948074000016379005968652957633596777285474462331347866940459913469066576153994368936777339976099107873343301940878293987863149524709070433142534093035080545722504671080293927908390679220339209990836050295888646846216679167628152919551748788756098537528371627721838027335461880024462866855348896815644004103421277214301955286505924391443336917423863591886763251892612387981867499754955235348118167969139091309579213721002637557200645363360153673238926159594135583401569316942516068662063302915807392329205217015898997966679798120556178597261668373329888551352694648090285846100281908744153921872976787360802941908849189218077918607563335293617440025041304821166849811300894325391677514629579435979598011355359849050871087115160419110314896152659281219084200200998906884318188959052690776857197488505045875861485137012698010938092130659254400162922094102072775716327487327026386807230258264992929003957619294545176151831649798914108492661865247014128175787904258448603161272456607673737733060272065309238259025598448104367650668448009857663337254505516012153385576819425904556559241398707575379510445278276440028845769085500416699524102630007570791108452813474862491948922258419608598760625798585499017067572516706609677043321946641282526021473594423674505885778919647529580872968351982077554174219248110599523299899749532735516961918351670834830479238131397082078696492103816169442156893713633960855383308231486773792534877957262843785427118248453544632044186224466057449269257243774844816857718961471310699443390384513204840503820068217795182789205322614878246081756097037606193046469382406918012239411144368850335743412011426530184132902949348368795886130234293991996122681323332435427915555844085350010334005682371677577629728347757694364639371536167725527773520372792983819134070584188071390576334997324422332432285144009395199749170038355851164748610295741481158446977616101382361108729861433690406413260332092750215877526725835992258492513299398343768648329018273247938076166030556425260857880568571736035295029029321844611060122521484608502200139158758026159899283231701636380095419593504531517502295210018559405624973500945523289024349870657795910406594645479287624479472664518402253977780810998238293308818174399170356930366180242242855952289399271587860286848139164067169504933006306157523914159477382576200914797892206310096369387583731318424889271609143188746943300473443780320415133459233075636043273982914788270688901756567154372449169448906331297895181002962168025274455299268843761258284002711891557635276501671917364426322995980422015940085076301240948605598485058451555407363705112184376711195156652065069164920448543897272007854781407034916414995411771963030496756475604196575088529325800838230608827124947695541927865338860889123943603985745575451878043589507304034011236138091458281716459139949947110566586929680336842861055667242133193331079688248692133869632411479600796841553901096589936729180270242466206306837878185682032430182278405098238730503987079669501515449916732488753088126623282442563045106714984981840107631174273151612378054596430557234894483197055600329138589551669033092555159710420258248306322756418235664417299611960240908899740914168065631063485090360796380588436553668136631774906837724497626135101942934560178891661652879144197380910706641435601271575549355752546993138761032133331063878281486688978232500160401109507361090353984373038602298528044162835183816599033083434465140781294185790377107213801547835751612193319203770239518789845771112979646254382997620293821834039334343301660966446575085498852234144581770405414915948367078837699635458810188962001077177960697195994729748739141812712315713441564066828902135503757620941551080152406764677941959695517103779281763755088685723935216692365762982225959235070121347580926277409468134365479577329517114816420500828456241539763594882611218316905304879871206142748758661345793255110431524271395098131067239650451626406916523715566787779004053357854923416867925800136705356372256118453808483735832078529675881692456608373959544202714363843688641808430708631741966485203020401861540318507270793529322980308740936253132698067606351805918885329235328955779157917761202075334230845311915520260205131900033734226322861679744618830263976035309653366424451992566443243863568442002610228281548258087740920235166407845188277568799209620287820300196276528367698691660719775603683038768460902710334583100850042662265854878444381666844586532271264245679460401027336499822724043613380480849328069463266948597691959122143156112132619413856279426004818268750", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000000", "expectedOutput": "118715923736761084680067703430286761117120430177023969625622324918086549437001630615338319204584399810999132470948617826906484119267900061302604333802227367268856907505886019152255155839146924538649657041206335787374992659841580253558891267794302501232744687532416126221119462707038367385490133986773997303137656467810738570302805354126990425975455613965583561322428046452481608762790523073552011395912906467325492816145492336631954771650382913417034485962196687132591440720728404016609691934492375966669783728579926284533902467836411595074934957655592816020077970736506780356407069002912048300735894459716219511128214576124844493805591991490016207240482044736344043777405940292412535079620339398628332186127570543862148615382546631968848481245981638929019778118964129740657650493588508018007621670473270116549547227587142198695363017768328681532380921926225330833082290217986119407534456951279408158958958100701187197942257828873564765020598875402319712442718196551131631010577698049074970204250786209143726794704997519519418117588198705364405382025670589060945444561075373403663140688266140388792012049812990512124491104229804277387183943847699836986615172094545071910428112143024524489640402238323380993122399160394491006903945651712503828617913273261345839363005161587409170218114331941582520722665142604840851883129975389895140044509087082369712731922569746676501043038221526546400708491096760045583249983557234119367613965079189677362360556944096950200510691392076502621013561934532005627958965457160537002439828617062559462780970536364845542448101873269745944965471209597386042151261249725307771004593167037373632260501322129945498974975450403960305465278345222163577770197784582531120254237630135049986217987691029472077887378786919690433960934859552261968022850065011804514225594519218429030279589482753930562023232529207984194520517140977645318830890702636028829948330773077225760669209167589013412046164905861649262967085669917491556066689408047147439321071296188560752418074931754003336088880051305241117473382262652819800373869050614831441589742187758131287618308805125209814925312953397302440426990799025634705953808626459596334877644013050477083453265826787365351687966818648602979418992001828093943762533710146804683521754980383345752532697642820184715299475483618035236361307614078472214873836364434720461158313253388930301055927689849334093594630031698180946282940443644508550573155348947589014753435803458339885695807038779690162546754878026113564877558786409560648787933379625835443131465387711816938314671958235678407983498275760527634563667286049744489207019744550654562635829058555935775342168085292711126667158662568052271485812298734021405688526477575193868538455414811185166012144209475860845879522967393717741091927994654900784264271425167369499438059004026527862682373804453123240979790607890972579021821848769610703345545320738340030207135168894152126399073264393061066853936291053448035959929166481800852873190945835686468310404500966220054731073306404282998939295404737300645597182642276326848715880689429116542136161631977329855125664162040051296750752314059943015628370147837748807205865659780048621028683665801083177590274464930988405685594902866210763155773019659391771318379083131039879176998253004721041601463022297647267554294021323613460450046743221973195882764799204003710722519832808904627504071806642635408788825599313966833667896967614274065625140602080250128243206425128954920092344155054958233128239510858349295165949308398968400318115321699257478071970240490947160057047400286547504898273457912375986997475767721978655662516712859172006997043501377216222908119351385673884934662417648377183310944983834821937513413210070679015246160811850168390160883826492520117516453221016533946301819761480450355265741889459697808654854036020802024312774718207328532835225477146281381529054836216309232824685830048942221440907953600439436969490940641455827744129192730427902335010277637699602394047161133816027760931084080994445474537649583128979210902686714852243951139618720244257604992980511545844481581300168819218904020507868990413040331469032500251730469335779723266176768158923422170006538403920765094438657994592567729889415086791311831782362682180741171129680186639060062338980826833346437273646219821060724874766725751028523163652418657516229445593103895539028618863629189079282473776114317850250057724512668625862331975508341570335900352974166675275129350895520071619147873616955253122740590260963890046693020258232523816298741627167319308540187479215241097585124298798602465293870027426320637589164400344744098952801221367380772876798817030208044714307802035794010410428694963480308631842658212087433291749701281913796211064548948935652115217244769145091168944026033438425157620609777997708975587358688098632576291377802045065359885994557663496610404478842902228067387774636196260443020058835294713736431112104476188759545483268825576845074938410464604996556213737439639115347770589177346383050235313743659055776778996666667580351463254442481117424934063982163820520339446685497794166567584998895175206874480722611707968791854433281470973144887941320192129450420939876022378051446926895544914166644294688249989397307565925717205559223682128148440638302983411612835707010093210938613991071252127181418091156710827618789529448497171796880605598340359580686440295626541583496858598004045598177000502860067766415145229339906491452032287301403638503722768407091423750634401262223283542858078305211848614323109665499888157425468957043812058837250197151724897672151230363775670411196181723905444172696342264979181498142697640270232497319834649275424680997829103160297104097826713331658051537254400994179275745504570661032969191459094392553177684576794236823215517120022863643880327609271329359558613925866390408572013078896298731322074839966872745309621833595552155464770853895494733375481891411857105457374409047172631616133729828351103610978781171963150483651521194954000266786320295647365085674358400330704312151961340465511790628980120624347948078061282778868422616247242639477988584306385708858371001777605652622839297128883027845351754766576521801867276201906485029919698671282414796381808386118216423193626423425338795358521035202893330602872639128745191176048953972419425388544060181552984690695230949733150916927351498008684598048496413141988596109360306408442419508065931834052233203495336924593471829250175745867964416038847311705091588754276324471932563542865993167617358145633305515618162143526646857448983757559943111782852024567726701395016159523030551732342406940566690249505840648466606307373175259009034200800658810714221698828011223713222706567035321919848947698722236958512266124484176155222105967074084075734671857448466184664596754877271593908191875281584825138172145570874462278798365375043294216548716440915552615659103994572246446536081313218953849192866037006486524743870943790282890761980341012552373830656399363086789559514097812371090192795536943080259747459670141749523489475887246716452314211463523099768462971421312398772364414032137870786718432671389013461091214789418749204005402907768474406022891467746355712407168557131578589984394519333769863924548852194334287692951695611928049408207001305112499545643741947046244535929310105215945690603579930036519994362740632733038166151144974935709692893009819496687864052748649982500564318494978516255121401319224662266999641596248646360267859980546364218856135220358352079090025947250978819942078639218118028441909067608264436137217066484600695784253995807092126524098431083573603608906145752348674052535237243730106003318102835192702701558213005442798443022109444141983221095419402726136042844584545191638242268871945277253979757591854384892891624825688338799453444497547221596846847277166565104364986508098187850454393178254620695684350429676630916648321210651593228320392928923172781381385395708892043734389580770458924509319682044778869867952031360211305374532359090814935621620174927294523773253599721182556717332137596697514857481106258423261290488243078850550110090313086985934093347849612316012162750057784308228375868608627454397709616354224882506089743004259700470820325880731187063903495179302079118197761511515793108687922808835695055219935320752152666286447987030252914404414567220425274761080199730052156138950392934416277837623419121775847316707611388867223948031158235364851516904852597753085756310507493153721439231862276681989200014664377941443704095221485709067616197524603942486475900538576920031416964650114465447701403720812497741779826902126465509164494575453710635670695984742677373062966763895566896643357870335651069466726986530623169821569361501086508723940448240499503673484056798970135080665152963493318394949918207506784564103651011252177553106390819614522275945287693628752623764732563505093511915883821331026868835593957852106852927103305718043526784564343043507988785640226918344031341359270600725719003041145796156596153231426424942030534715849336910576406712468969858832741665146080428969119751788107878343756953318554202674504907772163411154359088023716630202552917143157177182562954560874570026873723001771312935514580907543711545384034825538699962997409832765436560077982758817976325906256041804021756096475397801945836236905387075292251289235022043663568901684972051430881071419747644292777410562965701869475891416806847813881523528748331915172760154979646998658108737834347428678659052387098737913487450307335505774606331015514569637439430214035621840762231842869461234130654584213706980790782083165132445040626983218909784571737612367437895737886356415098496010264856749262133319613287819320597175528684246002485247872821377454240410813582803285383003539300988735878288316566686869532335751798626438953250583144278347320867600333177374399374266394157140933145979983774867846065419919188266759771291766353737638171993481223170946988480969991066176900991902820874969708981579628122239327683613999981527051083903343754779997852857020083802036647452345735805874704925726848199997195050998734165242231856570646489933720191223366779986317978109268802977577015598140037106439382507135957956145043553724431106064797458044344491807339646283686690520505379452184641256773701140503940197998742932319146263257897848142004545239908084564931802706884564757398196451792926573459258939498978551585129295485254472618707801498298789311348009171033943201942524115721370574136505641900615472105814052724257600780976882573255765258627754473645519473667879465899760127782914871027919720547828868931070062212915897014921918973297535329447733879822313471232051418375140770152104812231048333115788015330953529208360946813475609931698166369314608662272024222166256441383412400713130069705341895048238492011953873887854001929527895610864058610314111645285182064231099234956946197130125819402870320338218918190831250930066658679079525713229004365593522265478069638577435360642264795997093176954615322060185022924830054889944347177872190893663908077683459633285497780613165062299023455580288831864597464979920725296073827310715624935383487105497158801707750033925410513763132534726121959313857771724168243969556576986136898059386293550287415794805921051742768207087201129697335689935595520668031630997410399050047724295484458501335153115727794367638513350015673945656126569265074527587418707651485580924993287558509033322560535656364611316942036360909612590281206556218596155378525633001813182924428935638305213788648984937098738896385899777584052645486719936591000597725436280888242503354137276274037209218768684664523260899480838909180431703601262791132241631645055156854968824020637448828999829732783435840709939016253412922463546628298170695733291101443585634876744059547566011785697067339645002890803488554293436064462442714136335864636790353169946481339295252848923639606595167525506087905509062620250795341962035593883419084918286236408138104900495319979343745995898962479085001358573917872363451069454727114746588275563319981205628654151035114131821114455972750630018486796052580807875160832728120916122823848270174023822409209950654743673194327261876228105353539726343540320139148584632701395060683438365284067115658359879598891341860231660603606002180710370645013775782540779011547227160171834731877608714702815193097556642803967419402008887531355930116596917231712902776968662447448467732757531707060320741255454222030262681237388694850079305756559742590615115646774761325214861808646150894145726114896045482891760385895779915512218515189656297685551458121615803030626604809333568529815865086473403584231671593771501061845484389120227458857912500979446201029102403043591803325616534896020422172773185192138054586110697725895802448440414837867348950465839877999797167397688867685854410826996737865383061015526270945322243860523028017317447469846349483694521142799864701331703710327570884556826168220702903319251472678291101166143420916378130483443645490467301014522255855898773456404742135752834964255616631235964306927852146092064616401064025200699733289333500123757776959145652690098777839337680531889072383827086647478726432763047087756708676267674793846257295982440364363404965176987032565534659586980931695189794896890276116934579125554316832116873409802905718483694771151103102612913915096385739671379593460253767887475714610283094443198577514155085542943336724631231202050286465823910693462378746602918595178484860833879618074031334787341399821768811087311781276760528187446187166514910550512180467651561861789677163717456589500719156535330214569110656138279289902219200001163031992240286276428267536703037866026059007100413415013501976714454984010362632206267370160733058711861552322692890632568605988471569842972690470045247167133727515979473632367381090472609136756515987285216542549789409674858338587802188397091717697058208175906682331080756497017526459919492121424385349870960538606073621389528688789787554346564287339159506771621227169282298389535794588239167992395458365340289088220342725225132885206207431683290629839110803323580122456165182157118248157745528405061688123324866206875537641896425828568960670266879062428607901425506381324704927518087204095588531604349037507036529787254618844613086606008435197529917828626591697246566174033981454820575606547915980935177276340226832216093161228881043520903147097300129649844156037383271733598952881125477011963979909048615672312484175166396459122746248495457285325060629348552147853146879898479255136684514886396366897177473153099349745109530096907644253086771212220087654182883561959620082649258517267167285841415235344216636348455844689183508820429297124004136400937869487005397002235769611217362256697321848732755231853794583671445645702844144385585080584951791781926051838541206579614548262700185551854009263091345371448067729451411642615937040084540474195432416042751615562590589599275645906796860780826399678833597453267127493029832858005915819117571959975375329481753082223042515402956718425082495182444392072930278184984364734720458970359381262094175169307705692212935613721441432234681100839644309252937153529395767067585340864925793640755995654010341962862966765067855628535853607279097645221567875405257319893690778043865559936197007937277790696445466240369044597843815662026020915980512889190998240023525400454132438404517199127496358759920012768134321597225449370217238359697558857113798116389801678955560736087510090795788399505551389993617843603998780964812307853340727318186916348824633142500825572027224003513503833241054070863824904494593241446182868926567315868917055200739886387896549518984963731098509614438206877159811508320696389237472908569496054874623873523858712062797745371108937662159889659671902251497708295271118893223360539821535581818677965719497854200748146984208714981237539300587586508512356377860469528046460057408828798960259060682668113000576156507156264141713577246915450128525993359505767515910256393125897998627271158118944089156486484427042849221609437144312958104386599140203012594781181528821277272545076020278971020717271036024160934598881181389765227597302261315372592382074969170109002063113125113474870806470311904282200997076123952153957029499634436076501497341976863559111364742508870132051527281991134686074878441805951552521762897409735110473268358575034605499868097350025846432181565927371807847572980154530931018851041470855412982638367486737827066196863417794939010382114847003605188025483582312071898376305861461665872379533139427909890112313108442832327761357721671300943435856367070889598539342716034096295358470864571682522497422637304607032421999633098549044480660633577501507981346081933436481493572021072466693783618298923710222343337483088929573751873443505726085416418409282888405892063542818241628344819419379816348181387452247390313651801893524719109349734846373033278016616241713608339898146728343805425899216806267904566929485098726744255279788278706685003962442832193532662729012547202190631904946692483987279196250126833465646758199672859991856303803518998687234847591357723275566218531916926995799174758863701521404741982484425924084412562637798127782830232973937407847625245070148061886410930274218925789221766511980498811182562341697898578894903995792733269179108302963999183196362725131228190718267053725163315138826360991796606329221217731619841472184758430050975805385578598313556827971761814056251248079611672557440228874683928646393606193490800646426632141376682842582038759085891509478777341010075088849954495489309577326219013495953682534603842941390597916294978251886608045113090652937510908031142079353014581239783708432765638769871691585057609584169495870508861186068162129056629435972278777705353273851477654778626049118629050322916951860158877074933649938893041146706521440991550815739677671471095666006638099949544422888322864839734973353969345144831454506501386073990416397772342994522171427197884307998921752917554208596180189740808372702386772022101425119024694097388827985334004319149315928443253922125985456344899622535550637361536561410632944285812836469387691738731829686548649085371762359817190879830224733769670011872599055352702766023458753211410033558574855860766524754437333027412367354366193142379349794453227317420655096255240398734045953797043873929643709725435328403168380619404386932566863450862014998186131926338880123312435648092243463934516269690025940969654371276378334119840466800714041610152195073088704321621317758817919608952523938697982564811029389209950371874488297938059780457600085517936268913499371477159570833275600776783436075904667100187653855907168614145696249986457485204563621403737636738976282543153985456651342685038442927074871107493483938032867729288932472354933318271287589300477239702958966172028150787888548008136031168704458489345416853486220726989839667969378001332595964190788417478364920346007138965329604505440041410887068420572013486372031042340107804293115752842001579676632294575084128896046953720594707245380419269605594904176348199214512146730059327546614866386332116877038094993184663713365391854323574605979407996120746316374841568014504625490280126922971730012409753554671337399259576522601816954406824327000886945662970307271168376519545146087577330820901653627881592980157495154827195077014403812703285061500073318222351205303247589239849093362758983933545327138609910873660215131327101780154677291242761520846690183474863060667976608368242919234119035051919102225374429475957992475468391300856763454713812622532170472330402084190863404392751118840991810811311045388057864629577326067782846333571185204294500316804853116007651806767715842608994771581882442064737110540560763594258776416864289590628748409553306087034543794466122876890971030326087769075579031635838600044198707052385061624903671926368829152061377367706792632172989386214515465254218131486994450335223599103093979075478714390939050612043357886401415342850472340723377845082120794582957769315839379019182978477855487619060975654625200072714785286219427895597912581051257129158053186567715046496407485946516228343300638523936306864917864185076500771116924423459060220792025412518120508873328062092017528006176121698771404071295514735937093155225358523511254454212110697050580417795897812500770671259227168587989016256892599074391834090489365490223909461601186419174711933649586487502180139096282412479108793390568985359905577981017782230742047045482648534260591816102171383797867712996512143564146131347666361569426804173514357146117853090090756447079238304000151952292739081075691798395996578844835232498883251121932325465777500875410766719975506596164586141852331566523009063157932710692273147314372523277072170570342370838394426439104352671205508060589418660505047015140390606748100033850767469256193640564723233044449197548841585656701796248669112777932942990836539974665639727728638352202228216168203959516794290150550674823810341675856955114919825035580254308297398098502258278398285013330061341001803681888975699967529828034485976174616663125965680180391402719253666576394221814513734068610745994177940229058255049143523672108394255785664918109177765704689559251801853539803434017833624337279931970630162978335954299354806972872939580571294867188264770119628344752666563932119092292039098128650116361199879864695881367844800341442227854518438635686969026098037736147220763943561176195597393928231562789661423119779505934760440749183776107891241506425636792409361678828893415566277688582749018010959914611064137090759163350479579393674759344791599916191632661381945703248103213010138367910173204536533803268087103220444123741980446513327838615005952766994098827714069727642289580700524505965402830157188014480437182751567899957465570604381546887525278399447977874958714009504345516020237821125911814036870411995370452479572884489964835756583256618779671654509839513966495295333060679634374225112511029895093714199682588905890447520382400272671297589305586990246277696612165574588829812673918892957219103937137747491872489208935415045376116840671488997873707753520877867375968414301086659455147869056962239940711551428009144972130805066001076735678744311548096673989781716155966740866108081614283895057459120323318434316747687979864323442634971068461440205046704138160293704977040392641585786517881176988004024495925097180062565801288741426391991898878177710372396202766487413400198898835349477571101191374574485429809427817573943252493218480408804644547456193777125693532340782671348920515204284747704976880539783685158987967116073827966930443624253146307513579424354700638993788867259748651992155468120877434110910125578946519733211985443576413218497435392708625912676871878365637118707351857297066769786648379212364397674104848513887054263977495871131578222387023593235158803703513210182685487844669093335216302845333167332248863322947586880046948896788575542027088070217100483733367229112956165614935156235468746705410513673581913209193000560197987996029727532967324185823599646270197371849020869224843750646372834567090516784768863992268186482303131925646525459318896890920988977958776135799601680112210095050295014283232020535000761470629983214352597070255762722608042967373336524954155176094532867085812603715820814652873181829439789089711404961835952253337377843190247023508121429613647053920172068222968666380009799359471855060414320469647388410433576316388517806695758441364424754407848093517813120546404472715124440807712332056030998317071980428199828129820632192790770411404968385176750175325685976302955523535902799574536624200357933681000320720691838386714162212339082314712489233092762670181009257245621698898800845845491205491041785197237842058827141632251988403157229198772047882922262163167933746626890500210379610042799322451682750238037006887274696146117757719666264647768315328559310771014213017269408339727442864567098803910697490831146470685071953895620071706530467196459798033485270018647448739406085207300625925612776895737798361574485220232349531883227391554914702100263601945396060560915130743203895962518172306363528537136030887013261657996307742542378067891798064851846349989104571450532661943026734660098692231861216187908696351318895406544301073555399285485543886396070649829719985618172353714399184071540082357589950993182467477857340839138598699699471843845952647210391815916065583191839928896879310425112798997750769955515773462076542622845498283978002235772352896925963794826934738758903911755251338894092833786399872133208744131353842571570270293218118231206736016100683151197029827630676123466891931862441190729353423193156770504400268242904814281897113863432514530363332380839433371946719801027719438544889903922642240550180539266363934306863095915128862324338550960183779602230960157447624226943165764944653322501886668481709641505408121605988937995951897375857314372220955277673103718956132370619041288818423763814969285308042053060520510616289724358944333178848620758160086755463781870245221797985965774225404986557663444796454123943035260199384520575038506541186393488877955874252501611603961215880389813827582054535123010451200165530378100340228900957513632245704844172076399514277606161016073747417152609856156069618384638363909508553773986785610586805372377738148908528824418079056836328971446136469182940074168333286661053976105031936438897767558897477757431631088585977239010758398860947779908741705313566541428561668739472914048135743320473030201140085780005581792572660320488829743560189124469211837729551572262232225500683686519878610803239672118042472848638556489944321122539973271139333649819875307350647248580621488624353441351331441998946586279910108095129006443217549428947359636390034368044983172868346586275688333035530229792943412108553646749718648463015859834578806143318857480736711043751054212018302189075084356564258916446606345976645481423369310172639206220241668875967176052619760247658366875616838273343981771818401333676801469711444741196579415674828593957960356144990688030020859265638267310615509110524448069585360525112635203102115299487199222961564044538732939329046652734682855108077332637662310715222632866829452375522270587362330331289804056470704416038397193076389530218624918069830631920058875770760970065105706238420603676055216875044121818310523399824299503961805959293428644629625216558830697400768540819715154113377819593143755347117879478900050137021612766242603402029679438016509061572672013478404178459643218279439518639198206018279924828138029066628533444535194634564271594783719670008479353426644062089860467345233636749169164416098185387617492357219384727083867918539481311606409230300617113979688886329173934569976234547551579253143563319677516477656399382845665799717975302662596378402555941855838334593420239894654560159219746019098737416332278962800758996790183792681668766725482791521842586459618584248413969164663597224776077145035329252945450335545083805664401550072810774765355717047063324310020047116431801343766896462908345434997160625229024187793094032226867597244964303267933358151210579172046889174133722364456078515463343461680441053613152627512058039189945701478029234944807138097924511876176973542974828525105026224821479326095044937113370504500052801223998339223794459159122735720708359404143779041413576507031354033529216252113014129850030333059972285181483195521978807147217083841317501996133891273256594322194339422120599658691323523071557458968219589212844843665064280207553709183166712381779336936805319631132322449792208403330635743259674354038477421088232939032998648573861064099356295278828967933514761769273100848071975140178267417225448761518888353704202150613286237689955266066146664506175086850133755603520411358969892665946589756109779057773229186628679843581733365851395814259628353173881876220615361422095071550828173390457045507841306423580219012141620371107586904693512834912091622165587387954370909742733024942425335311737028183564044043682881115903758546006660833204341464226512854035433300197627985192897302811276233609380001820714941315546941389787529275805515241156801573330777172098990528011679296277079258702702221984037076296468201156382779484422393475907430327066867572583340747941648447234275087272983539811644257616428723740442624210989995061421517876861560050582470126716412787593289455105586025794598971461584720440651290549933047562291169412962497356060275799014173418580047238144845444501153459040382787300759956597887964538206410470585346040821936874523535169488872654101179599499166528885342645497479063799329785878079647886904604781707489334798303758772664135283847799848381898849911449786089555063211961452185623796541803148915922703642565046985216403239694115454059845785847856818201155358743690223381156485744466415627351700062254758921928640199626056284532323414094504937508636096532334393157717664884346089432835853666436897141133085423839845578458483543274694758917280672222268903839636312791956842335914763453782567978160856793754059033663163896125327925777528981059930393226078948394178138905664658378900694129302821957365836814218495851805694229837759316534675460108341145249358051401509003871970497041435191030012020423614119369784804147573886903819830830766630831876592478866262934056034136400980980705145603195149126803171226349384949407643153451952046665409124764248978558392981293588993946423409336440638234176853984092514505557062318806116453845207170949579432198214490480787533369298266058876414487214007229259734021844551039669129547122479993071474382613439424746016228267416224459830942181465581215485879341077340837455043215503292564596156225173768322477099778625012087070455399294540428934963279925179438019712890636350316074081649602057419358306336511450042916508195774463842460858964762922592782617614748869314615343720729296299887563230567482729511750003881455318826992713985688784922811124669900170495665324948545771262254445744964410261239573140471967335999122401898495204553765869283273737288146387214677011089159486047056746520839269694521776143693259202320388023090836048211586749297421705260961332114162172235895921532849203162204608356092618193858889426107493059009444082529848627416978497496690353092835587081936866783691617910958942299218959494478965864248397520780299111837915816135196981008005548842323207531425207675558317710140401335335380795501811010127983753963770078706342106046719115364287048366335832307863985366215145609374308006073354709857758550770384856749930053056855815182115287980416993894441364177199493050470272144999220336617430991280400750904665817434347315962998582745263115919182238206397901861741307906699436926916954551897398960321999034256291933113341088488149715461383772098684981655847431741875343734343936977435827247801747585507635835971102516658515162628488967412901627792100900764631208390417095239794516023067587198783672663750414948382236525851433895405518853647646899896279110842653709187487984705133242288760517768581131959778115468035918226520646775471297292234075628093281178410011965682667650418995969190590984935345233857577614475288718093634023356287280317141810219053825818908529339895950489060040737993544558678559443221800186162843453370692842539643479175534175164512038418798244113958291294885466256136702309607130629146248612716758419727048854949192761375740697709587496924521370821602940471096385506582569281419784448689276016080550230289725142615887898511521735371907469043783995287928609185056533262620923936884336512532554547889784155585072309777711516977336748969436422239523530400883620593023379202182362667257999654236025989178645094300916181866294496514713006625289768664568053026901738241623562678800646583376813245116419774236350732924265208563803013517378420947429123268614240369702102786836136749243865590832807623327897749364867250517706861942850177999147945200315508986120104415271050016000464703959363613222468501764774614078482001158737541810592773554124489722919322311458830894870184327009054761299546222436558855790568445701682031267304029662012113279998618933011476963752073257388717156133492193372391752677543234550132562770422443255738752163922166709617393045443665099407527600175884628059143503781502526067278300359877649301076152154114803562932388807301997583344587386358547395450211110821416587174316413832730086169791279410926144342884060124224314310701109143121973615544120025291443846723763693445834834265072561997973415519475013711369914513310689752770424483805022800372698643092433028536233551498063209804431577208688433692351835295798520578745583850298471027799895392380748405329905871915727851128299384671082524317875035771464251586313443032481396354694826951355216994546534523459498655088522081835844930357176517683354025897188594163783712795923201132833190766421205154830198911867205844894508350159789372748302414714300859959967735544880046135909962216110585451320155624267664528145371803394023866670474835448993230573791165086633448526668276007629846299655237635290464777755790640215481558452067019168488122471030700927281110125396148017990200582856866817850912749901153347293474990503546469437960556050130988348390848212004811965592710505720588758469413108932551058836168936553690190185456593781710250842508312531193356330898135304596093041700393981145345983718446554034915710880240024254789548221178968447989769602806267487977171298545713244522085837721525027622162067789402759368726362907372932050910813015283789955674597600071369145731985618228929363462358623613691513600410796598042768242301121277496734791585084391967773945823094187735178715898821358366776607682242619789152730769631936793898630830016719476994229031709224271516966807522335696526972078232371147775753597886898536303180108868377472218691993015560899263838832845039474606484271478206853000059077313244984352320695843251337198254091969931265472576903772176455386780926920977908468428831028736090679040045331174472513651913702637039227605914372005955164788310221969731988536827965709304194647508373264970499539062902963868065136202705852540870179315479440293928698209726459505729787786284181794898161333067148201012301793882808618185511633387100543710555878487389141881174509943608366026566267635230357712522667035612674137015354349372049697441135951874072757906383569113693331859826445491919101611776581167170666570286654156194828042312728342038430669053168305907483854505051259960816720510359075000106307580512905867635759032998182409851898247756131907047291636624002511905557765734411502751147371264093812270418001732251334543739667411577540253243381617687169423597858070387794393305619092703451641080297884292913942402768131428176479135063019515681381590826458334650586328432116443970759013751758348439782962570882321594733385584769419427339155189216999375102309797994529292502195802296616554629244439374136426155811582745996371831522277437976598878906826100076552993357146400782704768034406053303237393275893238587228523674750088171229570156561023763870962759098561831778029908695039131397186082617402473883595286829467915641828813161680938000514709667882904297970312814748770131653242111655522197520326842096393116106434432552464344790829103731259014371057231016095683248741266913524371038156398000638750871369513002800553722027617566420361875811770690452532059630012397502582517800909942349564101193929011935674234139582807905606878071170757582837307839703929940227835796501540427097203811799072996669856557885728677380342011338746823421150397794600169675447323215897766803260385936742643615324131968204948516113291420382672814062563393995591038024764176626651780222857358268881327474866551914549384993232371107355854684090991319191209845277495824404467475309081942400615419934742215234816593637775800950535607874804720319525108973198374673244895829982652130359984910609829499697288662079213105175888480628453721266148357528115278495203855804967811978832698012753873410678965757347746653443645885642391927142895845832352281992266726460630327027129946318506480729660731634444636484455554142198118453172426997791311294156968205371718698473328524776169826370208139717410369760505856372257086920511500516894037589178824922315434587129085909616532642590008238875771303659598619054239961829357839806327416491354330809172228113099408442832320295240316572573216003814929738252516899966361840703239457009110692482883483118146541594920073727778308090265335120607850965169686892912399677265231598079240998000701344098356652781508709160975441127140318589031799427116413048421323116996697438747163095279092411415783387737874676129666538188920164918599936397820094730730435387171749158164075162359307335933910685087124604663929979486880116934208667434967489570058184943809936151913918916317398734444843299105010672255967272370740804570854642195801594650495111598258100776619526134427420139903834974517817570021735090353989736886203417363676189718098319704045130097751599903404603496174852994634360125303839416122882629424993112043319822397828446199422158975505059559504690450800003811218588344390764665437183075910825981530453651968516074954609822688722449702774623015744737654344078952743902739845133997326614455055220276106556231929181919902369047942416988624071266222275463710374799861580255239900311353413641605590753918067325888581414742153907446714686528939615564985447133959510574959657504030022063731977621289143227980825047280333954967918742889974555468612775000670587856758044672691560033455278915516456678924274216548932890962119775935496447708236156843597537339724700297067454891830973402195550020474222447605884187413258092500694156777194293373255373869792266876636014216831281932425741845283238070595931580009320280046378866349285667857995315031521328514475802674696543735802234713074654791104783942714532385004645262338598193288249971448169706427377472055792419446578004399331478517839697088002989812106468599356230728330803677220510594074671456566004558457832961946648561633161383167630441476757903568243413000712228359607967770406093020647050687104435500348424528071057163779209642447477443441657039042472070720203174494014110539988400931110393427808063480909474452052592372692380987343228711644614101503180334753825942436938217638037021853946992862722206251767489461896135215599820599015535632964954795042824593026658389775003095662813310909397244309307127936478184125211879758143937677459138297448188569822632311494272800074946646866539351908139801169801620621498316711562944455263002084829739471227039191615945201784264235479706249282571162451237567510736686320510283153354018276505592463503904008207280400846673721842494479721555366009761376402942196776145113408092509290085643437865270218841556176450212862293155869901252275081671994398342616335611836154325366446915919518752005082777976686393105617107537575793231329231231290973257635027668149431499052547271021695196882398321952734026051902741183776073868284874805391312581287060850986863624778979898716474698533807343246525499284010393169859485362336767803442974444302554420752769927177289332940603608776393651447712090700086189433948589893216697519415292153684217383238199776773610036254897271580024891673669845304865832951367955006210637008843891901128731685826193745358259025672972903533866640604772773257556987005733748017258604711789510845052649177537568591223891944114554050381020232784033497502875778847730226334321369991111407066454775550916545669601736912641855207104868234774906192751764289535419477076872786470050368894402678238969604973727211964524122739603426831484051408443407626000451368816247832989686881966882618786370535279343383416885117623829261842749345274655320460576594389234238284441886498528731480436313074911973245245734110775466116039430478370537040156826153532888289426021867770918244882736565233976960763801416451178388812473460116096384134353359169632584049468561599990296128917280311988078534935148391114428262486711229615593811191903587439510328379519650734081306237152327939735327496063871460594003236994626218654043830718029076191177775045273955211717352905390459900314849564428145070112884221743103486170531726034257453177821386555900689368001234964844645372877327582496308707435717876998240748162816167199222886226068395472999244394127370569513827568267592819759602802401456439128271496315327733671903475855792193074659047648778055609377379026442861395379238254914177875533012890110660488993231502882925505414394741108792449168018088683765590443427753951314192261531738612618110475411941475218009996486719504512672320963505555953345481578299465091485711930611508810227632312922862605628219652732704817616518564710008263831868571975335797768769381633240219557759019395904181694961103165430563723621730975051223223023066404192025218810174570751235336026530610127759294875602263894547156144618813904761101577092419913767027915915379349174499843900832276186975189038204299125825475276938074263358086472664590464899314259944288269531374213077349398790482717735288251288214261576304013948896231771605275842143052968028431894303499016307767718741023832989986969776347017714018403094574251792417884385629808433365306390131735802603705736921500331752002567408199711617152003799840692042238391334888997905358638130643376399709423343990435525193313177299763123632392588489397735835978077274653635180010159923993299217545124225609133978479050983983805308857084446262196202270444379568481268907757874116577819915540138138226817982306310267145383949867920427383907665812102145635049517311543557246049895491460212798049790780010116956099986211844288399130675781955683000598151878226787507908716735638779893812302661627239418086351919391375676195969357979524611514345966718251696051682257837388794207611394338484366811658746748186386390932268079468294820781774478302397512852076599510884141793943995962021506130924168890284600686231536361757098806081924490682054143339387925351999296737850570200650466876971000869880206877092054942838187455724122469186767614677905369515664223115314352900865752960788503520511921737146492281240561264162438068191389501804274147763276220081099745798127170945268329723424853079415215412960516176870976299944661090940725717349621242624155344199047584008318000939234455662766194523234568087495745724467362811122749606341889376093992164746179754007524375490494973550222396178222669361751049312025252244178196803608568178309002379005874920138029432065760126810628534775161095857918637419452161620478424979531498847407180518552583727904304887594774828535489267138986658957555384973617009728252691423277235596562412532233265787044403672473067435456776348076202366703617854136930953719745176193215161012776423398141971353410459664398971134774391932524112405641839254165398043512424257694142725176860612121517563794247596538730182222401854415490630275026581056274474941846868035078191483416384961982873630203449244521562371654969852028264561253082303584643442704303069312943138552485444510475244057908625272431912018528710656623774015179136499145462448337966169872956442512563225144228157605986333132379128564687763828240953550374369836282997744218120348308004584785409584621664255861168455371861692005410221047046201762725671666748254641648254010925914719982299811273774484130820011617381308475405182135221696781940542525343818946248206459316154961569986683467136917433051967782350114134240174053274478221703088047278231744614867142452862174519948213428439105553419192631665720550060693495950440730572901470530527235693612972950705768997466408609335869739548304002938512114093484247355957630805047787324367399621457901872220607709911430260086446302309188997183542626800699495222963588330264922121007153605295078569287667571907387327282685223375661498206458200183954220096196741787611328023102935343897944497842050762154203213631149903788861526094581920930990022246414357092248236923859053859917672943596214480976024689492721666500672002277641557608370979526972970546903893268287132832798925291070694707660886754642712804064559495212048186194210452353076291986448914416722237810470824430748065455841891831646167161116097244569863521445427439484562359277005802501230002576737599537095068327739889035738176977187951053430041029218082147860317780562176548053821899209217428031284669783683611560423159818831805691590694163556430099186911693733302476271374096791903013361080021537214188669653454728942014174676226958394119972525815628451937717997154055629990779347655815855413573967247272383719791879389144160811229168639710215288776620957062643196915733722144948583624858263130282208111526733709947831697012107309510920418600584516019743087095491918604263130898283280529255288702655342338962942066919674594574454552830197765381541634878394335296220961918706776959751276256355142565018157152301387885195925478976327046378232414219171940826586044825188194974577783272707149048078786904198642025930620697879963822123236779850479814118112707105716491231978662645676385916622001181872097082799749650458098867257386107391856065814406889559568851641700229908179308445733565987630369273807175370272511216100294058733096950670989181199427513648665920758280200106475705612505839254373032361140818447302483798555078975375542944259892346282143074071958452617456655806818980944140527542944844417660810657809656815484269807916301302590863973551293781231169312232521747659935527386793279761299499914133640253969916523788483288679635702638581508296156106028072026016942676228679567551831092499345581196296369964839309175635601446523045893996783856573316261304531929135898790270982276182317819551992336678351845943479090446338747736045406727158222773615239989479199460413428356738979591346484784713157752782871710849756231108851247397466819380618258298413443701790154308668958473558045835172661571872859103563009110167678346371562378214307556004130113582037595255791491468146129030491860556326658800071731290580449560718722959635436635959644483863146326707735279064523398668685762896006412654540391783032771556552347447522639110656552763182305466576472034209041002876249564736124325856136938215225149496475751920923460083094743895564782199642757867176637299396619299993750252866774931544435006808623990213459810243657350026757221690234961392519439835548278407175490192824184207102794041916896572607511090094405246410622916302963373988316670638616287669792810956048851203179389890348521757024770986881257348609157433827781664116046916359397476845937414840660661526373087186490426513389636913276000201940648806549101262010631839699419409776502368077446498356408482309760665400592146537669611880712069203336416650134761013658672810120568520330469421611540555360144658825115045616089100365982863732870681934729899219528744309849614578145886870394131498708275138274433784399585104941940889456819209510664081177299176580814229923557058708706606863577464679856118911441978971419962945293727473496064284123902199313202361399018770307647097761059693813145381588029196859294654352954007197503593979622247607078115188044225576423266253484059128422891763572978830623495104818732681159581523458402353640125493471471533326750138575512322642203561076571040961272362984499650137276919637607308387112538318088100378369255356786377909206595678869049480664838355912379813050349422323029436174959407882751410844678442788311867636269160108144930200607328288632043520725954436874322542954750312585120477556287560730007801296793614483266712636010083204906533311164435085561608657639913692075347594703238572264351946926233241762713825275247641211140633716803267759566923652069497134523144429686929857255856859757690779760895282367642144140984345853849078472447686187180280599710779457176371870859200681191521442310863998045544127616719916481304544714268076045470036204114984039196410271392981100730990149890604005908734729510990529511472178357010844804116306464043168563340528087263929720434786195970797979397366196525389430321552768068262910711776521136230997199203631108507977669399501444566177659104425203060681414950609662508094809425658327899418751566925138291338072471540440195733760907879222450682483580681054933022399314254048940786849728027443256766343528123384504371763020831989913922384291026349601899404653665387482166727806024843308453988944170857304451476681939662919778553439424506886454681736982689772688151973752641009613404495402304920516795778697612003397225099730000788017515964599084435323943139325321738629409666746140110289713719791192466716560811857671593944554279741334386275249647334565397487059683815322973767251931169517290538151239935548858635564152249853395367473224900110518852723974780382571559409381450701906250058451806265560700780724449928640394923512722203496520361599019662255768506937674742499449289180393439588273052691847370229867219698372345030428734601576576415946053273797730461599880816624514722663204361055885824469115352266331359819727267567980941815034246381155850063828095326967998582890742361029084258074271223921057521937513763379780006855230779788290094672744919831605951937137033674552601054807603041507793694819142801245854672581641690050588338572333368080642231152063804613270710786855574071220393275421080245918344379888682792885321297882783250467591314663583598255876589732963622576409291399753956924608512388326621066322855449661824174630951837352160602622948822272383309219647576369829551666829444134861302635090383341661648243317721108165830366922933775518903291551908689837976742496808214633578661572777658923273989648736083116201106692853653520920333193450554734022385374526651806828295282729506902086950507071155697494928663733872568553304177512073410860555712683329531725978961792367148412363050455094613687424189676058392592291483410686558928378887923576936674616840981575820603663144304335103536932203376905030089772610625834467959910228267104791478749830141117087098048556409863966365039580365890931077514732933095951863395333723887230424937271290862349139940968684860006840014606135590206036541243994861978111216713349177649128137122099938835664902607047463641717426025285580791604514576986023164873614743212357412811674990919949426459340100123912423214130453555067551150408902405083894004882640737426900557238285818549976599669550509840603091634762938295035194220894143147333885953738657942941610820785610969491614615575311092458203423877394592874842939093194201048942872940096494472623181744373743616663257859528771106595786379715201453578932527213714141951403103792694617388940915523637523011039906847426758562413679604531065749962011552921041566181225347892599261239772003694974227104878020372120025426448714759242209378752276756584266237688825381532480523474828934459315078180388207461331712429230410590226009087557833942737232966922609579252076970543356713329609500228272586455293850370315325387555220552027170333859791233648261021319551208743979755404572368958605610505572907929254103173249444102849354855785327010458874894995757806723104859513702560373383647844130523334682244021830559758995895008852020373373698202794868522424393591991153280278979342288128315210565339626462194812432164548001894412159406463446834172617598695678555088861259492347969768966984205509205607304928716282119518575715142246479939725017592726017313631307609854755304400751858656242243532879708065840432373894583921711618160149385498265190250909586247720560237345323802171360216492325595329769948643454949644282626285226906210282982461587239095084977614486432918169992059733682548040370367973669938696979103855361230202132646368837444103648205534104933138032248716019110208886798410163647774461347627751269875429298641348077617560836915568436174051278566596626481305041985516602346233617805492987246551642168890160543832466621439776180483769178998533115244156513527028915533574474136891777070211523169342635528353780343115536045392083499167486409539519591179075914075867490700290592258209937886469228631917859249709552289705975045834925128282551664950990682646379428189111843867430853515675169322940632134644278627230684025696072037207407359422223249895740816765393932692925182080264099237664663861263001160287139719630095257481554240815344223016961884260292498928416371123561854651376376869602896583369669225615996991271059182392242663359316563913610104381640677627326799810973830623352933976362319236785656518705262938872135640416922948235460169215390556111671428810265744867804400447831704168817928689942380800828959318630380887591062463481601100777787917955347916809541897379039222000817434323996898379981531814247255275757771251338536994926763282449055198342628592409076060702522321289067293119723834154008854451605808545997656256826939369229118265448967913553419239928381751064958624077150199603023291973302147798491985001589768387778624043577623018734321102755458161114945756617576461031895345343717900662528685436289592205778345523427947776136293618571694449907471240708562591798510609671724718443022442160076506857660015993935026764996529613291465380875497186995372031945712210834535291171607883636141882674083266135186702201198157595915575575572047684099147097204923608168047837561560834366810427915164928774795907031629521242599916268527453929753689658102916488409920379431344255370588243864230410588771270697061309147344999399084261580238721979811922092770571167427086691415560365378494839350088898294216158943441558456864538053231119939554687200021609334713737894907600105294820333089479782836499285782447471595520177778426132360614335247459079018441902863452899993399097600236718103342325161567616320383794770606438168933971242068480016085298579227100709347850690341611509883036244395637037945160270557847269513829654903934393420645390138534696693445660228315542307257288727482915639913329969862878609630457199450140882071934317207282835051623845303926384490555885243455008244874516835108802206522056059771397831396760431173059317877478393699798779465578206593776145823308495491578724438472107119493458012338587095004262957231333885065628840471578901205627185794752492536871675683368163510366383042025237234699181166333903721763563500856607894332060297673093700171199033575256835968614681347466016372160679145708827346636254215324271866660350856989506909960707724694658574032280401075901603566757106905957988377269229874400210719837253681789184525829810035868576330752165436300228687836005261938393159880239966191693725701255726147473977483949799040298556223724060932335703345641377712500710973986000233808597180517218329334926077916132983655357135067606504955458042292248653926461990309171750048007306915724390425643408765893233903419436499445945386623850914060510405490584998006615075223872883780744507082480545093103911517460845835068427109809624399765191618685461846903747451913318697500073507010093987384497144188768255113433271319302585481785299534094592619233024709332915246687162346528445409477674848774950285470984113329714034388668485296445241863594292586413495876328607234395271986890288601500982522308569846790180082605762062758289855378586727452641032151386626919923347872773607853399098728326779411646020182658433902133707825729024027677393785910106668322521654452722776217337615796112491838698252610167962983049181722092231808920444205320104161857399511647933663562474610215061711974559556059482359339543828270814025327165762476662152033807491866169998562948483007018627368705975918996717180715032584503360598447400649692358793834463287190638528045758593739627025565430529443672507388452321176884592835560428679734444661024427617836858744249079509883872950048113436553335642385901101976858404653372889568306760408634007660828772991723661071381839790998052048619425616695912723700624990620149440123376388791238275447876508257322515491118297851053253276157880471079587630761818112515244866734715062379240081851637164573019701525841322466714043012213510024529766745527864574760530248916863656965188475257242462656844890750336994372510461482805098809214213659876020436535260434401068996866869686911433962200580462743092814593554421187684868776275598655666628231581451015053921142885336878021189198709207200819760246002154864923980469467878561399297050042809382129451704533570348334235216404803586578651809349791433233082297375294137603233431652600014361505483711629373033406244173165641152897997439198935813792732699491101431678459135882871150447895507250096935335285752602608045060453941334466176815433537616868866793451311010265348567150003629217757126563717963173321220615451617355868350276115441645777886283143676921021585320620973192905977536479437223407779787196926280619821184830027744965564254738902324148116992186172086638190324152910085947947094547352075352722010618217623917202102651793657381955277912612686369385739618119138634630349058251705342507490234465468390123401563310794592913888460740674915774927341840492095856834021771382349177816990962481136512574519405450068225216139296807398890776394701792628236610413758049821788217936555429727082403943798613521920544346875632423983165884153843201251169227772173736335602733113576575126668916143708561341363221717101095121549943128988967126725352058160346824755004689548339297531620062414221008776381668160127399641357297947540175520428258599026394423906060027425168679800033236577799143784259486034712870795101779390531276442409242283295621886024205821095186336692970315197973708488354577290341697183558243152402935342515744871432728636363809904166269785934393869972193087037369909587580239630219060983540927729494311918328652047890278571192723276665348149042381193290117513902374518008339123178933611691816420965332726555694450457225040356942540281893663078809978899194813063760362633660527592469389211624646845105990831970875279388729465903752337269459386198903148067283759133895094075702551596678510418711766011219030378524669900473362203662398105566521429785123332844937490053555642874355203990904207529400850759046685037160954994978794437223987768469230003830340936819487733766273794673192564474641559427512240877689079106484256954200470852451165237808771213405035234438445105285008226180616797793910597913015742209863716930817538308326168688729898882712589525564216339225884644932494477810485856385467277549259518841685158743684191667998326640390131492480428921824284915416077916954009988802742486912567307048737474808876904772855097432976433722644838815170652126814460837018849454926410703664048282160387076973539398242046449743723809297524955339228628122912113201655915988922553275643546976423193036563125327292250950221102141321791157609468097553824858564342135349667958146983857959243580756754036971919547049107499856889652112789866262911029492735624062212948962989467772434634928300535095726414424423328755312212248254831681823504057782151293017594572768764182430829328789884237885542835547211924814346889506270396172402225302378049742163695916742994078475036521951494667948085479108121065593874265524453135820441263244938202823610759840662320531527514983071907503076590797708041652123503262912751539700368557411311639908825760689549162746271884817926915259852915403339011518048590364644149409006732847035332634493320357911628012850760402975594098251439947779674356841997922441946104147017839546745769119284894855769939311575999667946364077006163349177602045758142213144005266937403767101430026785052622016732375591589068235427294896574044967107580016576193455211378394653036525358517005736482584361860890284363298147086566718500443204156983725577381356456423915251744774960831860225083567630275493223485768440586441383216221116509403334559515338949148151393835396886057231102350148555407383898983997545821316848936619680893982565451168144508760934266924369914474317222258832546966749476199000085568661951202206116945678217658578170231275422188040235450893957188754420002729900585995834233513322248080937174986854147712669275011966227732112936156253435811563885536802290409477471876318901294388087919080005665041001179938375378030112085953144597847849525124718767428177871477899394208808182304129380379461175335485425741404713402537921004238490683612977621535729577445154141702097944141708183992843721065554201677330916965096877484927888127146559081343208857649622452337830471659444965924472590928084452237549684872330434385235493597256312523732709155224156068040383858441809398811829197458056736854687962991268025766265532783251941580672611487275513351977979006715032458407780191313721310927040746076184155613014736483474030933153844560897676443426454600293976890279315933698053966621779012700500665541112748217613317917657619267609692986674127481629481673086700685548467094117939955479467170700159391344288147353313090382843129806546036058492724565675071319551950821187228685806367456703498329127778822454943168136633623473691775674965168494175207687135293955860426450133940717754394326987043143180334197990170386991388831348299461080340695891087378117562345035821755950472815768933783735009285205463431750681358585897215169781271703483609896675343790494652038948884217566222929640709489245125111026836388618664346789205312195532729841785118613424254670323354574889487202515778341075950673931139772747382423193486752565984691347581408483877974149285756845991875635912143413272993841133218212371705452250056366092272325606126599879796318705623624735509047690357817512818615964554202231868700546358851996203699254483175638572219810724113047816598041898808547408593550776163320212195057056486918938622535166766948819189819477375807287311896245279429764197048279858823167195352218425221164185340897453580417728404169360667293426026845986111182996145733330754987975346388140657937147418293541113317307619464986548621776252576603600711676874933418102143139261648577784098878064435599480056064113341066815834094782366237295538478209377787739133245668004773682519269077742365707957126891477523864727159409416381003719878232988017961504505991729879703462762518357020128047368847331185297495880978451611497531983185804248952470780721460019836686025605609677101231227210359793657577554913169901085826064225682151769004947551340838362120301313589794546134974075776487629900726392217898578368031826906879657883641539282439760196142146158413136788894147140243651627370883050100238813352588692727543621285676109830551041673311414681034293573832675985892472742417970311356287630898543262864476398563854760735715412937702309540090722448927122477445305195774729047192314302658216625810192148822059423401051233098069746003093140964112505056972388528833366859458514951110008274962998321584340626363631502211779168734189317160982964935642093976623990236121296790293942517275903003811217034843145858641520096866082372235512281167452741876821092687145497214852424686051380243534510865764153394369133805168499088430458204342403318138937402077381061798964787659234093528891657507174671543860648552455471080073413499079696535232675290077757444588864798804785485389981816673397615093335585730743523792068229168496767500853659213472052246130328242580390934202976047894728563794314698838962951474405453056346754171373755987932193923834230748269487539768788560101747803604567300312238443372877048667933666709529840033798086362335029296194058658199022090867789190481711539269427317218638960637957459239624111536845685393896196677267753148724720880987355473446036902814643408136468924326666209870637627381327536067434527079024058721888853305149330381207171146283530701937681356809732271150061559565058330786289024918211160482358371487857512183909033462695976053193836507413047451428219334984928787535064195697037287917822051314082869280898244676289445244172892901486568392076100914044905776388010268443940685646632884619802615555920226979626016776706492820450312238448752274881452730079581962191902160213390852748517078423903104387993576251593282510852170227991359461210022339449420591187418147083591031800378738681427675181969364334316078878687587016518408089901748405004343758322603502010722887864909404493038122094727638348683350462887960335713417550903236859794743697716485151186345338136839162419085284314454107961502669523574041814316295093335408582552130063249788755148794765089585213521228668169645618594432439936469621116727787768162429834686939729661271500984990733331352050584320943630568808111355298198809819396033275658993943600893516821686104640764450084092668578189101763885139873092921278389757127024767449598813454810262138304186335868955196497438205854383476282548032188519354047104590904289097377562262546923762531276128788410501065962861304708169033877274053260828774261283079833927701916895372746438185271544164498230527208333444934372775180598662967763067772057508591738114359903361734660415194419316792531036090117280637363635282328690299141085261206157024218650394620282137626794995350217410651787495734818112110825264536662467528760751741528739321157446601679310959157244950317131335372377158454091616739310134567323323247883700681323946703887149989719884776835387158258265316694641915286230724684867762455506904532112150295696757578786824499996929711504829737744970844265305679921367730083692808553339197555430975083802856512104381092411689592398442934824289276214414129133720843498308980304056533352618445133639161373871444664240198753078220086121241006483089442303284799865589300874825319220032951323301830075604799784113567368787068734674492759683809644707535191266872314603613035258646749699313116716253411899494045398933336922450691195131826113572771010422246270350953205620812667607235206082459379272867114515224475990661886695503723425596408651196570207824069479761832635909691508239137588389055696048253420720139197393831688139693887393011864625701869563715569358015430511684300865985881932330414755762352995465751948559835291205425417193293852708870091825942322796260603048856406916670123498995729484755669792739316277206415517782623751303860501234592145112712313633283190576331988124733169549627314662070308395268501888271304871602799425430987328188413044657756760028230813042584724165169487148697478552496684554811810366985297644061280719362165321609684770814031691414529901070164918890749164703823590235789359378228619699874862991350603558369410136157359543093527451794268789129342188630270920641475392090615548638692521398005534882871929179785774769367971603263704918194438814161253229128326486996399034954932179144756835305069456884935798690007711004566542230678725437635074336881669848262486741779212076965508717479097237462837698836222421336187767598550695011783863985765381884462070513676701022494104353194055391722182707272627923830560386215574126491093196391110701724250974996902369593375686558025725498801916611107502917917539105555279809600124381346606687041079111370805043586095339421819304272061478816971054215704861100896988249852782419273023502867612499183974566613599649782953353229258554125628498388379244673127682610588300553000065148392990465744873823965474817317344775239649701302548618396232983600432318789946524795145255672465423351982218136802934783866701661571975190922974511529839761718570176437979022169731895716444748155218539490963504485551726229553359976773216872356918407989247395577202601244210329881001135467964653145448170394536866362043478127537780434125824036043703462064229660365489904299309045746489413606677214377889448249675609682596976686325804139382057063496150109878692607963451761158782159431044403037394433243955409314615602779401086412429156901375135843270116438679352106070736196155873458208436624696975058421841823067524385157416718939204047827618425514504765573810820377041530544366774348025192870345385364245056144941896955044663201659814225610796360899392043423892080356602217530931476156447718753050699611191052886775128555748901554591001983327431541673782225448277785812537717103193539320624708067688814128945291038064172465257506078070951350208252330612126507662839356941019104988586358666380863712689899450632673261987312408599871910626535933232063911027939309128426620454285033069566564200405340235305103415727115874190499370138964965199109847868106995891541744635957877721269903127083564291268125309272020709088968003796654807092230803679004803606629268161339829094086125446430256053970917232258300194446607247859006081192373063012784364524351672871388533533362864991107709316290283349734217462994737764285557545496091057533576663762145953374789038189125139229743421635822529774959908497583526551643095912101287187682422358484748990079996725760154943218124158068369251036903427859934430759951861714774978137443236324398991685091971222590336775372647593220996449454766113248755320194030132503594758289461453261626704443552378731329143370084692396479369179113424050970582226956496073141519057803159480063045545186673610252452926001144612630764530101357422675767663979570168471796923257524701796653223918016797767556864028146196849634180659819288307453791108842303746777952059140227550374983492604739243050698767750428967903648583275986769693768449965458044645591498295144653598046873482677707856840763109835770147234346701432107529789239811583009066307280231002630284018209047834704577545509747548631033113194429512062350058245842262588883255491168832687091435760631695886226117184968381591881754831223452852367235894001494763530539304267851831939663621318681822899939229758847903601381181037012314045021783615963767508353243092937660675154748507424201344165384270523454341300044407113141789285811823910553876303403476318351191801373031660320924116701232833428820330347294758444958190711979428148411846746450042314258790299957873291539202616034119582906383624615144024948211135131052579762878545196323214807653336650614817329478570420438965149055698476800051079672280668414839064205983923738421716465511625851879327399222212384690080879243630914685020638662902090649045260703833627104799334606050528699905828619740917905498345120017888932211504341767850738069389382570710638253839811193113606140618060774635527157625750763313977618219800564856269246046393552107753073213135013727584774008473641369427994532618389972594419515147306496782213141684463232399366842912560102872968330791390623623906398870741496941713327968943938633248735294708909764378219699148628870306706022773865467731741476613809936787488679612869382147714203647717485833472950108565442088734089048957453052394287807824807529688886565500441024918523496360326571200409806995845098991822543189392969160022753366339427143286288969458854398265227576957862212700144598697787458664984667061919977052241161362897125699305238872178785405920420642067153644569804147263816440133026587084040781533034855697844719255216165169614629657341486517439097308028244400996360206660352189791689873887538151262417882013490182329876527895947781238524121496422916458844427384177149581036325815476455667247947470926041412452751634459761612138196864420135624629002651017032358581254608695108841399143223659466097281024187598787290988330759102026523874456897416126938869391330069837684056280893263963720140713134961858972415033084851090718233435846231844779339280291999220800831579766305538295064446468744142309307227617746043100489691257091578023526943435664149278174521353500043777032139798298739217700854083054269515382505799777196519856911748436918075586169890779924791607600186655472521555111535348179654558408780512111815013652629692016389283901438726066057155765353833814505455750555559340187834287956578395821224800688375229448851864830694651143881066987499845742229833253950609828114788842884906288643917326004244448496705707805201608521342036473756162434741081116583412987323695373214308937490999438737367997333535531879491916207630777422854918006827033119445431285199603021106436842996989679719676171410225643086707179763139240688066997916243379260621292188341453911915173830253948402312481609690846965819572214634177394804350995631823712485051206575397093248802468203015839306114780450511910024734763688919668636660429836524930379193140427759595103343499506004788415159092956390947059665596143988232476792110619085827722053344304959345531628060899539289844257272201771905562997516066265057007969001065799712063004758211323347354069511793406383002198880830412897390607355044412954477350969093673715818748459443087621538437514612035998250638652118891826082433380840708625576353636902000662366218940983099761495677523220281848931248651515396199593988363013101388537128389827384709288372964072628589625121134712084042666702964558742245892976877208745690682878529635176450066538611700003353253035802435431055926014865882410417827786275854962267688780828708371265019143100383128736886215247776781821668080269272551445867736989386758152456626689741267841715541506184166593492443671148082194829621710378983100889787412063396766547504138965407527247404280660075806209216648544233782697952496516708674770098858082892052684962637367378555714995301859580069974368738698743900467693879327168592812018177876190829483526048140247362449008332738422274105066897717626491743207745171633825469095629465139397824720952902618260373851011366833271552105653546429421378404574214203510466432573248267989850020408289198628862819444112279071342352577011234881430338921637939659997754843149344681405721107034321620959500478529322765052379627009690267559222883123848494229699920403166511916310128292860001008246840862210431584532678408262132509159773477045032327761512293294069233615854449131534593274600063331235349666884078621767610261565567975244022432970579463826944909928760733341117162860159694816167231309977829825594677452125038953139876096248480906556925912388101328952287903696400230548386734495153495406407273531915185305316870329671733853482592955167099103200574987492604667985402182834245107590022476403572712713631899853176142186129572224797682130238629922159093583081999265606872422267327985594252210798237814727863784476333974085858105684850771530994246241625536544757525346128733513089408098118937024227634329219041134988346478298036488593840136905422514290349443289345669077283972635807483497025550116200600642479448502152891488243026566880618627779319491659992523945883118760410811938219684444445312616717660028920088280754731636220223443571128125277444434767667296078179999677121929029378680746701377823636478023072631367460240769140567789623224725307490529599671600507593612601004685776423888409482033660189731331040169097298759652220234771202788739227645593095962255131343584069689337864397108580004292398428096168971502789202191403231416318030709891714348655830113390831715911521044777268026371933722973371511114084708259980246710873504756392401876226892141106092499154726970821011693659364312223093124041653216488040102966029215129503916220278010000442379102120805186092098897061880668954720823103582920345114284040999131957870803661599023415301283368960080576906130358244243897449416858082912476900875681077329675315288743507302245937076213189298010997680429947265685368993166050587811920061142503404151308814061750317937629664185753210036629832232905689202785379985972378157743060147472973632010579104988512959748517149305688922247612823289326497735221308869328704100168428359329877438875730745917461035775015803764047196761391657041078724560875871070303633131667646557396753597808587602126282782018008126142129616631006945281660679635545406956959344091385674424583138782585746090794619099664932720864640689214080904034485641427658791270456510269095284324118002375529940494675920663221653004374201542575217868497672194896012188489470653927179890642367236876078695758663555505054110972519514337805937007492626727787748937679701121789586391416274110026263917758536575897910075294740613716514210653557802291024652439160846186645680511625457299703802349479310570637118541210590691766338260679987243485463631371134072603860866924195226177757797221599197333840442035693744559959133744046206784931606039578134857330435378142712113824818543046933113295510405578435362698264367688977407934254607499590383596963550368414755491177948344889875669240491428246048137110509208476672606243913909835259423460201153047029377858234950338973191321545255434517104808624515265095100367378883694977872628403029358034022939815360446284460031434481193983693735739661242584402203911531391995036887781393471059658484390641129302947206352698372418966416274413950776226403385327739155347461372838908107390420348082219228674746363592185492543051584088793919669925820674558807580872912668321411634156306754630078362698893813521716249573262753478522375773147073813720899135204150648640725421963448626912414610429275579104059112349324158646230198578700358706411638906665241309236303380994087785724457773819573973998015811992674916932934490723627479266475732789013862188783050027187655050903400257237034299708659255224124839464092489512732564687365640452528104309022895004668678736081651787560233989703327530626243974926886173880405142168625917816839403962722563360845852949819891532723543833547089287867881419238735531165264172837322508726192118406756640211557628085108086549126731549648062831215200960766909947723488703515395378434896430519796864091380158660247272245266143301489917468452125108255410336085214654108840045043506341334102984147807829778827399310151597223814941186534878269050780481171280504379527198229517805764777505732425461149838461168669851363028639726866326573991744581713427169265934416247100546703529944959900346530377015079013098396311439154734063434568701977402316759688978454746507170625107536807554186228777535312040299252311859763510824465716824022459231352460963290540538752309832408902612344959830765823111587782515150329157209345671251620347946838837360714824390604955844620106009672035421106907895289119871512803662298793705415225168896520062271164587723049196334199523015101050594331094786296159171821570133653341703197845110658142718533832453503559126980702227857414296070528923682683871593459219776350858124913203349953626909806037552867306907134625728791759693368107632738305429832286926860123597707825969622143116025038669275921576318613032767937808024860908480345232547187548895628283718350804087691942020805508043014990309205648053319523720308445075143646568657112198188323526023340181090913857551804320419604541054645916731837472529829697672866864755036300510935196113911613265473855492621777233292908173926266025200861875426049070864280868214753426086255840415847730033720997674141192357707840519909315608034987563310653025699227162565155460780388587065420773721290536991407687250848914960110381687389079314534316741338188308058419460256660394827098663723349135612937309501184770301621035551277032425598671062817713602051104884723759518231983130352424256757395100899005530655006899900585470976126383644492555062393318371928003607259579242823256033901119506750219706781694397459660912626825334595109257420084530616468636025672392673660634008857818254704970620915563187858534060925807607393886253124069571508888248597282874416316575776306981496010330854079384106184720753765007272011363214238546119037025979607769306525631776628719510881425596736759608420206974926732435576343828440980549376473072837238864822923332226738168443604719033401631428519478722885708414220709196246012823477940500810969894524180298269636364359770009909108990779325744586549021920137436586115905314662681944819575679018399509026069730844940065415011265202282489376143278021496189134331871504966299078476086316996992729455377984136621657026241836809850966565278219223211423671956924823585117506147161192627181742390116251199854083526502595393266019265550979489636069975076682305533855676939096970325387427627757655583653898412638687820822107607964768127998320664394803841782829401591296179912972744773424674240018123147900570406505234722880455157464977664078280472543036082478067642263309177694594731060730350741729296034065508852010462340801482632868769864891562042052431878232183589445262398719862579869351382788230049798346670398640278591538109796047448410169232481418002141855482205182765777341323723838406419808802467188313888078465458877749390734153790934312741227709002142759661337231919794515677900622858756699699979656106568387189062378403506032739300946510498976861659639817522949920709894282107792923834572924677302103406301954290251268848588443125259522570712840003851762788463765213995212049809046004687389434705038895912944487357478592459883417466938324738463405728376154736107624658162739633159072682638598526226063955297737153908128888554222534186474590421654516850110340955997828007384920876603452243011782488680126221623050024244357357332982615152192222580249027390649909245892840766737566832722482263423114935439698791812842147559127196975397525658063865099022186540167699745901171167382013999224799012600839882704349362439132789765592576121536407394485188679843361571093138283322793630376739454771995267982692121929794315137967137087390021731772124435919284007556162889039109023137222978594099702001112612504292901659469052198654775317993873035790852515970230942676619493831650924090079527172707136087686935501496788417881356985970885491417512407216316659357644671529426702028611771399604308338414084612886927648973120705981846521266002587043840319136130539813101039193222728010983096630641666481199987650535860683672447760097658914760507746761021383262142499819617683890092671054972355849691079289709373132356898899844238107328167198603825087547548249006901679682540844005771808233678567579986289738185680776833315340434609921409253138343377351584911543359282704287057194676349402474656170373336629340988928573397382507282708959229646868342096456110820442484278192721753690162498953221477420619527798380476281760752123980072490488774421876820442878245895102304462316590943931113634628268313691195493362012115313528993794855308553113325225230751677563389980087928325492228829277585586703030722327479303089412935417384782109652733213743128999243043740964055311474314004554171591032087448945546297313486481031776400231338185525915753894244077011439527872125619883530612949229816959315180762161337314835717289705834915594601460559614962625704729401161814842760293630054346055172221266990966127242103406218794818220691396953706580630120015671940950645489744523777872184323616602246276346856426010460419183556207202391334176379816559065275000872390471427403112648659565990565018206493430313428384378049387417351236324207673910654080794619077199713183364065970911802249935967250261248457994901426446530566618473507719858881528177409797735058148352557228184474994641580773457475208628619481523113040470133240411379403885296503832132328462720005453410061796702369159706705340988315421948367150282213563532468973031844372069766404188811189235007502163225239571525835306752626403865608625951910237359152455154150875046846275209261727802636348804807601553183016813991245185156149262146946127957371768238147549067619842974452641564322043263663728354385821502574243629037609337088915515988220750498580057521767845415733681397950793237273417269435015787354410163073332219414453298056605369322137522225949644059877585002248908324091735112302801574240514636974035005309575748946644997597221119891326981905249169215445832808507670545471424148378399624999393195079478140021359479688710073619217622964297106521000605982101214898330631818540575711349470392838789642201687595176675862102948601636284227499987279497233958868421897336402725535245762291332793473113610732664171556164519292010201737510864588355728905430362028043127461517173558876664448188172355122854017165335546722422649282695636585308596628391863119068581183057147784938769525890106737900994078872652385860132219662180539072843117904494402556562221413354568778750995997884138806285119816475424250839096220513165974751228947413080189091000065504705366551598036247049095895244241565035309781405610780497124027550134271374966259063946780571478574604195114525706819406337858419254838346145337428203815804380890860781030590103385292588519085626190331971223241798984981668500730692192253404010240694019716042056772601517305455699496611849793516700313652904459891684209978554167351190440983079830496909846795007870280626722239986737646675917322808775562477182677916206574005611240478390366952942389391939441259128011964928220927046880730108712414604874035714417269181708423062033579793395262588199724403616123078875855452869546216065143872406916029588643540328293663135482684150342413226535243237881335275441270897986930425852802378661734814892859044698716170813665321480641206166699388994177065799438210853800550958126459257017058811039528026924229672090614665133769855509901774939575725930514031651330104307122532267396251483833513316017716833936581078589932187161419371700015546423870325404381977818563178024657725603044158807358320655106040411190375626992678750911848576355011700555774286662581221564129943473734480750015727300557484946766847039762201419894214032506994476678917880319831762745893523516413243314144971194797565224449226459952555264844674907334796932558321414859496010407115351836851533417475580019136605668896701450030224717829591468654352735021458478919733044358464781356508410736085201793436758567326650849840899120169681756157480618989823150977391796026948847142093243185925399703188172625413849871864001441698793806928975929825431851651178251057427985953130884194589433796264409436831517674943205528474705083348386909837621172149041334022089171290668494030286986250967053085163146193564724168679467702532764357146985139893260027745258339039779317763378598783206743676803086797870170148439704619962532177464116018369955247356589603463503572893287778326707488407490707180197325225493845734819249647643767068056579183296311576599135123678244415250201157025832762510950263969778725026295194420201023826110047891682621594330740704460670629104592573420563810310445084650732787372023159421153933998967503908611866023283521334447458111460659092515485813174173701060699784637362757828816577974640495775788871754828441514121229480675704509657485387487237657538708781039935412556253815672933545064849274217871949365606676155086722333202846271432013907953649630656006539634137942588733091270013894009944471784516913011998891702844034501024022126272761253014399931326602630476738250703713939305233690140547168906413040700243452244487318662143780344134037947033697181202108079346672956334107234145481968907881746164244132448361912821372970638897977053417342316152404377561732865173517076345391406184694891571318470350741813527514998173105060203725768201342334288568262156374793394404563389290998097371725841317732855954426819801711500717348100383259404850591510571025731611540078191176683572898055675594509281423273876306902064539189859479406843823373055070818749571786054827167850362635077224311072695515259832188593674931952369681116428270900532799222841043635640633685653435704345201877955627091831092501703596276044948598737720432228772833040416689502331287646993828528205611983840842492012930699459201970521755215584405951421268771634657978171804150581616222614234090619223923280082176810908847207354238819278556278803148399946379668994942182860009708022487274265774261238197257995595553926099123372900564705454425978261123958921429910194770890686657490553983857530992455766894945123677552054643221207445081114814901036241691399741032236924484351522917457555048677883676998899999998439848553607825138175203522627754920811411440895739752869495466385623728151758985947179289244264480900457160521945955907484854756962744192946667496576668566953569521714214710449316278688498263385565054106945555821864188797035146827651229982860062038703422897516381806899924586783752309041649730310229515236851773302765494072077456255393518970241855227977905418546500490578889312530072750901734143674829501599385933030758027479166145022112010106266530899796174620629325003553913523466353220792953380306565339768961133831699396661592105311420120365704161345534820053351857670803575444035027453303038072353684595811225584666078586621991015825615759220172027490241221680739418506450978417716527948007161247151549681980153175477834520737313118881789508227502520278079041316856502505158405993758098959047801134106668341477969081342754291630880388949819755072795787929968010817057674948076821638716287449134478437477292744405305734356252820535938100225257999347346781965384907225417653287161255623835239494739936016967814449012256660163688859657097981941942328783434137658637764124025272351431236749230536717439474929074435559374890125842485266890169125393349982290111510529188902766992525906087227146879252814362331356165246596860774608875982146903961030321817012404510293010963940014191824680953889858353108896950201247058071802414649806809156745078575503943657359872105480439798858008579379350376653998484249583444952717220442451095942133912819515022266198386806374400146844999690857067918288472733695131746353145234755701816640522737401899124237992957257391638285900568706895565148212420840545096967005510084318010799400633564115298575911857060419172815924873006122553468160877571350839773365884961732165893226880309711692428343175736565033802902221107640742739496328757491954860465545910869386733571001637270415214714179861176748813482593799498717792265462739297222954267907756107890103012263044531530722449678231469596036760520609476489289118838266793694085452566968265399701322613443352716991861242863757326737819962755775989005033697659539454169851294916473238878413121417445759191273982629305376171715327328077530453897144787386739176604744174526859720965278346780061804516860029545902706774206869739992084833654649080942925663326514169448377030237631085955456869899051286577159351903697360332517755806065017579461278836343416305756014750819923486501935005019326854035647103606300714058915457204101015431122222921720320551966790532717772667418032773995002421737586359838984131290216321007397493845471244801287615463677370267159763906627972778769273994183595157325769985000544581629193579384449597926719889106733798887083292414969579824663922667938657020342956251325061468089168523178375125734190330822282116274161744759425371859128590125980387375412373556304738034140706215452843493570702282176464523461672758275963233329496700517374083446987053972188460744243937710629503882145128629336862390472036325987281041604061663801885241557730607935219645902993726568313622665130558805712384221026710063365183375293219640663241513515732986367657671493683946476960796552805256597471447558767086524463358272340529731940680688420900977422856853860400503960487598115583727487473881188366711301909936706914418143019895554438442096053931836597591967299143978584147796241798858918039012441810882573231696544374236708473316462386000643380958223485410150750825154894944190350752435412419846082991011210805402568717214855398141175571610698563164580048818558915198672362760006573607078804584604955982973346770685843122838639805403314937596554470236156990030190467489693627036656336266901373771197754604042826075997728060780427453068496757458965906778306073291333857941672077064311553394086125616367422713425820124754678880806163195140795131412556255263249808861223048499434496997362837474727459663539391903638300516225009062125722587543317646445284873044403359592117843003056170400653548017045156862706195567909698034733962923501710900322660466070049854436520747638561521937983419786929381989931966547917636624205275657690996192205447171512271596523105904479833461487045993666046566659202187771533040702813268359540143563340462846258902896960277860621066205855907333202764747436371100347940423003222303566596214078721101220469394802530973655802566403008329798871588643081352789507818644924373438397850331400170746938761336738394648700648901898133520837748573278717298440958650041799207033565331942030767710390921893348305103743278278911349307040429647562578582050160830586119163595751075976351734206446657563722429866609571620443817544362436135929727120242022731881692487325333406954646257401394967897238223225986303862588806619620499110854833353222217363691571020132635863106871207170028868017348799885436317783090589189236334634127000618844704681358500968877707338583294041486994369481845481587716489957153327747616569725012836720099339982539425900106659395753665356092665407652053673566772366935987848601625918229781690867220418902185807099465522326444061101906994958234922143045238058547383280643582400856827612411138426170395618739330892620452585289708581282273919400030210743724339054270493918656757373003941709968640971945707690199395485213200624343639674933688049928460946711770438028674708751145713134056671135434807966422031753192734916381629405555973405295160297289261938545257631934471196465812095677886856628921436164498997951569755649365601116089549917230919649237157060986391037660658185939163462665667402785946111784663292771660706095902706214324642385928852691599913471045350957897097494877417925115149202167854045407018262992481953603660648892147463510955048257189293218434924749064127763437612332454688133116099393289216970654293819288351773901358893852758698482654254327359170835876215823820516021315524087888483524717327134692484011770791405388475797203007711013872140857603080796907892412775189712254421383128031892653250579982335800219922009344735179612408477895938871588422622615991670114493626776891796534058349261347937936150358999344946343842155375102881678787058001083517628211875162725160674345212557674901233538380579357740393638601998540349761680586756464036194010388535024035721339986677734099958399698763319089013013825996036556451719857990866139344321617822705274555586534931833293845818208292161980110757507974173381213114619422467658580297043554323310380096869520642116590445544416745059893086432938742740416589579116083211879391784051728971747929385326767551689646056760950244772012192841415858349339608684176752439594379797275990737224435252582371898090912870465222169293134145750784825300408932769761410091193938062433220311394108505970521361256488072366313298291998561565204365397181425602285245789015682715556616831200250694724673448641288979008420847844540756888287443004141221831893985874488907003759689469961011583138294436935262840230378862107313465590687826331928745457119911982905638876049257892155243670990681897155206855295419233634688277330503246105402791408224598683374903141144194963491236790463232236599274567775644034756091021090926063920087432698573415476883855781781373717764659433547289989196358136433477268614134339217920615664965417118014512045088190521979031103749841447601497406553766920369080783057377574078071786029613688690165556498300152940202804378920348721922445953123251414558977778284397303508689079978883987810599539990654769844141806287321033945085398490912563846587769334022606561415252649179334233920329829312242668287734608019691443271289859934727289735260414720167485360636221577508315243436856393042750859661456717759694974370223642566450249953284688356246688325526107911647418735649458004425203769761253797100218031651361915164823237768975375743315935195862978935766337673163037891166063987639665384463784164844996467844170425148552097263834500735487691156611673228200485498787638942841907842704314842447527987373393528625002066171084853493626488668734025261170178426920864863040622401811413444826134664251583181255968391585480104219178072574399605944171249719753744438590800517625415552893603042225282707633553405458630202270974936661917986292532622440233630738545590132178728955241210837238109539685254355400273508078654433913651293571605827603779585048815882216214405610390659122947562337605148245796455739682420655500854234369216339106242390716387685070722441615140333455904616391503327579790757140673598406131043289790667627091121193359139080703017425104707395011731396152426850378195213591987778452188019950218496916858104152545271935819800919315202565943719785017374273765292620547511579760270307799634546156600270146611341691161881977815601199368331488620988164180899821342287848581023973211042477420097388581780968314125169952691707836429114702807480249439269551324248001047001146654713384572344338562787819530299945390175915197314700989693819860902796710789895127595480843146082227715111681980249615139125502116900272021645085627969537250105912393859798926695671736125773050238809295984152411539583020916706786378926248849433868475121065130515568239070407838396104400678976302543423637862042127181765439316337312159467195595481719086591633902684838340647685165068170366517777365442469722243119213085742529083628712001355577188412175891317090350473531213163740952109853167515556839397820224473732484009230088617116118088333823440752614316730263859397846471984747727085715658192707710805551631445351906339791813401510326828416513675610116973113887417183584386573005649641503827314502644446278929058427067324473382077107408511777996950155712673799170996064872917505474903100841940716462930539051183053731180133001884249177503411963993686169916227428691844937479194486364679805556666829081302355857515549028543073363948563782020676397044091929902336562274268055645896210156437646157727368136822066085465528525355232571889286424771080460104614801641715360908243276536338192434604153046652272700011240547268165667480675452018943622086594290997315986498824697576610115858819442195635682856567219085854062976248543578787992871679984605308290673048830283696372918328639674423571682017279034459042966009259843805346374228841969640443637766011468492696914342355289896161038288635337562962997858092776190934999171767017535613980011849680239265107213390425661169995334767315498074492735187515315549033853388056888750673577938629040592437065018570127023758627667000637657384604026540246385491477324530070291290789461012413350232572546660336812723545129682445149235648005458368077891789119668729754232424970634917289902838470135671969461212395451163263098475952603068806779302145727654023999131354573317095066820003014386418503933001105055696191440525476118342349555788988356195154201964918102875680925971304198009874577496811448866667328846160717646704835957240442616515798670320631237331576275439879902212256882869106104503036486279791736843492532812422541608555902965503536744028269748176386942854773706926682232294503745843736775089254419927288225581400770145549248541514672255976646618814537343488891111215725541341911145586829360900544190294958460256065041836958586726186921365613419053731124981766484625363373260419601461441000286577520168338524632027740980159465100329854083703435955394600850922367719579355055442451089816014384437782062564162166109513907727286539995518256352937109440903164096759319165607917366758850843614514869692773648371034848055873229063985293016240388685892589570780054509502779953079675795343226378987633973218768469647219107890062514938041235146676317173760618778150916257717590474727437979364121367699781074866096147474962032288523605921071105666744661484077624070037118830121840826004708948784011161616937710683918433802656520869017221565718548789550510592298950475130540403019502516368989549746156614839941443890773170221937480078431692481770677488284577025774355192465364068346582905711858904359961850714552209070927655538528823139032952374275409743095344385825741291969124772249070977172357744892146649764965716504962260576612624496230214414837414655922065989755114715871859732339595323216217240327547425857450030274274240382361714884388031422111092324396121980882844821809266227244699441830867344007559842481143757493724668861390736714679065135144030907624332811024236035816788324344552544492887519522086507313701911662514151156006501663369144001392921009227600159493724864731243129302853900511546112269332727901323709956024646994743833237186467001383890413412116159354670455833046754524520220300956258821894923382847074080381409402218840409557772971919745177542345205353641396310513328807460442498159524099231021081707613671834086650042882946628469563701367922036975684958502945122046835418205321633410152833830490251918984515067665094222580119315833564009996456207260267428843204316716411506975720195286370103404515870313966132962291556534445948910927850307024328881837865778266528445599705098858106708540260445384223388952488982816733478803085253901765967111810261072184057793092617661151752621604097071905975900345302200713302697043143640415560935293149192577549476300225786427717467612004071644649416561965691458575412699127204491589786418762595502732870098072836496685276668908806790964783361630959124110639987433372854545340668907140422627120052947770355227392674591839053705733413936700790787714731165822988918195720884210439058771275346612130661976404929398210271781371693175531265092888610221152086899643151056046728835552944251087056629433599287927584492978788513973539099553158247093313603807840894580159647635960357679925209299735825820452451878430981148276168070551696427178439015795040572688804201747391037374996036037194586961933265917749577162030400374810993835723965916036893773408270769472309388114463622224669546193615183679774208262147604060521541989951455385092454452049081165266817263597893613064072896885330982538424773425021720303694810645208292656357233336869368181255543256880286026773534218813816406515177191151180948958055480889189541899902867210950126201822188268601438803756889972297402825984274592056131631763776484482670988390251333927104607003786690415551411872287933374890985189012961584989196567827905013792557394155984642114041905154490900383713965866169001309149352904517307588711400606748680401399724516937915693243148793844572668095100643425231055236428108591951391507608236396617070066333343851670238860388875636890777923957611194267391553744352013082876775212258157887776391910774190480120619664165040202182892010018769473945782647667818501572166423503135340138743012081617730969776457756862301071283765733745257692487490296402694054393617141965276951006111428593959457835608231766044094518208466905326624471721297760576013183865764143318919777231830718026510142890683874561649769301477838970304190352184995037353211893726701056574435282656518605787609091327556385310583835760519676011134959428508438436264921785593462403387182417510294992539804072493110338802336919833267573189657293993632565066281224647922493224531881561825086818900309706394614664086814346139398342555436405994320593351242012288714189680769287833370784299132130845972397592424116315418031619793744912307379491902861325481427258414627010144339304736262458935820471957819170001627157557491880723442374605371607573840585364847858908320270326423323212681510578839469229274602247308370849674448609219930557818392049642429336734570526004388207493343162960263115801203242466117987015805473372281761636245728111376809666378050886959698650308936400819268853755708597394846958202477566319967916190764639236443715987314039729908116028218715234048914817281877831592496788132608805859983319581339307437954474604861702121327505252327440875168036314441639821739372383887191826767625895453675305391988232928488381997741856130728324685304070686351618838302460002776155967852712935470658059214497647592338392953181813909513656303284258414783243154016735684746704772388933818299750894849639288601858156438220851941437343166352196819913663571277265703375945205488350427795663673823405724846205579025485369396247482721970057083591075439726407044502453520483707683088078105358360549162020831872988261810617725479234095199507370236267831830541612397599901477473373081553403977094587954132203497408967739059745859176331908895607601615661954013851748324238326390701900551265400799522471280965415107788375181162540278137104871941267123498614738090688540765375283894765681719361377572510467550315275778927990413546824106337249225531084053687071966696933265750960208742018578767496261099989474549464399191827985422396277572626154462271520468998136186274748142028203263367735118809710180888732029897365898271889324907374557539688737407280840090979535849964172227042621241875294589889281758328759530744461657770505762570199917997212045511720721293401411299614565686273728272542517208757161755132840945201584041906978386924559319886336449990499573128799535371270604693662118149909163507713302343022142749227379879791811256818825789077058603912635867312911563926287087042169782942057402892271270086635281363711901246367980412697000520884376564182284253986523338375470486039430594530104704117832203673954200863145600894011772054972504092025284521737911193572358887380080889656003744366903967711571975491117297407530008987320283937481405849509315140844471708131375857080600766583736441873121136435111585797662087533802447453078096662933108918564409509011086892729905084224941881054359463785117443215099792649391206724711895693479685523686358824327620378108531052073150238915200863397391754019243080424758332680005417737654630448429933593582477972563135542014864234165153625866460958024289041403050486958473271436685355448832003674552174053582748918009018697961244371925071364240026568353106261873731909056854105478602936173470414165483815568563841970943288847921820921014405692892469222418248518649400336692528417421847696941049249705030955572656194482559677020517448469721142213213913556562128363226560786989060366704210406358893948092403801023359241873292936992061283149122445606513350652940198664663142917327695480784077492059748720009686442700200194698735611868153713933368214187835721265311010749865472740437351894374356938063371160127658189141056528065615227465443096355257673034319934491811648501742835698854288118477402641926871021314113843527939432575381728712931067799328383334024565506825636314820085805897597019018309379363138271363166645822336347168542149096015685140164136351892897908129863492909980365995378846359152236659710025523690075680381095772438887125728862296977718995546176191949637421901625126866264035402659233711461605640439871593662362943053158890135478436626013993765104617840195252106926944284807255130974809327688844850173102782486710131763187890216832587485659678643516626710617224442785008511976768137087395364866387934767547961231968044401368359455843994362259163715337566565357249929098455429674418221459631929551296999261107535217568957427717442798218902073209259826596034458810644233222552796798184311977702526097650090511276654028351509613543665371540144400646302311133618429359567442453386012405933139632684526606313394652856332111754205575056104689480527736962689970418969970146971334039214110339755617309935716640694131542789747324508868601640648855782520080601494727079096368837853228475921675788017403337282082780317335697706550933285188411831078420900503428803182192749874337199671829977514051387227493703661090999949924142894607869622139218194290574843429726861913917949270227335236468329626957027163437619042801571792607524734572365330954418734548932890044427278998027395124975976701931161609872742887067332537249044362262713143176199065652549456394041007067364026253707589794293282788657696092601782335451398315441146482330720338506798495875503130308063344227917182210438635153143659204889580629674276459025824587089902996830587476650192638323490982399845361067517207970384269331961526061125192117911371151348394986304205340095655525920026186681088045986998399376718084348457115297076554503561424466824711396004182849481987731953145196957628379149687266131413900809997990584224359933879719965869038976011740324343909564802067310042453202776104298051338447073301045468936303776758063205617481626639705195879337430419748342439024405212881254594648199076063442897262936042062870459949132193686198209262234356403794025047916611419045185081277727100730568750315176152906708080766887024587725161843212634575148464489119521202540651901711218301750179233002303546176320626227957727262798408661720221737802766154716576821533817774102874050583264779799890526548727809949843052209626893514626782278071331598421644982274237701557104026021765594750405048126280319077136508388563512360332834550718270949582226649890771886383068662559012824354663449964285578014086619209777107968561259908719588838822622547381973173473914398553550054199138306550469814092987771914242594066933111386736024454800252077378070543423244179635599724419927855107174484015199714395988119166704069924228680789834951797174490525915629639664028470601198181847178747486840260787983454757517206917267742825281486318717852237273294947604169364130628987251355423729997963957376983089068492063236752343034817299397410157886696398532416997095776581476802098179790844834511996100182567823228691287499669372130657875136628713808969901031687318674571829489032153630273082711781754393273531137691546822441125989779007078679791148988206279394018124929119465305750151860737473252576709224417431969771857391287450433811833627380243519295371759789417325739073381968028157768540665675454740863734106669249777277524541892222628634055972261654019593618468853829533890578682443633988890730530189593388687811493659384410175556740970492104428424959604638838509450062144167756314683691742871054793767784171815447109024756213456628817855475316934216245883602424027596399485675367113488040944450113994271722333728714078048899183114929079656150350656515584116268188653277181947853355641077553889587515629772787647560563365792882962132474668403705558676950102455634466467766607184172588604030335417867257797233583240638308885829199059402086382542262395405329386537481499886394593122194122956539793408278943425910647023321298615640257893237546696777198859144187809000227675271440070027916542726277682407222778438713808053113299786364948823269674940274054977769086465997530083751260245469182737467308954390100053605732709263610485616705525405623483250846648640285130382098602888615617557881048675661235888963307486299422041285762200764585379068165074583434129489263811453946456047502162430012484222061734840352962369831394040240066966225007172381432107336543981494989605180893915655897285032872124347635230284997977879530887654084720589615664904493742253978082325727221430296146622045344362016673712625604696292751622809880810602173703436964453808952421040465146189940599254235142960786854539101840265179568834384999158188836259846072182166401826985898563318349898367542564196735513282040183381627266583367945612248515519883963034737025104685454894990412801766605053329194091136878616518543516078984248440676086062062829592812718430513297588200411517552743564113795176544625696035016688722089832921443903444550940818012792631621698778362046916915341723124435597405430764302538812243527147790219591341715075231744356393119950915386370961072769701789140906184655984368121061095275444672525177932049308455757553047886592712810548810835544312765761028007114151761476118649834383932214640865970566631979819540696200073243020910186810991892956000058715324088105854406898703777831897138620225952523464894778783768089626341077562799506154789085819468252911144924533852496655266428305740333824561930137760921995978307046913856523307994901496969556580411983199509599926142664946137276933738995581576408007685021146876540286627125850848562533913453892025910838877555608295080904847005237277510140328359061005946145484739669686119286868466789324399866524983821436262923584740627664576661420151550711862068215982042491010488697354100044705745564897644097142899328749401652146566391445237763775148114629776546727428326949342464803306171272923963904298251828053134204822237682847155892007065305694665351396072487655134203895055651205887215104448094348090736565787059460023689231746517552107402597014051885297680791874950958060272841968675183353452762092121860707592047439632145138678899386536982563050061896531554498595130327016935482230202677396733237401535739374360208164376386173204436575046998910426005105412116398390140651251265197482634725498288125350272671377872204158255433775694813279710297718311017066305115489582597605392590040997351376137434995914047979290263814171935416128808024876890232578372213936301597676252010184734645790857563535724958896995707303338615255457436034836765023629816050450146298569422769948725017921349374548340217919283690750235851374007718033200223890345813818008223995166408964941209899354749955406132250230919507496785509031716752152799970412797271817985129172369074775808578245110659348958002881967434246115168859637781498574386562497396199686521290765547378135680038343755761503125965162101526371174988198506947320523922982485142044890815454699401778815656404081020044263891401364925219815114138855795695883909369134526167178961611153577956077479967423711777323484292911372571052514011516052513225674673212574025698171622676803839754041618046345117514345116391027619230249337170297656622066228034164156095453512514392868096578499826417477290214183606215713453664416784891739290466421595675548344297507707358027663238725512301362027935671318543244059950802596747655227655593170960643838528348288974690005034858435676401933298279063444387991524371390531516950466085655793731772274599811357442115871577749024800734167443915922667863293640205057202260031978242334148894244521351061042645052116891299296507672575393784057437394571829694129339235954552937022758800623207754932348908804052736234566564247552409005877025337399900125909504488321607475468936777785248574594635061126118527330511350711878518094832479490036345732342233561673750786518290817809746893024025183780154559642631370837624840943746702915931868165028636233809258434971532267470869679961784522987311376026545756683356211872326423553789958792886561054970499056892062742643935459336964873291642327645088066716714779978383066651183027193332083149307483014349412307696976434151505814930394703856486674900318561752976821238353440026458806704422910343818008369312767330595004316713053080961959443256770775102664059397073969025535537346201345610834057102383134513981337689809415151068050234273411168435262060424648939526304794875049540324413944019655703522857943133743254466231099869371250899157654811107550241802405149095806044025242214458223324331115812840385532845735664946769399552121962820282741104831333060358255598220436943324166818658761893675904102662674834251076763038227771603428213414047809636028153586539529396642664187680202721656357242813333417860860869713526203349415509446398214881185000700898100553376805215277620373735574998805203542808970813131020911744873796255706838665322569540448427348223941373852107312353874116460328934262157459209112362762042419346117208108421399341756484834508686891649141773850263565189321089863756151317501715035123523733922985902343498302744226724336457300027700507337985853900045963063487585555297803646951648486472776154130183574204095368604167171570712621534143895922062329982228015546189243174472185494945943586486394549189654711786507054852573912916624180963354867552691701682557109024679965998515969222303730642786967560618186611455932152091734125777640769049038543122572595891401676200187155859685326277507213226310358327247593673358530000960626656266641175494888279536480013943383957328985719865898047360230706362146243691849433761661447999716650157371797324927549035465368539309114141132265995859469195563680865752393725684333594854787517599663668704191906538202031770251963060807807428887658761717594268923328804616836280043696913612546198361197257101645501474972263851450534783071499027628736018618825306464059863108070336935249222152476908757984270836820939117676466394333272965334007481481919607125374137206383885879125505446601531721348788339229201684257373747565731148114908070311742484998773065100580383504959878414858387478507496205002209098726554106963702562304343864995231012037659711892538942857207579302737855335357186099901307115446830985711316611831776493752310307963233911505210734551010833493117073620306434693082353647035183414334301774368377387014445660717187457442595433723615841113764488668825635383371271940714176690185481473524461317880957375020916485756498962934951351642494905732842482563373902896562695773298385020550783282727118903132437724522593454575616320469125327191514552423550371509680253414927748892238736778150029940009475260217775682557683918960402489253178746036592356343319654622551110767200326819642974883593570102095960581643199691936103565635919529086242460790973829648975667093628308442292898649145241201778762048349426250898624268338844133804691093893648282382971325840499329702042413469405351753511039582805063635641267392475399246729043170516361214607217929601639738211239979775939899836850014809422140686112563193441833406874239309507082279685224179239915450819088390774009875246549338880348690516489093609493938675120721487873246596045901663803528098472212089861108141026890297661457085070786677676193779061053815937008179378212764327048143579540331676930558613704557416762310057445111769210823714293602798725816650459091669892051283247891581084778820678915493758163271705016285447551556339885005861133068033737745024811558832510550280237922548640210541689431108938381362831014840803227634097931811419280050288730098414249157003955578936317778448261460746220310232280506963037961547700582739371862714628088613057985592330064622148708057089682762816460161398881349466669284251139120954436214423597713425586460868333435460569868294325117905687702949417720672073565628231719822438258470168803540097623344165281184682940341286444784862102491632511928512461346153713899258586513157251604662930994287283477881046819657236648801446067179656806836550933929986235408040313078972582530342047317522414756323422515026130629499741766406297881177736634110530778210032360913785013683506743399373460399400231332329519610762007077347025805980593200862157784005374804881426846638889790120631919344656407387592749760540245551774049581416217619452964952767908603608367278869862731873662419842266589341518539454548036832031103029004303677236134392363847006189480463379922989398232205239370654115439733717686452340654854536152740645439123872211889234145015655209090861282369355380233078028722925964925352389323062397552426944528440632169465709695438291524467316093500238019164941107577720115379087173731154833875224145574502973839244847138887183382747751234887053263215214628887318310037628689737527206814894485784862488202135939115826483936390214316548166005985633990398456221213130635921732599751794153466408967047398816053134647601440359693237199176679094070829423668117440062512577840035741990364884647577209024847337186791882206987782600754726555527854916421443542199898786534101581204327977758667817235720465294294148054974736741405956522800289746746971386113120696366057937527234124562609661777280884464688261047817581532528493320948534081581556291598433326497753821488774361660129081710334167154754319661478019174537031100965346525765850592798949403837666517163935855448334220007327718219100061176060877191495710061423124649271397878609297444726321007200325902548561065393032065679218162540223356345573150096342869930598010033892698751056484215385991439539334644505811596998414272687289894038718824979426866588712064725650502777318119669668788792718534964315819151948893761159267565775949388842829087345563564027639700726463557144995735254703741456801420986291968262987524471767312398402447893884398326345923948152708244094238766072998013551082116193263377380836923613198922785101307694130201527737709738203810929163156945505034179756262200351368705194292543317045080362087802447611508396237820365397833320626945075911457583577087839937589872211896375650173267898703300720644820297517154255967007679237023620206925816845102525111032914015248301215848842981933614186475011504913740893179351096023543217388165504276171712333049716615957316863138894690684790363132572648972424887068588800705377148429710511729048649783255719935529400968024083874213189435683571049374159640237612320965017997518311348351070596318742714652520197583854359449647380636180811873669124920962278916222616355398714596561863074398862819666838854482725474554689977538179840861748355029970946036209056546776354113067228325255729812235184299642187784891879423661564367614549791500239897596304149050780702083561682495713999822675987293639232870507513871297002604146518773689056729244190420346911724861649804626911912147530641426489982773506451295232631437419813406263470164202175145718942798514949103694021307655171891958050042235007536778040600975411717274716222240124566427728982533141825903298554446630777435002583431833494668969262174898657176737895255166927854829283445965998666287045404480209291864595253310818437818148607867427627303038856468331116006991183034187424230626410990832201387352026945524849568211865764085998903793717973984615048372314222344036670159176163875968837514344455822232002262755714553275975230429721928195863486329099343120798966824719558461724983054262993415627904612058266002847562495756022162645350430358085269879104648258525240489024996525413106258935254365917786894535483537712143404677826841196447764450868427729632044256654923267282837874071516363635909143692134113160199276818020035348054617309429432431541056630413470778538008736335945951004607579354719519493815136460274626465118072439137965435434866010524430271232803393170414711771399770021576213198446451334916199654377040883487490223495686613078689831813549991421083412020240752680127851890977712291565393324225024992141141938054219094484622556179486283220567452732921929953632464314207570279140099812051708637151508006400062394139523992499362588265769237088542034880879846465524291770882603745218500106438341608883647932331616335490627637706621342562830067353927515640479287176351894662966424283932438388999995263229429901381618231741768624547143302690618406570180839266336905877543064105475674413259656877979046532722938128394139547926046227685920716367801084714312028354978782456933618963361538088491285225260940488640573698532776148787000598401022179193135096594344950368334517685459309061274342657782154381369598596632445380562327080882616077408878765602086563664752328114184279648767657281520758398481530104173782973189340525322506618843058184770099052650666312456848113679516207592930327071143704712484823949285680055713832157393733607782119295612521273120151488131819149626071439087556140487328982526728530584053083295696007506631782308102545907595274252311526493070580084417860928459929425819909090945883424184737974791253935534483466785581021838788856593022062752269983207641182714667510399794080506449133520366481873355946501694250072159970122390388573772142838287137097013398893549740077677890814966410649810967866043352391253742571092529397016074125453684777254009301652906071190340341103574768747594497601039068690838762351618293906684951412633735710592109753316479241655856314951580417593597190228359717780233159817982337122144352353387327329473123834882322050748540908826565261009728090631655085994328132005589743719410730712673402236662872290642174951974668415145524105395981490687900781797142235956967061064601737684088157089185489478003618692434809278074741824301573133390896106072523180111793446705654395127930577116835115821030612830547499838501898279175884832466220730782082320945213498404486585376424366433779421000190670770772935835410230329067736987380867945546606731337862164430053761321684237668759990861767337236371524692170737550788745004027027679587021278236101269600565133127201297207991944860156972976557380742347570253975746444235707564416358572393586783362734095908325546368856155311166281115349835028008906912995466478925462570162184061735718705459426527963225765259634616819762704372513013364806535406971627129671698418761243572892672713951961394572726255922403858237570305823236135721721670225447730912075153290550271151592828526813857434105995978368972106075202307325571069850468795590467125167800690105620860443827720630280035432795093863160275328425610754178863296801380047992427436647573115611137566492263550461938962840958151689501671271931264053802891521036368919378084194869627895170323489919349337348489126235109003557932239649268072504742008932890792461671789354524720293674587732150154974826024072384848033257392923535587021346913160470921408132651072769393749841748041369074225954085658650732749986172564215413700427551985492236327508951939779310036430664042354737823462576598027266791089554320175352847747511504931855353331440839289213663165847708621136723403610842984095163860884214493442328929525681367071619794502963921259379918003770086138337207919003302742368948808443355914438137241163660559243843201063507175078431579780716500203433905847007158571010581416111001689410559704618001132949665028036811645406672009531391663571075312270149936846969312133409718379452249813511422748751957162766510074986761380401989211517402112790612846931412572029829119690884110885350197167449528426039769487596737093071397823138057010561393814816849348321432757232748049789934096917586913875385880706519673358526353682566903088787668371026269045680957074212718809885128081091305180637718935097467152254020705824970329632149516165517284556627281983467360554049885170140690427377893292684515314633089584444198128551955969271911614645496972037241056906897483992251791226498000588775803005784954570108072355205133836204715525684953361015123141200147132217580212110862006639977089616535259318026216943859747544502285074151994630834413426614293824729957329971499831544269914230665215349061905199742617318288606425294961395380502484202756975555348651961156124433285544430563722094538375645736129708789933638667642250377358893969999663107158182741370660871423888501186718599507158183075602494425815944575346526562993105396810630998404582575524789697204273355340309813707163792145183155795738797100346836940165591557949370783871416222564302927517193082369444494252836179748712501257018443924157459956736249977668099198941442790516249485032477256522495047457594247453888702799410862707383622780723779268795750711774308775626506737728762672400054864609062111735253339698149673486350538738286591335574787303892266474628277280825385629329719038032248857297600375079326647234210543821498065825325651232533032055810340753745785739513591011969554976427022306857090243724934390601247607969162233158654141688114906816642644692571827072194214791076137926221851156757332460054179706563469005389925600582920549948062653453170936334991508619542068093495616215082228003786258733605628779063792093907516972246288780509740193737809045088856347236331167925615738571307650324441001952371468996018283096467797807157695996378735398545532282511943120597637447736005504498960910645214431403624923360482563398882709402814429034897469855429604577656946900498084295744029949817489360880223779764404587179324585548745086884767107441210361045014583861196445607893129611079277560419886112454416229609160921028366783872545086130893635787350399606214272978810208002201104131761869531433631770737485640764143656128605029628679402377197463693501575463753378055448643738233695885622697812787024030999043113823582123831354521373384002248443418377495160321988434442009615182770859921325213023146347658326082012214873372399169425906394749785193134177654311063696110684329573393594292805277940576352680275568086809610672881437971677123920330751878039555640623043348952997417778484094934352584880631918918151856223556702291413609408369129141011852853277153663209541051196500468917255989731607594005860513531032195327066132240028992781578918425360031756541253921926730377383804920051631038061705151135406755277961316891611718988322536581470667539063252647189101114678543183389589771064259566442824042344694514816732679582856993370959590246906328218993839028072906915020081211729460162863008071248607770683051626102088748566715336446227596085313188596080601936946094647912649631865691461634246143313641682399894607331759556034840092881363267172396839082340004312832478524773881836099367916925252007272507236773273808270584455080789217874092801252661882852927728582860056085493062692455130174342714008115972323474072731966669969362506344425114038186940222140138886635741496165707696284207449546499412452448848560544959003865809477731634528841548292009941627611049906040409588519725705605103445641519100374872126433493261117365311749596362602491301078395905077792101028096425764425680524902192897922750413639716562942626946805130028413776066458204515418870661313296624384347333936784813426139214706471413062505543847844464655502100588285153961435182289375844157071875014058280895597292175518078444841545221372966793081275463961220587610206732148954613507118230984508122923801397854664821339820191392101190314080361538965177924790626446953537069439838428963220642158331579606456681077194969365823849984439652099118621437803203232048219716899470534117107691447599510533996085874267636385271108572979777960970915711380256042768656896870572062188518637630935476538384894060017104485268763459247436987750899233757751021706457244631426387161174960259973941700537740833310982373814788711400482328531277419953430796885719975700615351269875056269234561914093040362079770237267649265973601624222812456749657010539320261919906107373970952989548996526130423776909673462271325201066945599878313762008944334926115780924196818045827864989441624435456179773486531011640244315701479595393881332374055481453168011149875649957250600476963829720862740504544121846533988466948506908951555467189867012446942285238905976012359496253452597072944027749849845201247407799711744209900322142956238008298551164238600597788188433041537213848306251788740868352003913926961413939921041603316424234941009617630826917845768038746700175534694106251160330940127796099246033718947912787862085366047809783173657944029507442102475555986988080331714051762218284835074461485772858077224859681238952694293814096535599912956492199196109752034974605855291770081653675262990311463691377318816990749078246760147176697632404015273843751237703412270505614909269192170162363189047554536181091190138884268001813613846231898132871230870769269841944646641787852037807209937110036499871963763313646313414189494924459939900792782008518421678011739417614125390967187335149062194695544024060178207468941254113746036132797106186150773434818765596522397789182631302865334268110504740374787735876476447375421721404426584990460463665578119110660826533176066219479935810394072739138008679387219832274629248420767361835962335099944806834553769035320705606171072979307209771324407246351920281462928444381392378509006136838734462348456684572062296778858368471368856403778093604243670891697038173508396614870758038100788333838194041542326131629740174613071076833057528699301165582291924191562970770044306260826938516354256243418586560901738336237521566494719587845234430437829121461101494613798902357368677603763839211698699455731509855977708199084705162681409086408910888852305142819472811418041170882353713992676558586044496943168134423960480324737077713146646853088579736292004035499764160138589625727797600220430011289609827007382602830762827936932827597805913451044792287167000586551401993829590604930883716485446490308946739821944942102643908167241654602140312845138945509429297867055013581630171715726243439381643011264617057019120656728845691111193461241753231615439548544553296622515836859716720741387632213170904574099350562405641629038805550193119514968116840787523404551783182827209858603874885941973781296821799935934746993053496151926519400921955323916607908411214337133614520067924355403679670248327039193116877667806755756033285530098039044736316172198755804914861224099841879862254849514058372093126975696822950294184174128557644950191793139437444681824009198298095406417762985841840728680862728891628292116726507171534205468614930862116521714556886235573322638839318762114861660464524319936336932127529558531768755259028841234023458395555604059882573493339679504933622990294814086559713193166844861571224874201449112131685263300074968716311086740248744619674444547017887939198982703303957125838535708618733923502827899686276228598245014940224796957763617650206903048430927392799228979813405326044538284569573252647669816406300090525571982132322587620647994230532685225382312853631466475750468093780478264986794771877276794881587550075594615513059191123487786968177570154871201702579327667679031914720234655155339042496864218047238214448105901775861682630191045111433304951718987867720531618916568567319363216970134146281280245815706548716468165551410591636603154966908057020471364750435961315826128868944660107734796061994564299217983077083102189823583440903894315891313678762733699709803217977192771630946044328588948511357095932778761243685657143857184981359925151501029606164684130063409532786262515610525655681891933811173098757951425887276240728054335701807633355843645420108254178342284321589457860013037641182358139366388865240005042174475551087509151536611439588767834923325134318788628137295036392103547621530720390693823916735038428337518576560305218895998577753511878918754114299650805487126161880559861196609978690125098648034889196764008098104922395726667587767250061323411495687609794539411379921095257974528070923668643986960364972876739121021464016206718298749063033589140861694288938230878256014758433945613593674527780461689187782266472247739208130955790757788347254659169453667344163791280294869927055451829492882596081381766189579030934595630352237509810625157404015591461603705676498171908494279752688608825661010981702001583143453752178618950129589921674845238138456927489368682158636202953706496262104281737166034568833375194008627755717731628067216739601206366504279027325162902249014214676760726167691875792136130789285421393980674996304756457813868205062889201183285215350317358199717065428357502878111015866972387691576136795421104457944315063286799100011942349563732570963548625684280354489914342040295010222936671168794365564597365665049133361643808688250538823401794096858641776936105856033838678525338075739182887400015480728570906529223578573441977508857206752104783689929196616720677027410786629271869471243891330139196728853721372275743581836856072305848974889815194265934240384558937632082391938914488819401787388900053284909696158076748354878573475558646715766032252760321202342032252767933664642003941219874208224733669712497810702721033283198225280007307133983323070217391059790180383185184259613855831933205176844970011393537843208788074485135723439982808994832596953435768463701444745334515077396016330425718907087187302198756573377996858578770701027953085323755788183467648865400047084985314882231651777312569969934959054427780369875072591270671090358473644817075169728473040322759348049338800790892071466695869232701602815219145762599808933675187610293401642697672672630203067170366873900724117558627839660912899869993953495294458566203075382114674614533342133142888249046758542757581838263752708824031875324575835753566509534220570872097854233186302417915082450836293105059364688057388507000025244183562624030370470505405517713860345205235997152436401133002096948750742353375006763929201717678251067156968957234328803178294815550261286578933653911936648380564420538405170571313391821032745846500702983553066935954949603289023527004342493497381617366550154936878902356253327878572973482380452549491095268011707779685816565061370764299162496143549400185424855235720814333345763365816964745649418234686922362199300463310703131349004736673735809778714384251877793088882670814673792607221799802570668805685454218784308882075497774442008899000580424394021974664487934212857238782879901899783151452441506877616371501519136370513055518336642073573132391128913118974292905312245975511927711583638182792545206526888193201681589681459315667295154633635403126913265218252005621413490318099230686421015609694305410328134520049835302921885197265978936502697846861350278992163514289522311350167680161709388319328887474977863149157387567454527226103856594414678097216049626465070942135050627151384815667406765751250092272098311486777001782065714837817064919662059164204272377850349177814434729801634195683264125110224009030717483893637225001851349162132528298158563605254427728416562647162619344296880395545928834021572937167170476744529032211402020526534260969348677618595308628340308087863163762776623271889108230680501374088084932988485659301347092062609626520415634614641917681902048330361650808070589679093659822410551725304616257621021758710722618164556122253511949615302839272120299042746612675224432322873441524307409583937746007176141369263385836226383181017631410531853532248447827230083824313832257575564416769723574642878250851561168295754998298376031527996588773657058117738708382341603648104345765758598457055300562276990823322064990509832332841634402481785847960070883272683793658050519101949771090676372074010364392191779890231206430742527489602905634941860489498071468119837225121894545338918626310783726406463293699142341217549220001643852181224027047408948769400827959653338048375683597618908200565920637400990281288201958572672799624789273139986968893034678320099925602130376223406778547594286817874992772297248908917807300585242206862004762700611106072102942293340995436495529720929218441753194174441974016550590134353242849028552123459977414307434537305793727464934105642859184307125030750692861560163315056480284009993677852058439536626324318170198392384683658033954642402642437064761573727496628374084282493743060041237339223691068833762378836443917864096144755839031930205803355351878771639283080694480888330651603040460252673450549442133278561957422987072832460347357222615668294690123631138064971806744483452946144330409686382308453124584152268216087186690528124455677063507604009129268044533158806269338381161106109336981708495020269754338375306194889218817146672473820367892926907933263954866768821229953695705337524263194341732902351103198490667860513452107027256153295838647650478736566888830522437888236339659217187772032115528128103257847712415879770516804132607861955498262451226802145690129014338372120814485277045142764631773929339185553982460400689018763543324648463381340575975108890196017663954714490097048260887519908745889633448133330190257251137840618908050894504311337485062794461510182077063613500263132310530407457702300080928800001034748497386940550576407704751961298687003836210338889156810605045117435382534900331379516517874482376690669427675449200940013297862597455378245934300541921042725550075560378416463775987513065051136510121912435069640840542593495015873612496815976739460357199763315269651998650549561126989680727042403242367356243132331585338689969777491941215740799193052305870447155166790836943224124199533997289778440781677610169573796413346837545533631743603564682239867382224642701270518110817093625506955266944675490444135766356678731251881451594706411503991323285678141077811499479751734622718142410764297287597204097425024555543117236601665150750032515984200327145725207259554701521813467678842733615428920340062200381707466605780395645657255759152079162795316359699421866336897351410053478116124769573345017852668759286102877822220095006947221347302941030785022886444588906709204471964352747206216222209206547139939800697638941655389841461722154566262389536309637258604019772602646023543460779219732018468751616644926302983157885996725439103734264996131555712788469342000393402926412558825505861663492165726506414428427677663522840471004283375407252519171042995588268059297169458738678759762070132317608535001154177704442245127849439340371348745343594946938742505588289416812511749985371049558829231848668632740105336891478977054340780029172061181790442498381570801114004674152003436859616222248670578643038293508685992229304403113295688299891006825066038578135477961684799497096986339140570141793892929677080339526763082769983563928629901495981541813767322114724873868437327690822929708922628949119306056646207053136384765423537019211802591770307122207717580267505762053211703611003476789645016664549830545436959694739005552845456461733670759079898709240567675376638434563443140048228374113554844159373378288587703517652824830141828548853772097502664805538510236731979483026915055963760296557162127573885523284746184195802014961571436301051592810377878843677394662569705592343067318098344523678006634648461251423358858794742831014949236231508647334573423833194092442600445910969248815810536796166408519112470352108491023498581941221674129126902950835416685974312547553567037389953424065886820554652405127636121563195777103250199417425310514200796610500199426797674399361062824771109308762483935218679783787278817331440314332637494675554915634681561570560902196107153270763953344407535228694941233451052800950068600275789886692788420374129957668964661007903847206622790518334789904529333729198730690852047839047218801739750358378261778287875182540868938176569704780042807345067932838959535266113428096364136578471604349422430085739321543237422855988955999458016108319871413685439587498021483630604776046879743939472136866524916312214496969075590037806735879726258202505220677853556618616980821206604405696856693923756274828982697745338517057966895485016858627454237851880191416290654251750461820105166763223632077855518165211425316732587254787319362909600967224728493466425282881562428357127654846796493355846340601330531303204515528615329614522813593139305816135774880645169830609212282079404879180929463238324853637266841972075720841436284938996225012549387926121709073334361694458660593719547905177110860187260889382794518193158835496195289210710866971823245473942076579696955164359609212471758515695336883188384814255749810708790667992527279464040884176752110249228031097315368709634142041496671497808102670704420634563347482053276022245593318141045757689836294676139790800988782104835235455469278298376436200648256873309725324001007928893670926906051066110333575037785535417696441166446961509377821991775618761463876959657905543192641422298377401672638199604640530343066254407293104144544848331171693609688805571271992495655650361710436451239791894727823458011715549212317487054535186343927921241773088007029161332532180058713498092750680307314535461221085497145734840225817230251079580119181064505498135445740418459110874247735026434912570147454033614083357753389409338840081418301738269229841748326391695515963749728371751355601787422595484574112067143226720023846422184065721924995033891327080578265389254845463632960756828195270582027243182688732285629403416437994791545203643985843629771554671445747344297408103091620144454152286150850430590698810318495813651802400859486107135901818019430522250891747510718717841095126429604578750468054744269322155687597022416092788650729602967137432315875082959903430558942336646507616686062526609101664377033873651980698584474482818690616022652838668011670704217565495007099703610842833416293165955888354490861308995997258858944547109516289970209354176217545205277074586201742733045801557938644480697380915521922864745113164988250897776579755278749767730345937614632522013433296550970149741365709591705645268915928251477785990797337546781266286670059570670990154032715375889287957604822697534610041372030723761946566582393334355832858099886891664681830629066710918637553710840182206637724601837419482622645837204962421926960143816874255727058306785626980297741091794179115992435690648358765620218693711758126239546192489227202969533446516877798207744425910782245044296948515973378989359368010555681336972938992264935421782544680970428870788822330404907225375508377132335559788749204045446263551279030746962745946511797185014874790106826645092291350325497223347747668674942238341061976698444290279300524634329982918900559306232090420262725572531692488527226840790929290088723329328782817783325063284626727834983587742506343118740827615875891926748591846151892512840008161446285458533681906228504111889336513256129300927544048388676154645027087760436319892992576338342956145847256878515084480032518549456418931466656785662084473415469339603913335518520868261645791326435896562043757790877079635230129553286008890240298493342317203613427782801877563446307781109781887212703104490132149610400515950269992698397827377610139707405523423368606375130940855783507302801992304642852800149276072326535730971373896064110355039537640127162155291551523861122621350349267966699766642182432161470993889789284358230062736093254276287597492658489328993113615037425318792366346905913002299147829804135014957284158051600521545738167961349933835441983293467472369695922705875804868760115641104157244457797716434059209964316209212239884019234827247191935523906154345168662586792376066334989425855704040340174909607599871942551301540291865632594384117812713766814751210066321585913215995557965747314939818393886321832877470614573788771378231046834741428559084636163318559621507762863497055683689432049278565777848757087832254400506570297931517790961880179617144269603788293218827037279899100609755036930416800337515405260662692039407993157001846562867632434353243683213074020989049535213531335407671847329690485407618875842735445072052966209296907447543222485145407039112471597202957380983034481305249452092862084303336594614656804522818334381263572491169191603594391390110153074820712822825194914111098339408365113812918173564588207889511423396887378987808486030791844602623434033667927638888746527723621645525441957164705805455265602293378939696852788960631459432947526376312881617749087553635847499640158199006167827408941196078432909142102019137559393469991570091114501590547842073777238875764122263875224261243752441856033909042880332869130369306707644030282010586623135158378412528698016499980866609591304761370534666504980434424642594639316174641500591615956718982935916970976806832385154468022535553635766048884157178770570573990243662435636846728960403250225599743646109196051386513024065179626011921157853850392162426920650940737595440858503932443046523892884607879379014344477941479254633471365080355529789039905214084122960313148799459382628460740144368447541293116197589772338712795353757248128596959681572926619669415456509006790631614329573190287526491489366113989223034655832767225068116198092801516099732500780695671424139077966326383425322452659552916653111825861616048565732778299747827724747122658307742088969243348789248960813549282945988449232260261034004183296155814761300316411386055238017169158974320380704696951694814515558892497131021496589336488792626027517236100740264872143805156847822450281115529557895641696292336654331288043810731880684448265301678426783717358602849304736019400836124579322097156778315561944980232523538904068317233500607157000563378475338136884743807053555651103048571491709502450181864421954995411160772317645096247814176768366605167413900020438452727621837124033487475459235409512379511465251755046734151228456018384050157037837968687640212916593889511510324962667004636689431049111915320258863906273389522139975858788446016627088854561195446162187969714712502709080031356460590338709758516957272364449242141150966457497901089561792020589342979839038213093109327730868944476762831651041579201418342598587011194187685177787336969746000953326544479511169118802870580754057548241007679475063659105593073921282588468728694153485684044411110490505784780386707199483891304750646735206891507874060352205535558641060009253202197889792978914009754456195675858476917141845518218145595827087015251726743067177600616297208880517324317580013464557577789880316553399033119775720855175892440612480187487876679795328840035945986494306805046686367197748780230624744806924562209454841507524040337655431347224346882662147399702484219810647196940643159112775027793240550308510057678046989401245762376188277735173318921055994996224624633887162028027914483491168132448071579343347102432553538265665157298969241442405502912030457824539049693503081153489678035861793531593011428003391660629199824090011930696901366854384704100187371299632636682981632203535439393372336773353052665801344966434359268096645762655348016400590228623642298489286638125472634333244539686366688661760144708224851515783087573175730517523014797261509042813746606953061073133063517975303359252811923662266318248145119879276060018240925289682746187766972843691345781858611540007035006727750100620059930662081188810043613278144360866251978385686045816178557565757768051617709255788074641386233446252922436401689591187312473349503796489601006515654250985680247765473404455263004245429086631929468233804725701256823177871759910752153528968541263573780942963112336552816108525384788585689607949570035232817132726837961065274176682516852682551318225124717082733237666715477863281004989612219414943404480901774052369282320061484300817432217386907220081266768340681619814917745022138239923543864996995669311034486874479261124563704897823330049977712447589600943284818791529987729916013699918509566643608826117646486896660871944907463970828020694899850088137257410906891164343672822096151475084511191009699594903919228164707558551100388763652416868086837553245737456241308276352948817826781373886164651236163174643651148493665653467182878014418834937246502926241040389380858993926292946939411397696740452680180107168734340334885310642150915297047146599695480167535510374965224821536885964529157648483774999199585421566117897106529618255105130498481693471495198191108438501499057677000071838028486658456643527755294391949329795719622370354218732771087365195249195028796949822412938227499055713324010648892436079757261089158078814601460200544246871529390664864518414273539393778016806841725724683772268255888214896030115724766137805753219295032829605884777214728274374811758015209989256913839375216569081983473818085898627174344050033100966767370945933520716899976924608088810809679890123943294147394676264055173250457006152568066735262844355833718222954571880118674826001118355010150101330211277795457646649857871701348175392994987516999858252998911084724879221135439401475643191417231814580526727253321477617142351645757111570318371969316744821843506234848033084779449686676029407552859547571164380523277649868619400406567457356198683860444810022931232164772793287218691306414350756823257002705038223784209248321391551869916573929639550976883673180659510649302035675763939076319305606070918352682721942766271727874169325844539045109147864175282881005592206299972443096277165616990659708882481374913844627390240149656290729570835345247404890196171842139174268493454065823476012210641589383208239615011449403360987568151996497439221820244301692047321990166630665288413276972022507236883922235354837415678269615044194573043163623924095020460876875357902367090095332337491124394189663146025317305133464213214869403389985509967435905852964691566641827507239552210908342694920513056760522858569642138340757419296032673071980694974773481761821194380254498558497977681661107405958225188170348059966946525044960970670281591683764460764147156105957693806570626307350265500868987902956098792739132371567747545348203159161307421608688330192725250485096698017119396019074750742645831817525301951457821097250193745734469079610825076673501354875996316867199105842255477206180335797242947002956833091362716340869371497672551511942126638939145945184140180836388163475368517976064569878285950663653203799109158700323404229369097501906338318489537151293289751670403196057407134475440642574273998472863657884480064465072176673349091913569850656869480572495938507468291379364878453786112367754156731985396374245016123829950188915130057350038684623099986766803323785176981357065368009624227742065924317079418175234430695849371643810114741193380000056951233080061456883143002613581542548976941684201901717227964919772895153181671217762382061034661249223744964726031983884791595898531176685032509067179341212241090606023904199517162293164869927567783998927297586704375526541890827793727086704452058380565728035726293565987797446951988284915632134638256580976159117497907868419004185084262600041301274677505246330768243767540577644961905453986312944311506412942066493005483586319911058262385087099385027087804617164340481836564996292610613818983714566747977643398690107336149091633706661175741680154206378020177788741017367778760917348012720704904889155766309975389028652986527012985985831462444418906256680871264822695321863910386717586602628703927284860859298072569466421268420915492399510475307212430451864097531010179635690659726996463350710986883964460284472111993219727239132795436480328118142213449426137005165808686592686159676857436094561750036335715973801366638865191658507672290460914258695584662173794912896131467683935277707276513532643732411007851140752461439946148065333713040252652862661836135767296218105742165846501560940019469477311905977754390714665300078273634558727718403875177807457851294818604915481387690948418053324608487200621049502499112908517583395800594336336592676724800439765608649245598441088496847699011572691964947116665782979300289895854445463889061664305985407911849306360419440034617218901876286100163557295804985831917181215882648967348128715187359908773427920957715381196191569755028833384624600858958543015258565666729578359937444384655245893268778486049507262576892531513115179595402514160811922353537827106505651521043144853017403698718603160844031689426587413778270934931366225819244595442152780781880114305391898894053879933346995107837151057550386937564542344380543152270669665629737725846178656028988328968791164163707610874504276734210253284195075189658459395825984383112925601049561150327382937772656526914226317530549815384053404551009626895799135339308787525382744963321409324760542257627723985995493180966709091062954132795140385571988410523765917007456643594070225010995057717107754702959366087322053260773501061229334862098792022243966712924098855577275730889424899529607554380371998434031181631393493578721483744455852865957076363939662062217341624670356237784691340299804794194692379815956319651466126134567249251183735929533458824497444620950295046854169476642948120561833624307246845947143929432308880420352805862841155315624393289630165158647043640155409873080900534832224364323415613280056408163173637625978515841806944721220753011760462814456299823960149406708771310598771506792980994365847688052484509983430097126865073231159177310463854796101416244790490491948935717490277217480378324324519242411226139738317781461473176211655279402451989796162128981780812707915829347885513929037358036684740220976008852000874272782074457050103784710652069779521072899585597962879433156368039781417998032488576414552076729439235304928648427716856850705505681380402942683534855810571753805038124305713552938805089470978589427534571854732753081838029831833188564961175681743108625305392268183533820443610967559990409712829895400532657698406241035309842192580924108888084414541639640367816316945442481113999409243889211153568426186504053068581835797339818256330475075720423202040509465687828082051598886031081674150338774916899977825914141755596823143480368527418412484599419859884278350571307960339295280757205297299933963133952648127946695874638594144885757417708710826730918856398183783682173963798357169152815821687216869091818577468518061976079442204600628162683750195272037773359024482086954066567210434878673941409025754590549269603046646139211134875862264565148589703045195558717562569956134084889650148240478588939750309663757056531894722309886708057361152303325713478542605327576059773736363871052737450024598398786016639954436597664305117155006991616955453360131418339405336172459071188516499153596484825240621819582085398069487360370576623422759649278650600911190870917937706841958213203259590729325152086752043218633107528657892273610113885339823212837264671566772761779985146789215329029086544004551929228877124085340602573378390035548898741905782777029914672250654588155152254409987033951095311414913798377057084592397331604064240050334000869647169892601601653518424887263884342194892460074929516744158892117795058202426985116377167071791217817660617810297318170088100460604264856427730893329411917564416883142549657543353761295009309477228521049836971629364759395785497391010765363599793763674178505874491314551581230319239786195135599509504517939599365054369986141197410434649011354668915703977549078837068910690930004746666913962460532757544908129764242862608650087259884860849653837375635169387077159839940249560339712452175903296998681933906018618938654565897673601545615399933922097386405916458020443722281421766949602813421226567431263765490144977630344078710814982596814002475738132529020471177038461103829105935833043516762947676705828451296710705664345143750713218809866622106122147269523410398113629914355141476977238584767802005377415544621792179683510777908142466401372291956056711724678287896602337426549586442643377953075835752580708926399765448310151869522062685803478284647899181157295149388501322053023412032284135311242492668966015271479273210121213678930367983046815964449823015880669341588239455432411358661322587598517141817117698830757329218807947725613904972441308444619054080883178760818673395412439285801024866365126123516950023097553832207263478741602537728837594823180377608831224582313340725467400765981722675019650272888203053136065724522460062301829600293273031954618440324511762027082822965105357456854126481800290991936684994445364079167126198544615390023409077636606866765555834131941894034774671383352609152357026915066856975695459376208154759418171120432130787318273887012713000515897141729888079247804738941777036982421178621124146133315045222624175154967776646015910512099320301309420385000098191982178235486668917664765424425209071406481069134197198798634954327953290945359267739631188062460840677702545703728367217940192240237806926816349730396149486106595526682860965393541255842104166264850031841347164443928325787372040805929374531239934909952438717167250196742099802316578623658479040531863844357741127433823900117290044673131100747226006101627702541685224648941991491283016168885628859197924961526743553145357899092185805522843548516595205414001986672310557650801190373005678672841280240660323616169300000369918587441834166503795980274362533403937830014101411718228511537623315766895433356145549923933052222775673363641604794291680751912092463504658930469367570449286670962801298528042620463068337886377593474103048124020228707023012025293823631154702960611516278851380625518922422481148660626998020611788228228145412977433294229895131744131421323452057222873380282459724865668705479629724724636202620514005546454607287792870965776596950223565123650530168585198328597478528677424575973510262374484021190228040485773259176269218403880253705742027444603936209420585734310245442362432492163769106058404390641951051614537231470539499358140710150049234870235254704550606392137361424223513845579064911185403117721794432665035222727225709620593127055407383161569153198653253211465471505504746866332680572729314176134449336722485914877055671974999943479805608811022515042949590115338237328563669760139920926973093892324408183713371234633867761288603340747060549738408287749306422294807565898030504402844466761206920450920876787329137780255636769740652006844066643129027565967638796022297516449249703799249954815199617760831172536634552142205017441809860294188506999989213405285428244878789935227304594480928873090368629816083716500193601344891677229478337099776259024619458619495100537343952584412731600805892368901300009421384282140668331360344581660858285499896857701037907779611620234527980994202739032924694288977952375408623949269742238403063444181854266505437196396615547547401158682747732073988863103212303331806219020193485328721839920131433822735272356535757112716564500689985205729580597522951195057919336362366581419541077281353399360078469407801610877278362318538672973335150878721570278508736556552445941083177454839234876107865332121957359790934453303289636001710454979656775494461139204863079158123733099519731719864273331346653527349962045675903343225538468209428204224017925408972949915942066297800552405993825991207045409780898160318892906635008377349765783090714375446535069419566267921225925075518771518241728810371847298447948623642327279132674319746560293957473632567352004840788263640106929329074971490420362726113254223122040873472730507255013252476359599143105984848162204444808462241488613399788824148857885842989135419780285204855487873474852417147597191074051408751686363714195123106350349923040964762011044374689862264233182155882060867244596572801706958707836830625507508304926702145726993607597302930736576703571607240700714552902597509669667686069380681215739400135698329323455871952960616607605747135076760190583492319318297525465639685057715843210910125583864141005431490828508007010142218065268280278527392484291570834326903495986567791702796771900535068805015484794255633197539003124091683873829773618665191915888932219020021658023370914810813749527616602940147103527976170920894319805247860858931078503645561484854188576398206493666474821154475013561389565978706582162780702818720102924795017749783440031535943506522656476078797213874668060565733952985147422976849922853143310786544149737313308088925620884450799279309885717055697302546510273503110549786694512486524760315388380205444287789513340286060385348475897768676034358748839436286663733901731598860687060790090363376211451304902900395410924759191816277394851656817564791824835257327495040519285216613847539768816317761419982305796611474317160869154169128735031338115700869449560766040325318650037876230724987195632281466463176633275709207467844929898315870995237465833230619446874605646975518290070362620814774567703944658337615453967944906900275115667811412718130791527310497335301957524517907247839077522399939741789394091520097611994778667787503428250723966272496175999770356385811444208945500602370820645798391604627349863001536052741687887424569132191006686669408246671108011589352785277204645855131765050414350456596305846022332694837748746139306273688124756773414012616495882068916641124732051286073500733188943667933132479352355833070432113644900599560569491782542097919842625197733197699333786648747887707713450064828839216229570583499903504442567351799788278539183100401903056324018718306831732107326167116191311592582955572264465673225925648077687935922256854694436504069503210136108023613498273571355828250008254995801049531149681912044237935179560131985024585033627368715988057851008687948876389966072474646405114661816053455127385233690891652580698032514221777896186876082974115683993659384674220524533170245674318138909376546017830902209761771715332859213905053814515670742466725081190941088623853960259255873068437037196411961383867921189012097444161733496019028125272685200155505583103988043755483064056082271872961407634442232130650624781060014729712146854509276601789903629333768714246150314358866545214469197295751504589092486664278818042599330142553228497126704912330558010529308522830747064174903315003901029519792311737732988489740497837410361360006305825961000057747939883702797841532203408026076417304645668938309413111591860739404412640998601701771335226892525383815836325820016619064582798100661835004916049656817787360427585391047854214440829685691025874879466238889386564152071107247760794065308670425467583029488596001109184225535462314372310772282727215300018028384214880515792610784123920776330381990394840909113778083400987662574450865973072603260339694230751255074997794557175839167037783979746131138896847430306888031292263692036390058255687027159678534568990541315084245082509308310714854200346274168416410943454468601678205645550825887293971279043849166368924631450471983067314578218180405720900526080119520213389371374746435064667481615255186755511640683782933938074787830605404529847686303518281728897096250819648219743363185074764530299109395909274469902515386462265858066567922504693284592596127515895773050124480749181880588060085449711820222768229365096419886121169606167980191939906231300735442654105653055431456477068709020064850610204714167363918969470719999323033271481880434124005062013215246156528432349699980620166660958419661861706097706192178345045123035127540911863921086389407599425785591570408500276240170016835343238965412820759408522520557419685053208530508683589668117437007214869015049100416888166351025883449764633506953247493901681126300333680524203183733277454738145179366281070855268805031219951883555845667009380452198241768929930041718873960662318343336190139505615644609213788571001789274086198311972010706183171627825764559520913595647240587060893947779071588518788113348858221315040757766437719075398817301146507268194714688984490842965005978938251631939233679543400881602005948122684888750031297428225041426040062979719387649361048635604036876430922108808940883796061849432663794090903711048632337119848420675869210182667472567689668788598710846878121820054829759947131645215332477679985943531498264903200761592675366727819243826217351315413779816631580140680827128446630253004323426589371443829794421176943288400409986272750835525287602287065273335234195838445191745432871168246791233852786577853491508113986094039083475718565859851788193204040240833839994121445160379766425267048082468153183396523517880454077155849627920763230486024944014242611910796227790077452951338231263041479722006886695716862279402882992367915183052553117238747702776961265137503047191687721974054294915547759161068249879332819676044251146924541865826240255399602449136877843368007322570220079864376794936823250437069259136046307632033744696335167440869654748354705626113217729454564185501031110136197943101706984078436110204170340701047628725037856636437972106623509679250562579867679442611075135770946720458868992152022059030615208092278683095852939185523670344557527052896667460084289468858930243980893574270605171744986378840443633257314532542824333747772792106841833809678813067846085298590363269513931630895367088512567447466749265704280802626722193203065360329344130533084826255294848975065489268180625007313845659058192650658915533497337421764120473992877308754382737780848559526950504491706638247097940888885391874109887980742389550312010063295294881219283152641547285690943172978735390343461611758749283803535573459402872816656880102130335347424022115190557295933981177090788413849976588526828832938113430466594379623553091956815998885722233009650365973168149075551760428285885392873997024153989913497687677004317377491308901419553834869391549825421407239740226374009422851572013024812649058725447896737356476636446866690111155248823293879682257353910578104902077833701140842126675216843311348500539499616599833708593748588242931188603530480764359228498738714933428167672508632119225822650608310586050071275800177154208962710939124878400109647896523574338443438837380466255434568457863697823702069039471613297052439597341722828714102775471349751470543289879034761815127484933452539227009537046697344356092786379269210415769653575183054447652795809751125982385634037827099429101302412513027722330595227813672356733208941397202155833184616877755719824321949027914414756187329263008549622996687076145442038771192195940274597042073017863182619126213967061214341434942832341685058186430418587946334878125166117611781336349505613802372393231745670850819333470055751740539619833112887634134125847454601218989151330965651970794202075217017058718666551934978770389255482410215447033551029239203285144926945476539643974376800922711898692129476333151811109549135448113313302508841855785044309829944357007950459336275756501258518241652037844623891511068642296569080959322156264144759219545687531461340493188673293170289845711086777583014279244277682425276730183074566729554746732997126603635575222445146140273606631975500841407801045499097908197877094781969537644993037161079327293662673305683525610693399721406337923916741065661413513589873184547216468245481765647044066959797231465194184163042339767620200314020423839560634092210609344570464890041909804052769440389623932764382291908750094716558441176440334056988604248071058338093949307132419048970118795192123118814538330268217388143274520987102539581016847440363922462183726310189459366851590246022843513695258166735723531146867763123475287714802868844248686738654874008263906647761951230356536614214948647196861385500136624952560869473173120422083308444745937629547857356932066945070375857525433471867779724862153250983587028182313280681847067934063126264450083092068124105603717089520619102109825206525463971523421542855875365924258589321296457953548494929275189176347789909482981567076010823271994690351365184469319343812594381178437501031579767857094169445939388161292211647631937799636292634704572132133998508036180320253768816176965156860856812747766749592719136376447495558077375430087989284294273637612939780166977666152855170563726213795029883008087227570901379194656039933227928123412119401682051273792881518282821857199987368303512131558692902428280482958547449640264334824820547903797131227731932452074189158000830220744798200246737931042228691115773620487158720378995205568495378235386879932979810650680787494542028113453247228645772936451007973944113475904206810147821323616952378152435720965480747960997124810407643261732891421355403908121636860779845596331794392005340665318041702502603537018131765625172287698564234745920203375696618307884614328590459154484524978193019011929677690035086873285001921327675444339579496151595273557150820876772591446664676835305196001210376477188526659202390183140983979306131230495153452334321267050478643792625711832019926973019907434767705335629132040232976664377475632553826108131314836059790886984380694584838775388499613508625026383684267783685846286286799895675356100460782222902882479265556401608732571573831047748509917617065441079100462976504615319725948234474375114276632000777251493945064460730825516998627620203560740103224968535067650749049510752896511023037120264425669736248567546314108384396638580444115918869028921623316488757655911545741567728154161195363885576221279450776402791437679220089007492644154222933750956118605880471837395438746589274202450811011096148845476326093346985850905846115922131625448601601383527814844653973365239490141743990944403806989717240363889017128699384954289663796007231458008650627572208001476835417241281928306946676645277073366731295823319220523723490275177640717565205792876271952478007273568878074549741316349914630555642984465410630011421923533293112119806619570259556330720712450148550536666832890330766085040160867325575897832218225305547450483386574869495633267855940413570794575766045522512873784525210867812702900457719130302076310464122144509493761399892538845494256905245604725764564864041038362690774530477128716596573600077704756422619384332791777252207448203912098014899327051133317044310818649611639686062509088278018574793260509938790455571832712468293608976042434117699513755443418537408927708923821392125520084030896194836686117419235284269272873321501390687795764898762516838370296369802960785336863054547845991830280252701551683596383565834432940341222298328993048670040256044420476634218715963236925393547941682181512844484295227370448108999155677611383266800424027565522026082584406858016091877787754834326840319221894417937540999154360176889247791539352024935924873375362933038860156355374618437757087841048200930290085983637830853099672185701861265087421406477662168233216473430959771449563925642998521288111688987401358186405749166984043177217436705753412105050008834897679510458612467429324237138407052299068380158703318920295587468176725260770634817592476242535747469680532216190398930300185988088356647993890280010039386934781539968209552159661329395890558892677723925710815469586244982003635048650916107348309877039206093127491306321243586191623681251586725054930510916867239030240250585120356843245190756613655491378049802204281836604263793152767702044098843681628112282486488780796442236049941966460871057490057152634290274004302519892206984585078931211408077593847666339421839227347590330911048864470450557078269617104934288942234224792680070402770100265864479406102765216056248433447875162007108613615750901971068730742130021551078278300911273645090244816087121912899656661072935743807006586000647100804916625164117327409038314399217518366413008320695087750900961069799217549002639019081551853724516128771234957849054763823124363384618575256296441051505310433677282336425300592430965733371063552330452486213759078900685553578602573318765803584678299757690914398411907487486883662457231996925094171277340538345556250277427385609134604551097732683673096839156802957820221385364640980854577549060146156071316812214028415254007553552334177656087391652221677321129224629153957973088900802361118200196586070943136664887910021896405338533012384897234980784353340548070090594781897874123580893891578792892564773563722023929233169370542914903688962240183387581263507134188285703913834245980142544014356999348656492846655383831004645259009664006242834584098321566132352721532113872002113158313813108126675261490952086813568593271109537364936382056821645936225780859455381529431495249284209090929538321369006816974167592670044545712466730347312631821662767505729381959546120471034793528152133435749012081272414166908335527722726822492819653837402901474543127486381946609346074931220739536873702311125441089922069757509189256660529263492634747292999283146539802358281733206938603733923573473381087017670324316625325529330522848611074618937856972298551873102174354992237800419183291290225785226809993249606370080717641749610168150982403722378596927755482643326867271404320564127337576621450535293004146134476685893751694724946030029349170825809456933576254195637878631788223562050953755282702121759158135262835016992327865306495093202911621126083702096877319049555474056420786577037967184851278225181145182957196364400293796446398365920052026422613818121179490597875867479436898244536227106878440014173768606441003097906555335184984963047476195972536650214238513035845570269901834205927601120762659079542590053929713118214172319483197647811072836468726129112609494548845814248806427804991213664299725324181847026422807561969248633880120566283173088601071998357512585560337906489073848188703451464698218838530175581398470008499381204723022573925530861029481638847727148264215830067355897304473020043958663384429180791611700915157099363375462679770971535231059535020470762740682540806728631714525786214706249842889694013671734127703045999801907062606195830435066732256881123577803982278119777723891867129514646252492384381661032244112330669223851544463617209485155127904139401289012430045485172250916834535678932045298203085612451769076214798106555462224960455610153823698022552228973163334467658433700823590671531476665375553712479017825347036953185951669656367304598115869559592093447030514876884674918694982576890404634710430413303868910797733811561230994549240172418607932203047169493534087314780605698031180351794067319436624750626508548914893035277111610275918459517366163555410759160782401005154139059578857004897087488728150965676419287018366191057878355702581633592136435193349414721974989634944153490638208545487014736078395135491381678688394852527043421700938240910404615949165818512365950878904409321895913991564692192796028452925845307541944783304448972982958879085735503786069673075280372596496432733694110783549073028580631865708670880648194411547336256825452596366378939089489941780280792090241888070234938774603945879948053393564837021147361578317287148960061776696219623230441269149991018234305802590649184919247589895107564444311017485673660895825656838079728012425574802092123821060066479499626601420196952758942384429097855099340286662678573974940427147475643122276804060591674743702362867752759677834443773558551116004459226115943334175399027145795935440353853701283013071893694163887555732671556020367756009282276681965878190396463410659794733297731208929036091333545587867064208950781071387400819196015451470898766843964285176791677965855419493679859156881163319065747095454385378116573912626725542717104242631560056844483655486219158666400513237005955775113762401921676015708547365853942090660678091353246126763086622973746779583308995470224060038208908346116547060065693427735758731936406647411116858810358149642561049564136371455701097434690096615911960236008958687910560912210882923023152165632082691706285487683744896926986457125460341108967317920784381007362263288135246436418467115322769923919902672137299364680408462688224376367250250746944442888299168310021998077602275765331246423118079658168030396278352091293377600580828400985654263790657815238748590144861957841464797763474843209634888306320949252804530549020335292793641451927173897749570998554371272800639241189369965256867795699294682816736603151573296092558039063027026820463924026893105761890944681211748812006677529480604344374747010594455534497204993145126794369682363715029327043856950248390087485264513172593063261994781928180268906590129621827822820235393951408181828171199935815566342416619238457345762769621529684335363291396616289037324082264711241296993778975078528010623462589911989572854032914520250799324094152538918742795470405485123074367159099621559893940290505301542870776580833496424588545953414335950336715700874940910451205654274661198911341184607122085277826705742781040913185595364898893879532664509489196504324925370958117057756693318605284285743780031593292647383778248467689749376128415517169782935018041297119245946552545940761862708518363210403120680311104844995854228366424895293004063510015933511040173008995982077683981847271677020979425644215510587334152496294741960042258935859337950656260966957005730948114596931851923580486979720146377104840332524728582231867940742469916920867438836157120635253145450585863955632562710243859375370819896572767653856436700513398122676500866277622133001896242981368260255391344588476362747257673605148664659325261441005443110578119108023932295092045153980828952666249368635866573392979409387857529877567699724111384665226855544941434804754463783078561861903127026214301247163337647005213296853841917655810258696613380197863596021646448678896210281222071957438258803028541435915054105697160684048793006766450017096130120246906763477919447593122829548408617205954174410369749095889325335607904656827514543106985821947814690790157896309649180831790607442679195116940534257356370190949310061036066204961215172913827014540751748293312362898479189008729243754847202921542417602435540181766549471629486371578323540820688443052840160205557542194541228206722946943262742950894619412521205506592339824978587210636336192642524030776845193995077515525082434314121435929439659747692391237048735785085955218059732841850417056021858434244431404783804267755461218626590817192705292772962040561486607987135407056322486943299736360326281066765582118888192282121549539240714337886072196464629175354103238879630916204947826787515437006209947396397165086679384474812062794089929048989702149180879038962170275790438722350609778841771641518294456912554102906824381614377209115639290191047030284178320972379116431679881401690648276383075048140879664158741336019001878532701779158868864171151736520718820330584288223142356712165079083164839132953187169013968620789516989669858345950607100516777124801633996661309698665354614387326950704938528103819366178180563282235038355310928887480538099266444127033799950971271804123372842743906812427782844312971358420332839735807661552219526840084597159728138298033884380275352524351716310028409325325900470075623244433117632287074772793597796157259242216795077225414500599502605011286356076446417165258595417832174008052113920927371813856249248324107814930847317996916755155487581720417912624877416164934368074343622769418714520640434581085273667969915007446419425216084658916742883117323685364177269830011797513990129757044097367360591314981608681231692743657804836668391730752043589246511015487249322967919230145897259063968197177615703936384821757835970726389828941147639762032550228716988353790058417049933012606859304004357070936262565305517302415175406076816419718832321696782100259467681614586274061754764507395088274070891132308060040019842254353111469371039734805330940862651971152466231205954168277010104242070683481059154120107448981689107088075976776794556206884822640140103646300848197505149453534988718245038180721944571792871764926069954216174495183162673603467347394804851216009844892662724362225970638402634976236614923191532202449921828818520912128610992568228590445474368047484748801850005781598801213325145214370741026226118770511631103020372459949247019672131638530294668506121563544858550955128664844306045976333781434284723175291641619997141837287765272485487045740169746049172221432773365762342264803284061191299769136917054660988548944584223884202825363104275268444890722895996468459691182424441642334470910219744366582087148231496691504298634731325490565899283166015035869694132691742084142264427746128334482335369696875628232772647363347398242698301851820797335553234336330484757983568191987756499517596823999345894020285024282849693434876064947501389707417399545622011803765550821892582536513675390745733940613745529957780239548348677135229777549290140475729084457609547412503767105374623539523791789497231110653434567116774420681399185451811513230479398624697348534074910545323759191295581902595498515257329429792001299651588493264156754465431871330040942506342035853676603935828086495693762194804890467141008027056266443653397799309751314710325918283848928961921695374477096971915091756647299583873713043498155391331091913334661797691873171088143138024830105127083700855904958852001812709069680535096956194977427200983873913362467845289210341498256422145454303508753575465451573545084578128501717915174211489077396973078237480672426112765754119514298694780319842539841841257210577376850821048110282617808950880683979394116656188082727495018345937553322937818784942157200334696642462616100935945049904174930558773603245222172661018487039429791758062248100810234497607909711162040433982234777743000882252161725100407860199464299178851518230630215033665432998558710637865828136717145698990372115348849863870357698977982104504641824157169874067313153111098957799329384910148391021152765149626556102182621743363298751485082157843438966646560725516446349138803663235510219330611571861177433334644607586841176095445578034951210598889287007447444745766632078891023172158508449451815670327610687653453073021660422961903091035612423257921860082809382302609482522558410319784404247733384319972343818560937405212073785028865614314733258040844800468240199574221068316253510562948738869723183203317304417971107113092282066182428277624140890027905791202207386141933772293549353411812231333398958858549754035024658430568685002859092854634134721890612715029765424841588772182785592737424067612607570270839607655425420385098361642739602823999873447726939709946018684642807947935790079719640159339066159124598378426626093085350313902373949883606072500570286248067052392461945059827946488630889083338849260950568817152171526608809468196963635478018000652732962787942231194274281902624554194418795994975748031042820839096650882329950750456372255940086898447842056999765288907675162817261386151209273938807254857476884776592029227337559463054471580728623585162627823410426768152935586082091441247450449626040022676633442791841862227262434074101084736042502827940758913104683074531167771129211764372496026140096151007246133529347368147612641966505024378697458979428200846063915226903627381289211904121312095252691070465488976281751329717591655293605559681274629091631318272363596245336481210965777947509797441961856444040428615583383348005718672336723158555610595929878625712502163835071103983424918303075096884017801881252004193760359319658212213634249470404313156544967267945844976427128247427607275163121877469862997098340528343505825816852458677064531145789650193978080285828919834400375274360045688843523535237189936655978235648527823799842625139374021212054590050073633796266686003821913726252696463954464267610877414598700164013927932515454070633212600467240763243483429472709609322286753394562360129660473609494967739311800012002620776970124773340391499608031895561513605170689355828071012008129483351215199203435454940018894078765653147490801595376157432497203667287602481994362289061986707337951407376904239838070399542971134294513915629677351882925773305615564643022236751432655579669496109069579726178971030284091470710931034848303844616852011621456444916343894705595765828724245762988616003419143081596425949434031998919251759192164753677347974056888062680017947019736934157407105405205912771358714579882752802741957087132328465162221931060996820997011246846610794294452034495953092185643795797880514883990501699948099154027700886276333327852861815630226656180252898648563502907199535337395972199930745406035507091698903733313434327861768247167395506095855484104335099279979866946923593788320392198790642853624905925636115604518080750906228480121868776555951536447675564166611548119713756418088781004873652137163997765681565138612174710932559622385470550406338689527869713731128333613757524593044323160909529169985473790413133223389377926318707512323457733976170616453565960089803288936617504108627864790447008920481341777305969406648802186633396375364431854310378201060544638774914144184067376056559455859710144011164853524423817637751166581062977370806920421432969920040749996502549505128969852932361732343436253805926624154083777411564434558302193436679802528685369754619818018388273900462188479845995525552632890270663857690565904734575969226905924701737182119084797338537155864621105045388865452425747311772710891341239505017558488657033407734162180541429512268267789137353463962610385707818007488526858445885395663234591947365293495882981706726871557664512482670156656742494080812464255725490841135948760713589595864744783425759086260108197751791891247256647309246790263086659730016439436254202223059431528526358439905378252765151820186662722607347354036310577001945726598485783412293002620184165787072335437472280131118330928208543972535015040915857066134379469113985384531606087691092175461555875739372108208354689084652424732356103508212746205300835550190805317764635590906403612838797431212618360823158412874584243865497525677328014060948693671893558934251122429089715656627974975329694165047622928989539728907733635315002500978379059651755593840229732122156229704555771769282793101952718488185904501068724479565558332640589343284721152570252653240337278391455148547957555491929864904770957308403206876422162700525352535182829987417693597997681758897494102157659785538997816212785046641245969845220415878893116339805264010509450910547803061648976523512399277884371938247296029821655632639202990102743730431141573713000893522303753609476506530697467366831393195746966145708570227758284334554517420384005136674835026752029796775354973460360384981941925180664343457800243545371030331086472274995135394005114427669913366063010182712952979387647916846527033339295948830634189958025434924902862067940593284655077190271912025031359871115589262988571567385112477948474826419760011505076944891092517548071157390485814448972307574593278361480460043196263533835367134876476131041313849143389358971736095105594179894522633860828486742008903493553825640085031845430078990620130791727629368240670569859507083019367770420362839285064108504075918128815820167635509971296655751375419106644325459615842254993598035314601085317905247385000825486123799867015372294696703792769802773999547388296494358402720678561118435351784661483485194296415696155766899286293259224537863024813343531167839007004705288120172699478310071475335838606126598767017427184355106461127239302307852675857366246954954223456591676413531062384938407799555141651970769284420575451589879034966244945597655624667025562825459414619466070895259539053104520088311603584657253404617602857506061953815924428605559674664569236749805670160713770319269996022160198941345260340613634136396570315676153194929973039508342700582998678318375207499579335858635914977360638822999355253783810690938763754920858944963719195624112432651997925782516805390614062038909981382749372349444314011902605145484119276392640665697819352655852166991032118300452425982762012428508017138871502530004428969752512177251803627864309137370901408546940740683221455516249615485349457977669911437859485487383951945781597295047368665787898699139870937031156183052608079557315836642362416079348134634331823087769813218260687752318620723171437717122507019309031207667781261752890891443380832815797654664904878215718350855260775777937279698556782784381095074440334548872337518956377381906870962630698991498165904160541589820726176186149785794776648265986492278310371988855611136361137559802366041373057247928088193750504398506962226283169334491445088899257205569442735559405301454462078144702708358754429596837875731207781314673704746189014362867992540388384154258704107007916662282002955865694923434315434496414131995966663695331191470931917419879331671188190332480279707670280257853832506014650952884697115850463100575889169279102521862470013483196274222335574687411649506732277656907034475572779015906256009439519343032201649141075249555334289323297467784670587307213416141985409035478074761837531667155306062143122170004574075000617018493461739765316102982152303291210172949822777400601198319232025980737926504234461400271377161709171478542038480414180191077010556841291296021025417771227878863425176022452520715113770409175554405606202827954152556088729256460828877186636703807245993956132082802758533880870655278325998805064476872727171734795008311057457277645335866205613030029171771049800572335840146156288953997878663094176069687340442351247549387941420607861909794317009084195294753174199767131929882078035473804603166292381972082336429558000770392635851926265832601127734780095233623996344364291146419811289338783466950041070193654164936094621456167438180698537371210535687508430993486975989098831238871286925767959320738004751056304744034129959407862185055358386542599210284430341384230951745915059695978996102808227666530075713063919900568653039685411372802955870276528186341964182882257656825279440210103970802005480113438795599020159464800155510844546860729718909049968923104054128201097845491773893980921679111654368277558623142580299576936402344645992446060171226823471803768729660838202423687340592229634581344408982833210101581340379777609810417362566205935045458340729831495950754866430869122143908035205958179991663058304407497303122303152845104361300072008129939811104788436961109599733785723361372865796625487421032286709687448234233529689854732488036118106685982074503893425655691560283026719144349823234109014204165190874056885487559204455965040645054201631427869944872657122379320291895187558018073777478656052236306597158400882750810417317932394989405340713631284465177610412329306342728360804283732043853323645062905039798127775602416648005479494531414115807654443045815122997482866209428168575825941400568868235473267743851857366836646805401678379677499498600627204338036785876799522541607629586907637287730951279252545273680685139864310947212181040452521581872694836737521739591794281459853221137295221006651734333887414699679512504819883657298733531278976178026277875046590398205322470749268226221231179396354065660561330535900808181964405719253713676376022933474259367801077660905077606375346054983746557107039818224327889543225527458723788888932963237928279640028106591305774384829785179244999756925845224796591416545333508822940514025844902181292618633637726481930765390291039886122512991764841217390243761825028396641530767609201593347075475602930474319437526781736065712472680191233032525353243086040674974160450228022464750276219420615092185213565244264302604693549084426330776116931469105093163940931511016992627235517781614734542692598352719930909407948128352039644049487448136838276079475914515284088072868439374255171026632440565424304534006142709447168397854534503148322500115562722251981653936441785178689597434195493879568294418413708626369002128055829356623203220886984577023546336406312556724986429712922257793731977633070139915829063883907434245367362825244927508348989007403688394175993676304318399337414471574160025678748751044658151408171857420513671367009049876199056138994300409319290548215303002776693088888264018477619050450632469602343986673779495511177243678773534268871279668179942260602586686748746522012322399726914698801695958220391714741864840992932474774228764984682109037395527829416903930734693658957275671430187979638268434205413709437158982614025761309587309171959535993691872515092016599142641371511768939780402082956365182076840767538880235728608026099717483582569032179493280634403721536901190463683915007294935228143079837799122712335091309631063507601517191454217785896639501183028573916901991022270652860017851180523481903859700497483316640616747677135244589971412462938199030097679271798250843504339706274200052855213847962167107852965213859563948548684178759450418725193920297561890908668254700082375764219212551476603948932224786337479877692808060701184686660990878362102495062753968520363000460430343138547897498475411434425519439076115062524212930441315107532579610774647022093874096198096408594267684908359175722499472425454278242707284439244207739692422010228880308666933331440322449717954789580854909457874486886467681579452742769453444758110708826128702764111630073486325692907206006107492672108593254251659231467282631443640542159590614547746705420218463510636344000330222034171432952634741175679060230499823383507115682746325061421237441934292661776759185263823297322717632393553489287108050874980632655649117726267582704580554328599124988499150508688621558184442360805630521800451891585542041352563537104610586001952276769680963750063627469033075835499390379711006752666883937025638551946613092356985551426415672261415246420136495074059759943513664625709150574625258162816658320170540848810742230662131292597084899946184442676534017740871283036602757740935264148992668455316277770037420090188708270733655901104922480997886589098906406726378624872828250930210889616270639810671097777042018070537326919361118190333849951126574856556225398141447910538972857194480096550637639054580462438732182007579627503857080823132905835396496836309794450986456874287213385214371999630836433108624245225719940619707358288663354447469055187891136446668250026369336670492494335746566931035486102785608586062047114941149237386613864268246541489677015404149452074603133134939197443043614650349865167546602923642330728252637582201248956307822701900559101934669136492797355040746534641430954038598685946043364928233885058141850966967124531229760851501785195110211501365848212923799643208036025351948897736302788361454813540049575067121171736627340164174033140343024471246162179687562573380802515931168455575417547043306289777306167567186192349389928828619985504665780264995630811592204125476342044325038106343637855919539457321823006844089599421455756404837069318342227294918920489657232654555089724717395352978239145909161186389486478573527755830112489423719092968880026567805095806666794587087142047725342532473008324700986299728556590368353098634709081470880293290658718668977372827597643967369150553747161969382380475477200720624350952775482705685445622863933435763925803685031235918876001398278379038717129153152534277100223825355098349554258672175200048417269599195574527802947542061416768408924843037460760177063015545926705722351973654939000862723551704516840511941389639439033113350738126106531849442888636614264694634691902526475880643635969265716023135284248357093758417456388306898952514342167876806926411897371891460150203727649144649718432703579086568854701705198085755549937468440651414678822632060984928265014935982598001395902010950827151665427705849250141529102106510247577471180050834403346611036011672286975540405127713077551287925621733063269615766407648887555510570005738999606828861392184503638919416988153616692856644750994429332370628684199385890370289925155201342002565401569494273468112084392526814837763688400914932422911467562258347373832260655570706682780392391829497826186325733711256526084066511746058719111285166353754539000050710022992585781351934198957510221524563950610880280330120119837457505632700927201413901690151012650129514387337359663212484009466264393357849345229490107979936466993122635834348955927903646410717735902508579717139167126119452573765480253855880881482017375757760166819335239560085478941619200429833351033742329263915285596896036528080553878025683629173477610837912788907135693052782006246743323340097976707260978782535595200155458066635390518926871544350833752496566000362240174356136844958350078127444024568933868257354419338902199661633956338976460627492354757817249432901691642769707394537964267486011719717456011543483739330359337146706832747076971519791871112535759744725270932190932144562206822532534398947117969867967549634273045348510936738998914431803645784385286850529281845171186557547558279116509898333386385847474624836246951833248193278151893715185883011794699581015204032221338179155776078080983844717791696360420768757404807140394499880140777148336379338252906300804469478445746618761398844189738430117724883442830951331712341282321437494911932863736115298127839500303726091591782510866298053681558986886230317713612469105144671597599120162217507496115419124188287949624017068850218642596677000777223417531643276571117356817238969452641162056778003205730823653321935050884994777107581368528073608618497032948442058079316181833864061778907651923183704849631388673738310804976310848582393632149794636765693938245593107633111690959470120091516220503907947229375521777894688586315883901999023605178460738236438086892856572420624993756186216100099985614647543265273732540398728429393092044292424320952933144426862052766937244241466861925641863849530576968624646271300218285329408284840739480009529113297856248336145761899291365024833518685412493357078642989826941475487655412343532964394836020930377948413181278042568084303633861669057384760341105597275524080156274622002740980240837372213250583740201806708057239105176998960333670659571304209179062578941670293856029071898388769968468930054549377912576700130164084386883866102175251657066328192746677811140930860303981531323425645289210412879657227645478131387301827195626332614245918855047012468418352295425078602395816012247409203688350579791173737356730432900129617633559822029833821581417846993601692640448373680036343977978422465272089665861280072375459749863247434620251755037470961908544627221784357862564800679822080446198396554944825675969489491383777749315191153954239245083297316456383717634507329479314753902870618493768394704568603689749366293777195899096023252363322782208020741343156320694500414750203028238658937495846323038150678149388305898693912728449904339535223281200500647257474124099378640346196695232080015529513991733720841835773714997020386120742032295076545629924695264640047942567307541465378009946529051790478927657839631819050284292720208433972265575338500122154034846889171343587822326710077705121192384576730109803101902525114809854481860200627915834524445843575746392989302567038349328231168821177685580921730423561545055781352472148010992218088380749786122268721228835388232303012735789616362682895634277264558598559876181311025951639886317617454256583991106749656848834542923253459307582565997153807441060742452574689713329743192992851054221815564611215315331373891814846431343491571620126878072377870376484870102281405181145734660181672545521774752845841382859483576700689218981640375893479778072259693332514464208621344856501563009574683070837699663057277525672826383909504625944426158172208954451738742194321695414171835172220776375842790836371186297788474671772383472106176530842118376351027242962395816251094738982202703913853290133330501140085374712107853804055269110447746693859876398834499325109593488805113119864171294934002700674441439088728189516106325369818933177030499808488677971267335285866893727816760392818642783495178004257127121190122167075663359700332289620531502709546132996887334207015375420442433987345258718147717483192855541005129229941985458493492051717524964970879621336753592284410291552272528794191969904374681513679442619796195883502719325112228728677803336562812940284716197806267229618949441643353891145100841100162883913867380118639090225715546640355419498207558778282245996330314397449432538096519846907381367320118363867320492779993659270642085544435329791887593666377041194417338430095209478994653653186640055879356618331176060859310877852975934523579715354648917905722678312505141262060370501448381782312168822384631710817666293852781047918844439590574505674063826474935953705105618427343148533761852506102438965954450773961123229054768583211687689090002740249227650892242031619628000817211759848196973136307649523745266365186958695192854644554929363446675781960550498710194605522499679863167283011805215815687852877616341626307302938456368514224993629271197654682146332846375579174178360117853911068182122325241877033597101025511674780879123947074697917770119594294662267941359547748445512292596944993055892588583355181452577395002459274377244988988909988337651514408021330316764229440455876414164752553280896010718231605187433694359544300963214096386215909203906772857515887536967793949390608271063649563659713297153610426778085393189294731315813195389192184695901275307534543359901378600052861786564121964062352053279489934619361356965688135745558276542145843610050342568230592531962104106921244598792556328539161708836111195232303069095050438000428507477292197287380637859388825381942096191953470763768936609231048154016597387809013884002886447495959327382258793976508928040668982744958687438716225152117400490657910535508926689264712839918444804132334039820120031759315509221237418704321406971711631696025977139772907785084377761744861841880532005402767761838589869111844273039747197153209112821914006456483751190586761951238348573581105846137328313090214362896376456692814127813165932625738126134533674748070697020490002254558239096286278694482170361908795619358289747883223867140936214265550357626281516274223872835099287334437481522518535484010538814069760229994037168076674660819852771589720283492886177025399117705325463573937337657827431987756099940431276267497250415807942906040587350623487948626230306052832954686251163156547876594577513237894244496292957277227993024689673097697017802920747919349329192100972790804748072244296708326138219163645109109533140283606950850989437483896107828824780182591209876144488928619374153038078291267136767248139875115889039513530096533914582619296135664030679951406439910933742989961544251003617647811970207422475888135194719960556221064020090679346970719800718096221296522172343913679181762714328683755481304321852957236746626822722778773648275814095924321062523396316981155193722551610825315023107955483023498040999835216069819893092497418435179701293195687951442788202039980347357163911385535414507376905368765941024902807800367948520233677809551164704706980001765109285248726431784113986451734822118668969334085017585488759181775640559758265342811125190026798661688599371163712127760274301729290235317947475612146019742378123674276264356165970829981442202836136358944655881403744061096542003038361550398283821800891479798013105911010400477091903156702282003621578919124393770607054325801350388932619769040786718517372445452608240962421803828061650767291638551051609749973790784217916146523317952302832459752095224906156299843925980286512473320493027204138253426575301221758071153720328223249663233114571883124415150217435192343507198787675752391390309991320780662741823790510054564380375974000534637712524414401478839860088874603910751237708115281258423817410231401886858348237592232283436992605211049451070640522125766405649229927089364097605438596748560623132803104269691189798531210741279371840017240052099808419411422620042303484825488771198122101112895477696171464316810809740192745073855364790315117802144498306657334978023907020297820519534505292855496516597959170391955159867052990814408458359755607496839409196711936408452218557564482876592247643385925424840160104303429282946674086709547278881151122591055700366346111669113882618126143709452469687746456238907468764813657255398900242054019961201411782295130514332540385535195011397659401553743990591889338425566449571212512110420368468873491875119103713406476927264523504237628117019463464339387968227388487582948517409108100381599702369257119791161936128241057649674510550848959042487957463967317940449320860417139826872629496870403251144931116118310247190659574993385810161469312767312212872521798816380609389025527453726248632162933677735539098485122682922317761041541602488518481442172157555042677428947095390222425510936523627782329553997355995346573135654716812084911471824152153113267250489414294600148201474843326931369540248951192511834556593749111254617345545079942107677209658007051562483766927423785064443259014581902427640034726653448284158347936736687357421543506677074600717214238271747855925442891272711416871305229424697088726419997402523869764449546048549985415569332957054391876178863065063571188102733767473801052827468944580284963960662326493699131774762227315257391348867011623530214038651554471195019228442242910554411336115444644405063448833557970386487276146506033725573165956601708053928047575618815672682442549456566108998801015010910432238772664282681912395683297949514241165110858288282296341644261705675799301980605839153278094625815396585930815685603831989212008092080896276790595903225432720681319100261671342482101003203979473846400747728882982697544931942206917426527153681764892978191666000478848448734809674975076016427767450307681293012684596836324450431068850044757538974184834856694332903921783643296666483439717502342108400307361330025252155016568470041648379000615664743138431322063320402212097610769635160444031186039016589887592305262307955431404244148074182537826442991793459966968884384436990239148912122330348393626309224600218434222613951573696632487239701434669035984289415598258718632753149196671176212840407438811808801419325685219028054434954640685284596990052717728139918538555870725139551359943933052041244873549183884258421243757497528753955937582312239264330577716071648010698662590795294916195474473391983614019619646368991921153246135432436225464843534882977266406820913347212374608758992734246360472404195087942081257557692802393890580051672271209900579602037019573675003449364209751413682242385553588167557967587663448407642768963224546995013318633005209392987119620047550891163020680589193456343044471415591945420003486230972854419650703973997045028783292538165129047811167673315639685963703599189026142437170351241804555244888152501020242901419944295488835247293198942604802868888501339537185544259061828915322301354419623178987997153063328548704999286171894064688065279475690525389375613895713925536795858322750717331499181569226445172403797749630245273798244382119847612771413818040245154844495837426941171790730268382304594344270765144171762527097698464902144207529801573343364131613752908731668585201217730142063079544584241076168449898123013377604182566991070368973157535285030119661458246029285108396667403059425865745704164531183140777613686902593443376356135212820122156909917164726212327748738925235038435867961690944476746658996839303882600886237481026070627225920873510692558836355305413630707330915992395158882572956465239022863616634871311321144335419876372724447771402212509923387333743223356289099320949071466322064119220077665043364478784760862967873170003807381925576318711179618904908771971345456051496272011754000188630756988270669585454821129148694811904138698530070563929510496739104008867720629525659029275128290951713110144417849936291484077327677954783312191534140370197341193623989132713239720165459010575537831076462796019408249027583014907245805089339690885049975774259014604552485489013178237113868764264034184806036072288477897641349728152573892656380452687292183089107707309657884723466383100750099207803553995098274775334767006279943896473064178117903763252012948746164543684972800881177835359776401823563068383644717720640767879661163375825518205594084424938363658050625637620352178841104464302195731782988760738780841961021815652689201316514694805389251645592142556682766198779370444399198621187552292517502013884310501583616325794267775271849111294611170983936910592198548680724276410496718443041376365895832958542650688106010329651141927843824478154780729964656466882817971264684476117337951668388896233996600800771217160666739925281120040218569817954708234325819906509407244323698590917317504705840276351631994902489776946166013267127672080861417422267921216881496664799081218716476512672137222660052326555058895035893126191506240242535369777738970594721789013965381579271012458403780939016103348348440734564303814260949315776323295538996402370387615779872836149317092223258510364407164606585382398070133733683907013606096966845447788600208684938004283340524343891834184737926372579612931567312055918312149232993219890576833870926094356739163767296196511641837534494118637443432895232100291630966960085499621596535834336030294165588528493193628046188074762491121366278556498519936177475343855568743680522536625532562333770961672482995314993341228613307292567524457920822997919429458636604284111021724746120801922725788313345180158793182502624501260073155651727609778327163470757774943407615794552225109279236608665437547599489856937909257240041365299561872277755025389808732459986149133131468532388714917855478306319899347394496783252918522125177386413717770915450699417142996451288894025401809973734533061887975898701347261282747528894897550831552511027578225853362623794222711828279606300595150576463077966393497483798206869079225399536524498542711041874221557395971442352370664669935277742183250572093593168375257999164936056917302485919091293354822141708222125008150614303349380931906101951937363207277574670280733789225200366990964296452141226966479044081898547429597853155757763455055832516118096955702088787559672022857766806977857910610858188611398873063653104855103349698246426145487893460646809836144450904650807808903831244514366398768935063852716767700589397601047455669490315654214234741323296991433192805976878536502164336604631953952770199404371854461774334642331128415115808350587155608480795795313293329768071967898160960037558212598992486973232170398926672055469906834666293338500754333365759108208953430839276596910434314638835889952744438748797471701855277208967504416511484352070997344404738056748653504276247764410863298458706106354696359217305854592508837692119518507583413017990148329032038788585419257140817315660429794734487792830474184844255771605017359069755486193884361814204111761922570413324993469411174406056786373519453917213474703009409620802430804449053683929171531916483907829788356803184331515633678000945576744337339702299860247846537566359557621503808752837504743645576883678379310619419894902592897715314814443630115779389695462019489737034898196581483627841767472326776117093436955206680269774343114292423894296054754905671984599418074815408427745229044889199833265069704461133010527653080662607140665538743365265497680873912843576526636930071685428512913305740484572260907383720324842900762071766529267367033845153488985703456231640456227817978161909015340904124297848839801391867345900356627202787528575586835553474318997105835456979546568144782178264863017297957858840209264248757610396610930791761801772583027479486785979427047215842867776524609891177166392132250954910766139973345418809097943944687253346580383311154830008103323809739340327109931630383556984886261533773915096255654976910961926903590328175742823733388376153518452411281327564878031526146044743405739357753398552276463373260316816855768260577072527020387223768045618216189798453073826638549996078076449477593818240161739616139571680773604304209928595296847892597384584294726204106143423053722488568375290789277224855163931037763040650105311737316984995796491397229502005688126547510509699726122202332089110134915164730240106986530199437465018653389351356977685091069167332155370554888471878990202283336027523651370974333786306725016813517774392658418650926573493574700214835023758597642722906676956545288360352410030727849151102934635661414108016291214694340541116551045288183911312218788091659056094083862242392624063258691121780978592854206554853952374667923992631336629322851911512058464997816821861802759078919113948116740739531053103200470700063288260010820052057995130356428799169122514602647515123167208814746766414587957115412943312094320999517478740685200999454206419096334014076961291555365869765239458656519137802309399632337840308585331614229186480021468702023409306486966647311450867548883429560734001806616581099259296321941378746179541795784346573905376396886828407645655793667489343544023854728224635143673531598532959407194263266866485052659112901388437074110391772893560599935199162675252520357708436797624782693808544293357868351451799178434782955873356522302840559366370327267522068915067814482546288459545684875670678820512465357038736512319047597502891562550554206759971826215552135347998176030667552405272303875481054392833989848181010464594352252892838021718903818803204060811390373462542779384069068780372161191767916193228490221952893090909663228011530120644185124015425620084333505825773630607184708221131743921377517428004066351796491731335000938878624200544458045362048025382339111233381205038432299238074220656179435597022006920920591823664514441530543613379760020971298047705022019541506107493084234344025158202056465435265230728627417245627990942483138795984534571249172577451312877451898930525385389192199329518888906322603541088462018670759340496743980427115839972140768460268177748502551932394395956141077356061788331869350002058076117316059873477738653978276092847474292526735381897690044177699846114630522516144270470384349054261884823867074889101396544785129640747124603426186974563410306760247075004739989782393706923209974363705540568092511261299496203543509879582671305807883012731505427170125294384375475988406861010575203512723093707042525834383089357827025614187458445752884659551046160295810895255497945307309726459363458588659249345470207074545288258711154538940280216470303016013308443217351507056116502553811897632981110305466866691161872324794620961946686183012101353939989323429109758294328384588235535425564794670863808328236226140097956161134524549543736478554512357125253100434638834618945023270951655400392457022062349759318987528289366236663209166225406712396825336469000805798293896088517530951631846100390096582967995810964511550120697735394679353404851750044155195337952082274188952966711524756472924191175669217733808880959560902913037863801502454179563105829711914017103068358526615827272113053313907609803994885141695570340153425317512542140783556540221701814139380863499758277780342879690112317227040461287981734462721563535338244488152017474260512855255493072543329813313451993257424385834703408018886042280202678767016617784453267217484529343527145351435984481245352073035677798674305660541696327185970513525714694544130270941427718773448700007298550632090003167415650232283157755833147039211372317225334772664102854145732580886243471032466262206104135653034259219144561749796227672249970365327188658922618830353347618481254553991195808809212784429284761047255499908923306118039558017961910352326123911295628943487531079117327801914492522436340914807609392832170320384761735349390810391701848252107588994095082494954149654351380363206429719295659642699274526841331336109003256113987542748105741952800444607056946427996811739022063249385632318299295790588671242337257064330022502141074600841948736780965340454981907955815698483606960743617967187195559356832633402905350531798191100105283307007112012165594744129205626409505542381964510562984597735365119220194128898088682226816220203868205986381778556235204899412427218327796267538730717427628480358730176687189458059196841101896637280938305526602370615041430950625335879674747566085983572085716869745500449565930458175415082974868349205738162860330778109756693932669954171558887597718342947535371788787050164573546468737311090897913389898322113761918269985520070689202395935528139618525151276408606869429579877150760494140197263184845721507284547987380067464964777921404021387586651045600144867011985660438549474779779327377100864937733760531157223224920494627961067247953673535580119762018891945552433894034849755017558794846532146398904991275741537257180689560978654042992741681435727782460257797950322245773154724310906821533210314300145089185320651955620604549776023043378914159093994468264370931361790803347622571628216393400602224406401156272336758807064115157573026393797732035180180331885644727078458620361463819200088325460444512557782584025221056638061331892334033843974896027912897362059654142052486655352564843032482996300475547445022034370422476135444951752640968243194748246064422859967349771033073244598111190683766482289164718240355583804342730726073787229124557714911293951359774693240566608147308947930165487042034932932574404835390119628999202331075548750662492272517843340898219961658446897832769013792988444054058882220263315223651163324866748126761369469811963848988598401645026984455640094681391662578396331763810148207748638337128290327491672709470766877363918580470272456764396459354475627108698472527050953510162545286690857298984184601536705969554826177152471805376661140885728385195670192690321752036554693247231456864520618504887687967540568787534565544234008236925659149230742781250235637018285321172363511869619381121644885056006143763793822204470228550327871455820255420806826430761291010790281581617280972454403628409303817102917301850791511824510053946706392754055862523706198467342218571571377149112973370727008261434392451493469077020582127792913132940531072843769455407452848054316012127385728001137751015721518558716960185692744943778134099197685636029632869380578305492672930368732092711979034338063494137869754583250542212179883578325491601296312991023803093032643849354099963908428547359493674404749726192649993792699139861575568952551827499762600141605063019751522970597775475228760641336186648148556220148433407635334037835736697702843396433733497982791793046194892657532940432212008752827629778748867372448304830115921428103231184312599186654497202824740322241542955253364953251042876752877486117406260342705092359610059209980556950159483321338708796919350539591482673808881044587545624159052311933297412883469027199260491896519540893733494562112800975076328582788626320969489597454617344881923593406365127652368152554588521122349132348523539603132096610525130492611540131689412264874426623386861326915345754681574761124018000803889360461040138049283153138849842031504441461556447501001411031059926575985249231891911121458004401401856553697241513168607308647346158958239313312505441353047857085188785856097258828920183868816476395725259439112814260561006034856670926092035492992485208184036082251040680351782214425205768895631216522872466501546076633973338108579997335851049984619156631064476088483563192673827231015237174779505813312304310298948489900289064942176811080861825526798837996079135068850618135836927495649068261657317964308690085180950484037791555267231354540702584785141408815587270485498960932898657678072999613889805342303535324154503043845378043167705046548338096341855649560098831180504634918517450286263724001682617951935786743840102542979994270591680011627333520209649475892751585015377488390472123643965597210892268524733775860063608513990445928874271420650048245727275099766717448223605358014893473753407508092146117874206117416800684881544938715310999737544328860557651216747183967510297201871351896609478409338965459312058137919291395720310478824587078964692967921043213949854237523997852388043121322965378296284584053938079275119932892398546872334842789654870502846374423049878788488578572337983639400923439110150202308498975159552129737006634406034623211647175147301040502500959429079625204486286867901647641140725738639314002851914289079104755995928451687454612675518170199031652285420835303507840365529968534767075758137008552643562375229267373310182426719382551297599712790137394673886378393525735929598175990103268767681359790346183821897616925530061440397857885975746575034088615547088468725557532371802098398250692584764320969267665892897135210915206473835262049371159761862120191564182946930965894155590925885488563765235065394586952179840869287509402443392510829292776410226691647575028766524467882322079107746348800813954687083288157833114288542976043571809120013323717697214103865236925326282350768461252666779065484568577047068369902319613977896073080176060341208853433146408167882958523567032990924874220392943501516906596065321263449557200935003356552393610858107700777650318471579002179246378004900704250259714020805575651004715733192546391676940982344668949242994314578163911008839363166797049557698796362049606537577639479161865080917570007514105301929955705614322473663223829673194663163979548097881808378840500182808536644832547820837049176933262796806552078664936834590707621428636467058776290855311404824273575313343248051738515798958632205561831329101046703335816535526459685830379265147414100661166451587105638808645651576769373696273159670385988703700681520608165605313183016384568140706998838728275622381422917397271979925924085094010611889813585095520907368927129433385336677133490431802995385114240956236419139858531060142393750832381723119874622496458617117672275704006401571299875869678395047271704915086158873116011542856186027322391760496581213493370357466194171825338623743772788086799088877410720916144836147648733482447279539942517568160710797855501898788880350537500757929433345179568249024834824882704181381679126514890451994891268122129600929977053069415132155030850050660029295191154227639742578421038800227286248615041120513753151553692758422480357791536852992301763736978212985690264333095397042355592787184927801721244492007403490777302883392809487429470913965544973180065256498016699262524140975282470583879992161952350258469778022761316108541763291647881782780741851974063226837963643586255663862866194160135333147689956708139529866846514870595073741030363356822245815227049404785376477882681806788946277168013899038515666652817267213683294492872219714797809500821971159162178114347197885240033416793314292143445254771479565141053349496598565784355284483248841758346495062960619682275001753994034315318475140033447094520726412139004322761879499391830168804599829031503544980472716802594277732634721741257149256784211207480494772606375674269812797363017072345643189073336155865929282195100787463350094492104510611067508231777434188066558082269442594831265103078873423421990676101863099712070874844896380091128995827954012906323243837713348594110498381878077663954800696389108685549607131280346983414974026682377509751508451082231760542104222465743662005892046641095887708129229990604630334569284738592818230270841711061880482211749490452164751177718561340376359711703262389461774674433018187145033691267200578934800992473854974997068481008774202373351805656304115312526104779044392248645876745105919322654491940489827360181340031714876843038270458375643075887931386265880318959692335169144272883533520158861597075091354383517423056012191816999630272108266470765217849059876774173282438266466931779658248924569872466883614922429824098467569389387975196435652835612704064861123388904139723430080417403772306190421668620330095669062575341989353585681298841123107231447129325804041427096267710048832873059861561710101228788539392541279842677821081638824093921953430499209835494196203746293051594090601831111825051657234461601245693397022146599502234258867183832444911626638695078099005374451602553385687707824419691774644666212778147876957914241157917320527178612710575767960840019704872792486103967975350374520853293738971113521148412804526268271396791900844841209149215645686428295745667387355577896790005322278598715888089791442497776234499030896294024651208235336086350465022808887239377857857864985483652684963412542732701734792866256957955471139519428297216774143366465862913478496027437846302964062882781179492630625824445542626661908969781069148491584039426697110811107558126738540058665955699800238327505271117248951161609783269013743028389724935503723110687273924239871966171994076518892001850930406003925620878967878689527880370098748987750674367163191414322140084925708336656695266283011582104469478298327139032552990456919445306313033259855215862561338797429684520092305326762279137227749468389265265953642683282182012461497743462409289959894927980833078874999123422345995341060321749091466452746076451429223693418712486720987089784419811049586369425393707687705812388033705344841801246932545758384695403637833493146329179122400560037009287619977530464774658093064340313962067215624271285141145435538509018043687542989912220201078737506112891553992735699098714283664604699295939353949347417661980080644163268282040831658597728052783992782029460171421133200275122471751758276522986034990304291082290349241659513398964527576518665656145397298508349525289308783481836452656835389322315156121374334164312043992714479876350146068342646132702982043722741149681466274592489526492703502455331164503806557048871743741390884573587188862323609158585919560352174334610680722636737884177192368240083223581638058034554553336216446331266686240218241170235670005629801369980016864893264404870994328593926237832956401789619616790419132539481663373826051865534584220524874466199163246212373011468158987479612905173797113415219216976414953044110227144301313887863380354114881821712997901261701989104589021118719925742891714301990309460702957597626783401358015533361647731433014675927203756231164485679817837927470829471150621641760014790524577375233554955805365830102349928035531277472056773072823983339958514962781847157210489960860867900919992662198948844198849888487787355495687947187708164221115977246739757951609876739344155053228247351553985138540711203549022740816946801098642841415674606946019330713324098514293098537235435759688251250924582746435489758201276055560280244138761619890743067429660558153855497880274213260613161308632056976914285727218169130772088338829729701122932058132781596183898851717150180934217484436527261700887097698407380305125982721497436390628002881064470703158552120412964090719352873052042514787780256440092662900378008595470142620412718499066111887453834394491052298326499768100250263685440483591829376468766467881524481602043784739273826780223291550447154649037761277794641593778899657146140796530837582631338375524610041409580790599972618691130565077132348967669161902035536091387264683451992638320309873670787434801315715651724268443123407719741514524714823593479520519012096707548519415531090871096721949666080403415222256852980903277773569949854569371618991856039993622517380266122254808727564424347292153701242187598378761661562444390412225833146116002076264312391600008454991473508061605497745498409580353400144606683119253395129701757275402462393643845897673306454766076181834142135134006455679374990872374547414852715492457486313468693581522113310636371091886125468104440841417862516718111015602327618596112243661695376498150298059535969704211388550540296147719463162376224973720374909989151450172626992893555357231500292888325615926694442642765062553301541899010197426772924439000897167538034922746622212521006419226601354626125931776367228344980727098854759382658817458923973221253173958422961846088511890785707767468570898096284345676332937024508905033930214306408416032420149073711219907050519133465082805221836643379548691273462813587660154653844340544156040128629122783296374105589708673007053464120050215432598666978444036642026104840646295752694953540881073901133620637740811118592750707378096254778352238500165704303691571357985678868024963535814203963481469203955865334870262360444239213003640893017481879544961671299403193552541891326852109808612267639988479851248862724021288538205101379778486383901003412639976410295701793472620722492258285529317207186572219440511858869047252052992775464009402833522983505296644794321580751609272632111123263809016235644006409863938838683213945075464701582260271294781805016367004223959007230423185285979144606572191508124447078765295378556863490424462182422058717596378460146099809507045510275030952076895724452705983239534320002950809929827311372490227903409695109577377208902474966324910028880165958715949166539480911242943248724755622520355738459653980726605640752545279220513994007112121745814528011615099880574475570582715092379926035671625426294313995619349817615955610391477661380451717441211340795350515186492272600939617235866182515175312642659194698966977200911427306521435431420395816189808803599289797206069629617092700788249692760602160095875819972253053713471695211251645871147332172039536705910669317472395080830891160764873757982912000841445344708192013961938897022625310365414416579180772164838981614271314268098971412825707903922197671626314228928310717501322565298755397871665902092148738027470490464648893009448747194766236153594300443275741663388610145853648841853985370686398015442784880192699835291572918397671559443901827228580850884847551715118365051306930820672158125617300963737315372162289567342298465450648328786365117142444807718771252388300578492546224934316324788384358087529798899603436949715755017768764480414401558780089002686148655478919783470904538963206967188402904318128766599745832321986321744491639171511285374578371516750614774736214661247883525632168448264790018094167601829070270635710555881308567476007622120396412403803803363722188091720612398839755169312405341264551608543150101947252580915878425912329347115464879664009455734179989269128480958947419675350422221093942022714826922525194936544983780576453941390337044072982486575082573122716593557794041219393528599501487670053534694638722950542226423529718726546598762896950502250215626557815966405271051724580651894107693068715137429698645604994028699500133709244266874598349662238057751054381519929228085264861957398103837922764065153098024169390040268748240584818970849891087506295944921477125535813777414352071942922823118394379179796442178839967512407681042357709080329992381424320782070778686909280692599103743219266639276272257285516554880341434506281571320263445675283446244628265821885095564947648102686900618090314683597851693907983577374015135055164032629586960815477860286712393144767519140698419958086480044485336238527089542732611423503179315264248538976956529800993195625288602899249475228112110884829060610570451244492663305005422973329169210505501021447224260113589385832515616406934793749878902982941358383275728001489825915068030954039870226235398837605914191602949370599148376457629981483201644301689598662601070620974819950793848441029571234878269945437089308701430072603218129869617816289576628105286202318023527231384431024207011366233812077943688329313177486373807552294103241527426764138530913292603327818283619153661257414541212229319919105693760169396947040294718528493060224378880981335043192764990785513359936523757463726288374639142767632554359230118322263642222341963535027185209860790418146116368032403844149964454246481322308206483400794925501853350711767253568783999209093186694582095794999726908134619523193926590034375309663292086154393034076965338576281259812508227134434182679462561959767500082529991159282167630844829051797632502456829934033870499403396784106210202168745425990668658365876596799245482311227795037921750486007988213398830456410380552320175694331666815729556532070333005388025755759444225010470910748930755841108789734276099399797233870852063758575903284432683012602670020174235256632409275562647779230974675003137094782427646853332521784067744970608850226792495913320910470644515064391506560574567407997222471949440708229870898550703849162026514617266064467681884213702074576175757795875501705540318122580590547858542134219442024479873879651975459985179078478904814564060656740975908650415593243931536759377507476876405156479813150314493679935314850753336903776612340545670769868771349469129191793180652716202384260024755924533196380703697732056231211435273374027536608690055658646853479863842201001330379250134154597811596829696620662285638648412417154927566349879218428565095707031978375771789380865170428946189559668062193630805913496432756896704488047385857482435489932807557944588412406579639504578844887988886843192880989861055223602405856399540552304952860162702004232946283502746845246365733920794287903983562688491768339257671056833909369684220654293014011147860386250115835532709036434459259077268656165283736839053011977346910799539762411473521067211118133478716669811146592412858534573128149324444770380963907235312368733155956463387008108822004579295379000464811019881823057389800160248814609968648257345866009263839396208782109607484412662471675558124242206032913929379105420364900304925904567347042911797869048396750254012178871209360763777913402052060711844973916611370262269687421417732904706238437292172846307306445774270705623095421479348831443172578389856508888307835189177629381380918117020914906116264235951878944820956901376951478828591074930757237260822431552785282454034302950620610849906628969410326226180806461708528435152914916774467410935007387150538482679109087730550133463501219299944510896254710887631824947877037470491465723448367303625170724671642426882441514482938323630120056973515460736313910039423635640299628344877652319067481467721168060832914366315069533405593251090525790171079128211527915121372543169367435651059501361046198816498935453030003167863190620179034513575167532713542992720230564239828450583709502248412667198153621639154871684974366654567066496469558717776672084472573958971501017004923711053635083086390133511401513778963909932818033180090733929468060167080512149234646529945943205193393680072209600254686432992326916550659338404583422470519629450222113236820426494614474185325886440620463264005651195167834380564232778853069345255519181479807142012315413564246074537341611569683530848454345818759696990955678786883943499771979685403603113103718861296260605991011633409002241067127592494195926192001841186144746248636166287757944899944094461105915116240524783505624106970150501624858814388650576436966069143055415584603117772279692002187284960296538199529712880922432377804168922664074121351965706292146815175592107979486771452236253120758727549136474596953273258914376101112858964132681967228515548959274682585877908818518128534590528336550778315985606092566824735497534713318391987142786649167263314817973378415409171918007984050793412972020616649312565553691927222562091244401182698819322400399411984444107182167021702187865159064239285157673941491520907568625330362302613092539198496666383860524978435621186579796790499955467761159849314346454464208377168990414592266750176592402343112694077936554205556873515632980651734840200802200357096474562846247155646228718652017638901322857083217436389328094829885635780938876421187875336935447306955380336282347154406078339233569697895096581920369450350710033585712566664269160004044411340886863161211253663457427712336808949754787238659161964118158979267840667324658398070322236662428758271141557716390379046782116684237689553951240960038948635849971271566153288782504641437578216327739727308811189327894446603992694382200460252260467830393218209103700274985348388070662003264241104809642472830020009391090788688626430604106373532980695636063049495806084221655421133093832873291810189071367798800939405388419851777291430798289791447716396526765603299937770568972704603011476215849745591162241363178125933279230397719467251088531322958110720548237311322731437833400984339771188818129183975498528751332634986296708972731820705546835347485546064731170190543217273763441058984677621337604873377425453143979005467802895833832877125081672752353381553911049584953982184402376038499011088049939374354202420921571642640176213030490261249953068742628842258688134577244724229380611521417960902005857813155355240804126422919286686414305802388033386593818473998870122389562841497947405865891888725394857813442063203809664526741285713816886559068293647697949539250559657991234521751962113071380133599755862646390907553267862656954018487136415858570563723883550037370633640899819007238336290564951131414341847544153997648963316425414220896029646972221329947149807495289558468442494117444760959606129294300280085758034775239163730980306987862882273921238763145356499342276971581188643589196351237005933162068166812170448010157583176131625530122664596465164362723539749403234141178075138948736462051185986957508207657110756718165716643405510882025650656814598453867005707440869329124382895765907868842991523686744671678175900443955332390502040262539558545227220918992496543365125818373380320623569216904286950369248286393939008249317932505841166813973393771526965788297008156866108264709526198248177635424148856692298225466635816356472350704032180517266536624593679570724953759010907946815515599276527042316197376204312077082282402485411544783448344102472772991549776643913490984552062114863134535304478297823049299565106800145661391038616763673294302753089256681318933808534661365505336091603855484664891491243568563340954756032273188007352769956148538114416458568635656991664172317440793555186548032053205565022464595538414811314562342636040100650255775140907472427132747879114493185072794087859623977123215053858114355497230480773795640859265409281426506458273137463280414017273913360764742523517964001462348827018647533558641180797844164741271840200239595333931564544429821719432692684807237319044445073684746852430544098605162011045949960376826548943878762862039637275182223069659999435521915262554703481927470303638582034149817904962461469168050823121799853073356589401940119490121426400833507933162072982983622199808529844928166155592130954783280620334776637626267879899848757865933608155585246794326261705534998265337150173409622773164118135410329298775633475767912858998493790790554809949557254995894285613904176016818827500188005546584663961233088533387641076031438173578586462749807070635194589722414567425503494056351232173429793136545967947098309916758359529742683631134916130177323483149261697037548682455499119775354001762280621623982550612509692531901716029399312105503892693073794448264163195606388247235443028026154910427018259552712540552957123742213523648831975275108086853068191921278122208190600371675869484317183156538937773963824125637030817554093306036808694572944808459016997385310495031068013177886567934394114368210926526425075015053767232476772290691409773811798085082752938422050255222509117190252699688555105842927597341111653194535372389295081782630185535289198086259339129605233492374501597057346611652445915810604117938633514594310740015427177111548475410102476309942193972978502379529852473594265949019699638314711141263956952350005946977219658218118838647188370102847976247327466965209453682249746186379444342216197034359593762614360961124997669292093159334947328188054508419623427655513080496771267486718928123094164177208777067288572593995212935072268632695808970936288398396616587251541237361019359648769990319684477211111299243463944366080435769315729253952862973493559082126336055922845125434408694138132835815509781381751537814397657467915066055340857927971648055352872826662939362117064157525229326143741248103815049984405343508083612978040495055719039409655945534257794288432929314717919854046259832686289766060787647579731221570991727259518754903165596917259463446769735650323051188954904966801085628300840521425719713980728243725576667567463545375507373880825318048271051405898686528355925438288588016808610144699975253773954046071702443698040031734889963421714339520726605658994045717325881099604684451894821373612462162707326656435184465759408326895929528960359248122308549136463553492617574553637455899525590391039520671619892984744492531803304220802322746414661864013814195353315738600183311239469349846541111853291944320042819458480206526192959473180706685122323850925391314568281260463385532424797893370129794246550838716677249872877764279904367657415929177282561371910424195716778169242359184002570616755569521345207199674588731634058676822605740002523551165419155313242308933851654734732150971745297264737852331720101332092258167074341073798078385057091669481310136711233863844660484385961255601166585092471392210423685595351113604155039688866959606602501528609122370459749892477043062528250873253062907835713887751162338887427159171224756394817100625550613208542444554920099860965326171485996287615308062860823849589081446161618856694434007029060384758021411832789322323405450830575549973997041668800744147430732165568100774393121547976249041023755361177662122240852904724986777235120001068400509511203734215839078685118696212377199022979681131277620935056164847778106176311774861308134066776846783435065130679999617469931607297460466186776305351765579345099039403821818750444324291832314772889173577476651447995057313345227408688649198973866559022643892786787210606301350531766723013090326400675036163777641898006775366001104626449567149039329871739343145782264199853113331016900875567766614077700324550683398244741520056152205816914915644654407052586908436353175904694442324651388156037883223700757853471919024438745133353774835252839712360848233822098083882433614073179879867731551732537103601036704992878623815841536797425715706488297905240683636670627548302808310308677213735681497444296831624568853836367537992763557618903635641798200530624288872533188271469247557105377614199059046565614331974705082640372961525042412617331121581029249129470688138027567761358813801090411507356647734910755084079627069161384506006049851090011139637774399436003213129787239813869416235186667094077144911188835039554502659115791763544813162498031792856109457833280971414782586417255824726702510605216156272278719160976399092863315172885542657910837328203067762197473120971464481190381575238186657913984102919128388541734671044985195535869858584627738711126057152386374841267317176438740325032762297116411744878081227256057402224428267039824069174718028288010106119789405339718263460836209499655323382340460901061062296053178407743829686987293322899183130324356432279345189108440560625919117799182419643986561598059020999077372085363425480371262941033161352655200299500332708984289942502392270244552506727500488234630931933433425943870144937985251268512481369686858388766328830851319880810561550161022042689944337945777236071123303715930896950352582771750540769440222387825894679357938061988096092644407730385553747909137276399302273269084592409286468443626466188430023447349659987112595669499754593906565001559101754972620795039160652559112777714746278544971863862371800432306270269344404981520119306997281225525752900142855295552573123429094918924854751597788042567825175401103791073212027058030512147521026998445988073534477247263326962207946598914507103508425637943799576777895145208878851532772786453414537448084949488284556461303342906098284981189129964552672030637334682551601366551498684762418969984667606471502784085434990319516009042857740768779758334114648620406806350762557352433013477917794069986172207128433366173686371312006978415383079990028290121869860205462661855926814393685185834681019769226375714615416210847211926844983489907909805019216879452414353399144313512550285802952393815473130185535641470421229368921532886355389518531959342200692713138900886242660514513340871341705954544312322934436305762260705411548831332551362909619635163113690688765638401648851123125828643735397205337335605280643202311820697540228708638439799700130049119196885824159175863720071020753858851092064088810147204797170384608943751557205833975801252786258351386292227980533659085892144365919553916898159225322383906230819706176421351244375018813736826216096943359917996996818013178837493023432747660832207044423059647712214563002180293655902839466274880780151888891577784051412654537808620758850654298823259713695016648215787576405323033184500076834404623200810108836840119642668010428588245453541447370462138312058391589869571263365996575658283765044754519981209585282355898405511717668544606503914169482304525543211296298139940643376514753219429392946460850981997087492572830045999897720751700616339805918822861162851108316682458597360785340424034495144853801163218000086777942921801830714964394170170099813660653064824495738242103870170994833649560876066509991938255954489082049171285978964892264371394244488570807014938124024811669884086789600376107901684567027977943974174358226423708788294277550045357586861667641153061205522672888002628291147763166591451391218948867284700761246202782927005901735528775587362936302345257395610089734591610509942270295735262258496048708251070582291066170040891289956253578321729513156615518943916915206001208908330302216562190949330164586816832244196246517150436491197950976221228667611616387714629015053360203176868351381031443256899717274103245314042027019797184533467857365031153755696700046619586108236347817627750619390848035972255423107397480799827813157890466234073866583869658571763626409750780937816643506938120158190549607862054444574670145905312598557535904863423934805814537027613436023287579441214053551187177659631344077789706781952412459482387302592708248414150116840643647717403047961108809020141408851672094339229509872540413728169270310047182353727468261108708579909146961841100851547232064302058701885255154014382071614221064545640269112272558211665064479448867890039090148534589826226651353985275973300470315095059087200395241832032445422853388758093708831957037294490802246567067926762697199389555767451164895587329987778653002698270996916474267798507149981843185238167766779259051818051076466707638776599727118310177866943809665025332698353067182401653265252442484769699185691826112289784052031182570502398428124656338148308350375341953167013586784175554222341796857913289793022421045146757224500850562220504218608879064866921092052104092429139876416529558025054040949319665360180351431005293390280869462758041749726434448389375998725455904196889177006766666854303630377877939792476056516654841608649565162670848768987684167395758129687756166174223085773892818038369295124999039017577536381995780101490620622691263662053745174697226454960606384494281978751875808460301652880197991361019680571329502200416967552138114717247104038238849619028906024526384502550121937936138178823228365439213859183541175772808537322392814008087307271711876754715007915084976350302409999974489528159497221915701599508111200348244331211572825333639391783687682650816205037922731713978395842079209228520359757833123312512803995420675928015704967221672446359526147719053000111282478797889011067996471526954614506282549596710462597754501805774180907616373123440705114682081557601490627754395849573387453554840966632924481457321061656180293631166389684042570699096797024484625921738443227972510984482911902499181407307650836426473357342755820960075801896244019726410736040326305641314981222523935213906079314647437193278062386228434435493834622639216607966693120331181824477607002082131965080554160602445166884390932653328841378196106394040403563032246558746202462117561254901209960937565289877190808258973441520229260523881781249266141510473582533972549875556567532123639300102163468013668075885260805706396644546041699366535709664970972142182037407545269348429823568855752843841047203315015742469804002157449130699010456929777397289993590294764846548142564601757167095728765212587679555138227989707317931997675887027363500535140348177394043372920353575328333545337203631277250971939741900005870107792395519359660106185227967884340518997533788747527203531651486584177747707654104700596073251512730575744858236507639769963896117333013567209537870720908553559808691162526734738395274079254315604885321223102775773616892644328689805590051363408787732750231477343162293446686753446398778552130060052593234848765055613821364356586007140205398340788723707254180886568953639475361033510785501400814447739144615645995941895266339887452762235513205124003749722206026240933724530948723704348739895068568136423359651042404331845758798782718048188565262667388660490245483971682440212628345058808085312893155327390623531054365336969925129872771288392324892973605196588621687187719860120349268911764750500995430319478356139912621575244662955033294873970238014313625707778472329819766379423480640061206125921212766632773390025264268529977262251200314345307682637643405112950586969782884933267923217480992670360053597413771705307588447479394686016058667852829070089656366754383615209613591488742545400195538924438845553170904115464463688937134703665807701836922526704843613975208498517955867298488327928326188329132679735855969194290588054206561789080155184212271761229916382428798569504086627582104809534299035594748197332083410625945349376232765217541622478720846682745934976904989451320143165596031798249059536581046330654143432454539844240230685666370549412916302617015054111081863249570590196585920794829681323174743408980723141189091036770569230446102971875520802138265612791995079392353397012985568651641531679401100670323615055530961108939563141810602136483759754342513680811307005475291256629849993604937566325352977197217115606692241614965882594280143496185881851719445467197889493276838157843797192996790649289233808681378131757128692339848109455436409086662616745686160352730670227093424734821623567733353923588220956408231202500901372271152226492507244209755488220942577514879839698481546450667743874669927828668434164742857551178722226570781086447955229516709618728521651589993630866563140347336546772873501893684519093566224427961316587751575341763242719779406949730557863354077618844772213887181179503576884589712080432730298968503752582198882585915741233834057173716661098623295705745416654793749684690446482100449073505774951773942230212346469958537798891711463702969521940713933128104117952159396351038543168219636970942477836604093985675610153837261830561000789924556406979454612095899597758852028033099701370665944844655820306925704899512415318293943119627307106617035011920220318773080681924691805067106310010204115363520275321513464060370801043384678644690004674401952256930665471223025653801698327178510306894505476033107833898762356324706166898613812056517984742781862266328325759188862275007360463676462232278126175367329113008477237838293317301250552676506658688376479693558237151125310288816003013027275144537896455233013108528099185815418677822995716691427303571656067525504829771727524810154860014234841325651716005038117528005442113640444072789086610665050300992175888678197167699788733307657924346844049747849211566381114386233358407964971450079322118386629568802647108034633917228372759043085567874347595694738380557871613656061642595413192342134211646758149443087278140725676182253772916963959143549641052480516261362219943895585738686791676880005019084191486831695718972564306429998780518105295161282490893196106486416378252793952469843104167522389586452554902699241371048716924274289583952427329175712269966538441826287715065888495346150358397627938549387884060278868821917936359451473354823674412973158084200708069364982818992324704970164601783602061981559742965418718302372843300998656742518911010150400303906798294890299835884356521833721845250389202368213376443385845671718896038191485259555211907118897761762802626750507068249337542226488607203869859375138604061326240830274303297574725155974880956546680400961923743921200194994559356527961303263393988721393900572801945060812554061878656954613921235502315780400611451654750475894206906969938090202638144538781824418776543094543660242539682580765540989989590189218734263947442241086918302968694090174706306621559149782808192434180643753122208038444521776384533978886722742733093541510142043899720580130382694372977601534911557777533779267772720409040766931517367857888917434061366558400177011469670456348768986819945671738497764555641931449318702350341031801496705732949269834013049858090619998743845686635836437300405866261505948682745389835225372056360346599624629428570352290590105097046009072419835332982587507218261012060521131600679527586539814160652101656299709055274514469340238196444593651934147487032072819916822455428175223282393882176612961650370372254523796452209594772495545832794835610287339904562384647894571858527636619215923102224567693885896987109132110311589899127567820058093880080079156592756073365185243590526360254132636283539810389668000785103995920135162637897105472589211423768431844029290388986873012352955516293384596949301843024364064109535035681232702627991685928673623907197383783881499551021641952699933478291889738652943683795801756107502687195347624778205750410790196542011820773632651163630249071760112620397272944058844584698654463976368901905127533491501185912933845975944752021601045579119445648984276817311385942628033833226617879310623281184074868479462995667244695618663434842242496807458582954181588265108446703269597898370384591734624502880966706425996953257456266780780932774258236502952240485088593930682408254630776746785365817738142102477077585134065616992623357361714060398142763889152220254089566388643112732905577734388764661711381221687778871341534299841801106397214403992191392348765963160826921583146531733015616520098723731434166005337878917814116927607858071883915946028431122197904366626865875535430996742670167392133428784671919005080504919600602022575916873068612382697677117505421246587350693358972465638884103320764033007766038219849843119920803058910354491080939373889992539004823023750276582166400803116956421371614796130519970993913054583016522710120823049888018645265330592774407087640959303278045524069815616364832545757331694658921064134816150813054933868724201032146143729069154909522113592898270576348273463895291892303171257145579893034715531548580605729851683341530035858743681063612097389803966225912039724021463083485825621885285911320750778558798961683523935719252170917742671651377678917350441562714331358953258916434724997044145576418403005023280296585468787116997999303057612087582048086158278181757719938801145777992397267907469198659464109812638677095671789946411549249946152215602196994597848512626523402995791824902459984359365282562693629265656081534001884312578305765823439585791020827671730543861151051339687229842405259507428728343357197894603386970371180089112926721972707538118512285628547326840851345248872341673630061597008157331864676783304716488446401883030538876572947083935914132478904599055584405016124859268551821859491107246512744417024568970921805595392833532290684651296439231943351307141920977342647802451777213900681614135363825466121170558382295273381407687022187179771721223251872657768986214233427537872076632328878457904493302241296383961885911083881337871012919168914623484710369218743281480988656665280189996287475450791205148428913146521262820223328403105844972780290735887740271633277620590565592081838078852792317363612141874977195320648789087027024511173506417122153615704076702358731207594768309258558932209243560793225493447021570670435062363994084491122088743902594391570186106658694591255082328534418374360153353508685804704802913103680305746516951377327385201990647210730347569355830442376528777209260780655682546433155600580357369572884780775575611499065142320889004820168230755458590986974300126682674480379217710611522478874246995173079077641494595240136684092125712584578575651533331954708587244478455678261700599132019071802880310508644685449344612383863242136104390677176763744233328409301446867352986045433943888127641620214386815054352391955268355701363117221090643449608246716752612676490828065974700684827030629937571204349855163821276819756903404499326137493216774984484734850419386865117220179246202067583430542457060782241037437677712133124641561170435466732802906683899536979863034906361473697056311043620808299831370191425111919001047943587664751246709213406632183205028286877674702564542002072967088419746406739634543799747981077294662963457247282521566213553102129290521623400562186223439485449928763590855122950426100792424029408129174778691395392244717509353140742994610931454476052468089201300429687733276264267782454452089706856028731474300274300880198494744480491972178647853856090919349709258396917194487318354353059791982026417539203904337510067446638992788086007604133995895798589923042269595012810869683934882971693805292021192624595515914985637695016117141225783038979390287441839358886305989614069155584254333047941770929042552494012397062206327979448296628496442740322280916569559392230046309354537461138222402163094779891346941407964341940016504824189799964596909680269274030473196709552025031191097867131561281143669206276204582704166738901450294747388369008800177084584398300614200147518569939887701643575948108537761707120221301867714176877138585734101845585811195891102386192579192620459296826942801769580118556457239839020290424382328924449053840163333070102402048172976565921640073565860542446816498196874705734796672718591072303176167346327379076856077911903194288301178566463922183677989371960216997374695227116067498536317534298819584241210060981247154726944333522374683959913476346846283693953506375978192870831188657886886093167837788221621140526643157692454807057056068422478952893236226873123451201156712615957174020209591905324206146647311724105958281089091595456341445392258490951435594393756096271201216374948422744942554377057015474629803495547416519861708663351384050934844643824622490257018753405870162360479103037902187576202567784082029912639237303754913284058638953197293017767447141779792425749284367498323480095552033627256007851607735424261518380358480295841280030354312997803189640946529316804298527228239108177697229758860895585959481382327816876767052191239769551889276791070262392412890241957877135048410240273385002064710231873677876786159078894692377385739141381778860523816038934421242017106528743489072186008556064926523649817594356626148045657033228404737796022110452352123463119300881585522471190435818913626378386327938076709231591289949109471402291226455763145461894218109457441416601734058509914169360880185994497549132948865806681803903691138872268256343847835570482480867950106748234383079154210411009405261232262267848339169411990285466892291272055151681264178656080845021804657186531903686531279912705600435436307709414717574505297513503015834952026215356713243171205709697168342624163675465985781802923176428506685222287802416289459850964688275891122330637346285537844185833241261252131526627858724836861061082655907780298560227439034252552235434107828877522727009277894544361888693805116317359525555290878525278107027254408833495899596106038113518522742569132707190271668685750399353773406677493728634708899660911325128832318759132344753277193284963729325876837076733039701307466387600415316497765839599033343464511246573436735292774141199410754368254406170761047420259481325495100479809632802048048294785641114297337663275577191463733464897280279549137452773313163774733019434763190637765258670967699725049149911395264645614353953049336690481193458446325936899311993342100379446487927265747762190768654071529433391340565297382267005420532863061010694318042842383372585683953116949408306962054202887446866294280066511330501812277818639308676655968944756920645617358072540612748527014303197892620107563678641558236768795927396866930799472532420316581035815172467357605201903106689317502823177670685347528054237321485462057993549250970133832756726799581294775839892715939678663968169595176904403641199840551082472993581931077231425573504469406512304950420831252341902314301528182155191701044022108193695124887734688734946747634241619403502653106316047185289033315230661380317078031147895993124431848203168733762907083670838043255751460950757615380279353930685585160936308109868054457821618789371208187669685742724899107856155445289057112118775078715161692041764349454870646152607966833608929870915111368429030788939950286615602825637759585925206600579310663766966285561088116308372000248981229187329222813895098250487030183096500157031686012290036596564550274829148878835527127652833556441277588549168652914931536266587664707504260133160901219730693533533647222642993968268738732779464913454376651229632842018855443114199849873030676108016515543298686862047841410137067523065794709789896534691598747774648622552566922118370662043753269535295868887192032060513793915182582771469003417273292228273085656346431447752302891741143831546118386931987125371711931133185275748442828923572267165977259817950236236935959631271709856779213553544783866284116238502565182700378809591690425744270728390356615094933612673487634862458318540509020950719125307103692884070335368723709689611757749809454864638904225532506636616012324685303252215899635301223950672798125461417124591937864619638952204137681236841018809188484016648147669419545943530693771579226448549593978615941101759392036184870241047957937800062537254644373430911891382318789031876878518740665800059188431383839019429622391143806851502251180339250277315886826699401512072185309515452535614049185331405074892602841189066547719868267469888770973265576194468590029852353481815790719452533399745596690956030003924745554316865776115075640365755212928793661852426608196025531377317088034988246959462841802283906457904768227005106309086197878143416538621704349116431372147463362015747752172248987902502250977810522205142260526894504868276066953728569369878000587396611902870138522985333858193843484589963975270011256206925555604962718525388811345928632035881417496056984662188863939262776238937854651717681067002623334272512074453716624452720751563562849059544334019185256880509881612390920528427923272471410736419260094930064751827584642771000395836761361449828951275191319316054917830702390248274418431614488695150236677538323136519488358401036007771962379264426935022102626844731119098152511247542293726048670420050331826421468913528723824105045204224246916863794301170646453296911613155254761815752630056969844887068731086126075475816467792952345300999852295776477749727850844459714016855810813274804686747419530874879897654196528028042371202400588380455929790371877484619604940737229946314495972475805211453371237510397964937920145008103487128721675693440292772566220094973540797669942102086774406721426872175944469753742081150388749325452937883727804329662906773377370411215492330154418946832707166679348657331871965108050497914295494961764482720330450956273779322612084926104038484939776656091479400157369801400092813002302081257604301838396110688164363927927503337495231859719386859334814075946616888424770712734246571856611453903496767258224125889293707936560314302024862982983596350109754917238918786454065532991376680100853623826741898204794090087836169541133199239293659884578557307919538255705334059043685891336704613194208104930432343938830931637080103251143099625760137269528158393066635621508660321659644543745147758998448734969775749393130469156567410268022708704888967917872254647156761756991961397982738687468188366922895223082554898457152635757190386140502227044237135093945766992806426328715850580860101976260421009632219737963105270195491222204473619050866141375773791427677638889147526888157683888541652001085120776646547331100716069616669258414949820962371538379847036507376372067131173335873480322487500777323323261472858164467943196000478662478850698144237680819411930126681399463623213714706853479433263388420318671456390645107931796049400074631426485141893081123313963639602269491486399711901855176268651314385538673127194114193653617519250651082270700628018369448893696320301660962423066501777952684071336626083748632200005842224500838679149101069203398793232177942304089013573011253005361354291107512309142352179482456800759904218028293164957880999360859348963769406067537627155498567118866587924598786561573851990181606110994892546846931544814670726933263367879766089934393147074237123014918402897991255154241223631515706709861201600839805591490458337075064128911750141214890931044165824093610524104602640772535720815999266751224184975794223657859994708773348337480872693691369118990911904758347499874431777435828378620246242340650125693979262622962805826513155962538240846000363813463630617151798214639780958734975491180814989049531431609916733338593090479787470773970600968134127822528340039812358102320972659659868850425331276346316484956750755211740795312336113351169751111290816797842436048530644645869506697905011464012125008664504339489651145775328770439815653695728139414824559184356538697902761092653570793714188666894399564895444502893042276589567438074189460692826505070461372513000716260766527422571910471202441035022118247760055457056587287330577657546661613704614260751769901155063505558046955457604555524288138012958416692652002497046098104689830585149998036106939153399487609961719000269609147434306080896010424143837964650049620373663233125755874185805297005953677443707160404256364612680099015145917974071181960674074936710292598226108483649813264460752524405447027029751008926174949868466409346148407950537690237177136523754830826685252019371380756023192735767419521394233866091631717743021250948734902873647136384240192923204774401697619475333494848069008544896351522737879411178344175932252638270878973950671105385656769427883119547247246664650700894895747926345984970656583253135448997487884475573193203513988439199757590061234770100647180351934907216227264552927789584990636856799273852230363568343577421338844628134078630855516311781175372160623220716342304483765788835764409323728678740271279002341901980981116273502775138888645909641177063691902995298656233096779466978038093567050769968955953881681988899858848164515097425268611322820262943924367824830133251590258026548858275415656733921158521103608893896938853241834969065210697108978098084606203412124581599063953103838784668395385984214663367003148544502129762473840074086686664876451876995316894513474600556804200168010765819852116575641962282963721751061759277389826645715269009135767194951210242967443470660203989704740906869675275435920169370529087449214844556251324565120197560249917066831851082049253173458097776160469389092429012250052889993174341293012394816947339508990392786219113936798420708073870382957715399170755029789874901658369316726263962196019252991440445984178764996542518894847427876900056928599793720805597358064512391380051138118672747424396463446178647332235280921039828691966875933319003367039592038844083243881922301761657453503315560542479095217461971265727414236265150234177269922651801075155932088404493502977848557343941035808376694787710572627598490968253113465779218645148503377774826441407175938790487802610189278194171919922731762704664356043707068721574382762822899744140652445570371786586281052357052667504598704412255833151998032959781162488727421862921329585758713475930236819054377695446458615494101024498147023714749246924095249320295973416522863669535165910413223826008446900918793393860595668899930258861795166181906549798037103952371672509608552922054288188247523293148760118090860413130445803926781880939093959836474823703506180783568214908851375764768480931665032169453251448974128911195121464929557867719927971715925927608576637856022187822087958359536323218038461230418244886377606835377194407057449223918702503336580446830390586162319977705195531431864896806083304270173433760951357559367889647536913951466917737810341137710774781663346029207680817010606043871946417173450190967055392946879354167694669002591022604721279896005735164378379829770142156178120644525462520588515493544025879574358740018952075921703997728706303055401299637794976359615769317407063167718820899520971151245468373015480222941445331527208972093096716794238333272714473180336955204706432391495098853593427215747853781004826977504903192721208349471764137704722059269614735424973245505654375031330373224908334257058588854070583197060415268949318423097392077593694620217321626922412082787917600004771382205264531581107902399089088502590758983242048420790079624489765425052528020907186823049276430608324416896409588286841921161198445453212543649951941141143435169343415076107563294192377085389069748740481159533506791732826132322457878541536463666523981023101913389445205273913757092688010374509542191659067669213664519518657136190713905404776798433106855420217653220096436593491585319863729788252821430774855903214069350861861661367356063476753050951115225534343806563579634080132023538088091016340913772397138570686706590915451310805562966644991345784044098441002844370925814274995968852503224217165557042826153093567123276235373574566588639426164757740982225483978708152922754060931644548419381332850838527982066616938476821166140780612970684349086054839613353789763265971122132820678936946633716956176378548654186745849375865890421907204845628097861442118806439613581084782977398998315788101566767223975973949116678718312733361275475641687363731970190652272581240236658446353072633188340282492481220501217655015675862958732487907063523168455597808603178306838168297032348181206767722922007993199324507575754672363321599474871876161127988317575095409308638977442058971210307439903164165851568268039661638065190774037973044059441270905406889119390031075468959802727747436805720855994314078762205618198241631844525696174328839433048484646950723642134218742460389341492154537603769391488483385128937975392839181360904807312120318119789853239890376555961921610780309587322439661315238511729437840847395409031634614830198647826074965975401489893753454379045511749323679719655980997840582204367618001264772688245663496922683918322563915050253291441279638242115030516081015374842901128569162719042843791538088917040915760631113621396288396166814968376818157994447063444949710607588419365299377608938426847767426495093976352226629888715932042367525661481008751501959952194950947720602527090480882046874411041940547347906791290754197601956045204496314836479996200068417221893629984603516848751034841661073591826592234943467385470668229459154709082487644231008817887992321610445283734829908019623139439791232941846441808521159184161855387340774660702560223412879477358738676402138223120247581392215192626251614884230572070386817559588453451558723468671589871425234364143629982249855948513828704893090348374992657920386547693175113794927966400409403926000325262936341007746879406473671637391713696014686470814448154903593080411925351633778831301332384503968305717844988779111957373388274768929092329710131215327673338535714513819862861334959745243300000389262510296062287133731760069468683933033875994170565858915133382384524006698664955564412453465645002957523021726902095393077889987575862428795774747470432138787477254923296303799803864489426173442270828764543793155946771914956942940476381223784572793352001307680149725104872531690612851707690097940320876234187042339806229695111251554079001521945707723625846672627345605093615684445184661142418355724762540684112746327361271614404033505084727868375331158229225003060953926025164974319791013617694677267082563239278919787154423592418811029815111263219083784663811632421679708991349061112014812124687139414723795297896769921883979867089489756146482221176239557439693332005077105444937858947573584059311248274622035063038700728595026838683279042151810882472345363420515150929868763048741724389711749079970084412718501994333993196575138521886109674456164561826438352601352051109503264631853502164157166344513380353825168406803839354021776661450434882607440403812849072091417404075136847622245298163108538594923798717442937059893072170235225663235347469436843370340720713800697264194629963483276648754113360165698441706112757072009814081229749265388749316224281924122373550046884845226268021111602007330336408834520659738403588103506658002869642828062838918527315736719062535173649535292500589680630561325347344255707330059251805989801352388085844678566567713772432283804413116323543449591857579648874925376735877876070367335227389846395042123288510819484760749267032067244034557331686231713535271074162392342295911469103717263696381114355457955448164119480863224384114299312290876019376057847373207006679948217469092446387861158247464015028953883303247920416241050498896974855383380417773186332077999706595951153035842338975790250054067432931900525956746981391261009158759481273703047151353208949161665027425097030459518167319050160140406211506417092839993665177076494087264039866920523198151145930773413873914899272906806730374757067401453988749179092450747682152004141562434073627230304183153693545875329040481851443604880489718919571211615624789139991186505710214986121623796448830868446933302008106281849103689628319479966740738162459198917325999503496078055731130634557802897294690634595395234193960354487070487031856227038152988044884623976828055770663126314085535688085400047679535867205260675331365758808693865174568943693199079898147950278917239776805369944138907679099664272028853831640896340849709453842165172076970143659187444637453795856078611412294780440146498268620596426432201586998177222287403283498136657997104651987416307127544125633440912131702173240340280469264588256283225332898459175817556312423292023051272796978025596695732425177541268552053211466083819375867757507078518427202476222404001459612580947100773312039128872247070699289063399205640627333288821131458748238373040691739678413321241961234264114119325026206101106307308275513817527471028628168491420181748938001168830966665732483118287303369900974130928175403359628821350360375819169064486022287374335513722158379022186773941951996615821193623207550007076257435585091521102981704573943235854785759993928385028550358730307867190300206161808091797496457084951508310095392348012920802020548165744094090882836166195813365747335490259034673872317886673938992698493797095001844589857306336051594416539290832325472401419878098432268607072932462024228659321029536890025697624538100817581485444786091148537966775799741022090179737399358364364653469402345234736882317295467742071958386495930378512328911202097343108573572483498699745818752935660547253336542277524504922398376337722458669660988426761457121909462005901124398636219171563693638545022578435074169982862358266007751496098610901540612478670960828290319073549053755671896360657144626171438696641407219338043418397380789526447305810380113865836666893925657164231146739934669256024319696467894203639990317912435019302998021454020219422686816818999246143884018097343235506194923265030995893381358660297791764151827846233202225791917157340439202306241790381370340823516751819237454883851278709762073255817857610776524616219503459542470468498141041568170467463023749056240828230882982603552340091192175279750940622237385318228693079482929953493873390153371404434658530758905256514413772947231361731865924514398619644538039895303754150948593012085340660017386414804203946310052313841165540803928902253788670511583777231843742633016499832785340752172169241872496259794048642036715007394150259085009800127157577485077188293560878189563654126821435026769284855569357483361505872123957955978926027570740230211625588202951060695570222738980632808538315855206241250113419183357576904452468580878993600074907094073062210720700674033227619121300896324665458785608822302458253836019230193384940986840168099685671063630721330786697057398307157919068992950403510180553246319246848930054519576878207478006801997228581844498659917157584929057641001673448960545737418265137844612187047105105217263418554196369472558910090071528830011931374091139446681321060874979577591389285420563678594860675602541314844426416451343340476238717112856418440309231520262369814908152692211711171605033733112954303557889665923704648716021329703510734894694814221647923334846697363676337112687976125745272093708198802024597711205908850890893900628341290327979102338630482893533512161602501295493258148425891089773389805683154705977183915739728651639946239057453090439717770690056698143243998318970688204494646060096936052841115583057592067881271786026148427020652847234606783437483924425231896998634915620335177204345059588250815260355435731529745990353014892345913624878806098245164906872346861629911441759980706387127543107903301681373563592990539864584275590804988548120884388832127794730750367878918519840594132991058546130342756732660423990796598595192212325991293777899806327173893276990220753849821709942521349338547749757322671204250246754499861265963759904609538747347575665830202358306773482023194421347695077008874041911651878463535128394238139151230745887343755432628988848495410936989342988869784424398773318827260923880329742603949425221954310538184499372839606374831914077676228944533429602447044243757656991762430356594056638028859720002223012014245214006862445674155752230086039944147998239178519227976752957801442474399317152841823480843344784006224702213586070767966135009910098988390822310637718149284011130937264414097418271381082715835092897072541672516236040702255722969817967078777407243032019524418081189530676627742904108498543106120450589697121987010498678414243369621301354556057054145962367650111335394906031309776934662341410507048186509003506613867920033487728546744639047446173721240411629887468506958156882935274809680113401589206580339404944958669524299635344199449193295109045299094126303277567187728746347291318727192061592924752473796424384505833242596656499069158816007116035693320915419161374715900824990057716288169776511952589747960568690952031697817651480197685707284231982155552231874667625343396136951323447785411791358385528309873215848955970506816748580198872801189232231133639837723341282117879729143037808785304464013544781260274953775792843326479494021921740144214325168673914560713797238316407540992563018371397905463601834108512308007718775743453204009531742929597164510918342031815960082220171140770478462337105451720292292401363534273718836391659357757247167924837435731213574564378105948661116572433172796721923352893940255451101091592136732673977977475305626647368260976052268213316928113446431768464403675404089325241340750677670054330573639531598720160783795090349330582869992250536744979768596921047267927964980779322967445511826758625024533634394113601250746343723851858003406000773708241116558804747685006334516922447360944685933668792052306409430583887796358452960518394617059487238785581294721909397538135035694101367350867104176928365638871419943950602830657646230859317947591881574708342997159778159603972203960375256963688588133663014363737333365773363043252477595196111305152722031778059453045122731657983778532815430086581723485078379513788431032328538745336225302665792276170931770440884158789534510046181807480158628198508099573004445511025659999933098532558239900499656975568114129893563675024097428574397958663825456769584184545204336210147096515497026566215205578791956006584220672508427646447682280279379865689927416786365012705481267719275112905203430212078474888099311193133658486695405046584572678003336849474716353920935960593941865801397615111448467577116899567059691039976687487468901498655293058224552896938661955531968524362914314979666136690562173800338882913068944624117941273684501505852027073937623244620806152444859453923210280074352375821235370777882056619665057723191421539711784143069067889570880265005959429999566304030067467376942661138423541634406760901861072909612880703262420979720623619359258946355012675180522413723697413301099225098452735928133854702812228371100473121080414674561430488898469857766518894425548539873950342647653243272518983150084904709808551345922826921261647126666281905923684490083850334526981914609725145426140902566262298253023053049689792372097464020291540378788578429503040893436407502058750758648364034498716461133842641623690408961375734329254291671809924895524608331651899523083589097194360070597042078395951059164558926654640539847528752250575465477762314190692040377439456160615175607396560610588168978081586123871633352030229675651364343876865239512163737906645984285032529432843608994176705641945911754336539719211095420180937655799563368464484809687135401208971799210011959418188354335382299654487701391739051817387402695223123382339166038002321922515933335636371047350063413445333592792962538737659397958312427972234570006235641854853568979052922977839940560126954992377460590181662524360525123472501760457710602926363751724516360957249781999095510681062118614224969053118812911127265088296773098108836429890932281609920659256128987462083257107155788303393203304339175596626565831666562758518163403687971858770713875239320023607767156876433174911453085295340634532187496912892336289478463357286058230348830698816291361668468351667053024184160321536462872410452922168512558260687010435383785830739852780325313543987975018638812101920313585849767346103389065885906657972945617772175319002594491015598807585294836404407413444540574028618816178605427583800558488728629151374006762592287722700532017305726054383134393232350607202976716431276217035658500101769014330198545406410499010859732405688122490021850828891402985489665254584427347753912043025494032475041498313211575202369817278583771586840848752793148715670919199547465175630744245888407578514180785427336414327554547899892761908350801412633780164202792602903382150847464957129122595918272293266614337419383334078683749137647789132765917885388597162794558846517237213374499512509983043510970967427471098672847777397714818537626490994658685305443081615052898423921662337307895277352402622790694317543241742332284604287054786780354732287842666875532928073756281408335859594737809631605496248823990047846571643576812832062626109241473233000171372466615179231196203803304325654605264072079009299169711352697442179384689859824758929984306222921608639309535293022867415308122039172499737239036399408009173508155544397246538781473697016328777223790658180570665000293405447360964982963982570210783557973863314760483189846931019132135083313141771023073640597465204671945303902615729932691322691025835794740887190070231891018864797619770991144138254477797159252131075533074130592462896418066293848205875868216859348109334407360393894934156250597862554233743317649531348278753626163881232278313143585814999367687813949761727139968712948258623283109026729881139466727137260027699011704130684039722830700757897451151807809197794892174800676911353463069153003383996823100472921358849072386646086632095959569154735032449504313724891486451717208741565265217563605966392640306842184898963384930984721589771026275361048393150450884482644980294097309244448202748442773158127032804997197261288917592639893034781555272825020051532007495656334132598581278409432404169220205668823853599839710863820661483997704034499240131390438776672489594042168415571970381868619934528140890600462037853781239228436219239799221852827139668523370442939958295794618637522854847081058495180590874034920632540510503840790472248537688459010355902985972011336792394433725858081194985065284211048968826059734894100182778353201558158252553508986703499322958148988203449114579203438349547247103095445481425653742281045239421628766365146562442404220380561801076473896555048387804019744465074890107453354846897476990030717580664948065423492976417042788351224872244731803989906437321094132113070865972241352311512872575238656953978587580899252123437440268417555066139698467595977666393270869689148122017800754036103889530270289080207504884004360895025086853436446167164493971594140145529808526625861153544767521764429021891727851567199607029985466676404640939458716328303473523502225417915801699761814977806590692072151442514617586952930370385378082017345415762770187364856668998112305948166755730320306058837259873314284830710609455754315065977430143002892522941328678319258338514769939689004631075436010376371355758097617993590214471194656400762303396174025012973087915500360470962769422644200016912078928715051297664336148068691089979120262374939112529471807650391675270036438947159234553297742275658653016716740487570918067979060661277529898770976715402502488625507360008067111902566537715556611044706845263152658303574511382022500505041106033915821872201601709021120296496189170313346262761888074567046870184433559386128999377863983570353522063819568993101696600631992022774374496167060069838755293868724721239326227425103899863142649619512072213125068596377987555473962261901179990906397632979687943708938577837821171893282005295541071042702723210845176359635228669516116647516262459494028049103008738991374760452439433985543353694910204754630087725742958030004398976625306458407567465780276594242656635156327175248883931196297922299913695291168277454322183496766558735322566743604500964117652933951366823155975506682443176129754995097120347266041124538798725643956506781752297600955342881919216543566753133436856065501429479171389948478828565302945203917894334831232139931754750740673584020456339211623226347102135911722038283583606785730349249923563572154999277132829489600784047697803542344795018852663633380626291047250608908460837935345898876944732699306154193762506884295413328859647631382795402011522932116180835828511332467249746807521074314752027750536777054533020647168556049014517458203832863056514043254749995621137256831044403462061274752432121261377913251338034894358554839869878560704826076328581545741364559503896337425652993031745384559720448467548487790536228753651652919700509323155350385854791952329570304923548587709175429286134957666537700759504723140785508895731219922918983716645783626415211295118734450934340739411070964618673995090368665468656172205116575685716067276859973504787956359170328916226142003971245551945522915612267389797296588386608652065813493739073532370813426856886599339420188098681593422518423296731957225323821966633114617545214465185450125157617142114904129276585618823089369463549188663541217199246569823271804877997158212855487884215841777099240357737883220595035077157745911882130647941754466158319624054631566575199152718250614824275612334474689607056448452399444598514713630860659866809683474926602066013069566108981141404026380187727924201038839003042959050118930640341631969067492525734144402901775908084419491863110629057855072324382746593065829662519999192853722508897293166904099592040584605447071077421294097274427663963197591717805520645546465904659581564132654827946318924161139261871553067380797814998991390336162393251090339095947718044358994562916682282350786221581484691096632562723722267160997798938075942258222741747240191950563051380931457887648272438160893056267423379035385763511953750961804920813669756384612287575824617580171306944063733365700825970589609759015887187303206257398490833404450489261156085919858147386530422446005751737183094763241566853350210794278988528833056854333154802514304850187023902179138258830409734884073047724749104501968483821902480732294456166305361620581889509180363356235455521822488324320094248465975443395198084694121416295545670835621808274121509646481214090217954312861718196023732355006419937742442359348750973686645680194531150286884948496006960569758569572538810953559849607668179237242531478665307985961661130630725623457812508459831264256424064155069907861093034201264642453793879887946243373185267904219889060929343311505007450334841690507701450777989933764252274245386645478177607243382800583271284892061173763996021369702519279814365077242005866106191682491989788525753614407829128260064434827918849444240107750453864477245773018740801807651547874798405833473870893531493962175211642271875854398870648251135972593263849889490534071005327088590523191177747655063387737337710979726886408141544284660107193380507527055489021044780656663408894398634984798222325775330759263990212461999381397669049584529031800093321312596727899240044340187561482181634953564436508797137510952270784316750987795468783364335341258990023573909520127752927159073811268103836720174098333170573517088194628173403109089755159820090056185841733808026384010116579968064044427312260777319058028224978299721934166943440104080751268293076625045836750508730307294856012573920038402491559753757325792942721826842110681067968376732179704361769820753677818979069981995331366117410708123746448339357807935304929776877266548992177825935675892874554847822892478429792207379675950400661211346032077449482991805781087967692145714238384805769188718459749019671638214003107984636249626820523395897932116036697766341004187771789185247046532761451975964632783568979213869457591993808350991100891427006641060734278917700760806155878765128004981086329073814504274867326796492889540443515897569294551052918105166515886173452065142363380629256296348943047538727056491390104069821320940225164125678547166330752267279622406672616370090904993763795401599230568122478317688512426683028192326733390944672147556131498142447561527516889823346190653025559848995196262710584060496289859003067761895399541360996107781858784962655562164693983198429301793843883459342097105379535844073985336840063874464310149705452803910671876154430947163918215907924502643779937700183629052824274856918208141850079290178617574917722615459268875670492495643310643245367697306327838968936616580002602888449595698180816212520333518039161960368425664820006106989000001957742557057647030932693344990359519072760517977119855100521939218006867775106346306354974609303277550255752045992733711296268824033279887083955674869834856993664639788480882653291138967699547589748477305504387872435944729218336375760669419056075319507371948088293099049466254855934810117716764128195361640348766320270555193662428273519299209566427874696847107360929205969536420487431928641305908776572811684609117029514236565082265733411370125254802534979829527237819359604125036354147292374803626075796878702384600657407735374396408818740784013196953728806336394239267596862981765537353433418274187420204263706048692901903791670240469712044886673984689030333269095686788290645593980496420036265661890072352909688768709713057812130782596772765282980701760774995056578681731293946478851966724422464143157810911955652036992632320819812213252146658775780193244949427457092358371703684505365087079526903918663817763174640722091694856819472929385818279982232670913548692429430616372192449338380656468220521339028805954049024966799244077621514040408517765389907282981424345227863968358403627946993083136194118542711002070082193675186646252023833389380788911056557280022341409109115842494332695050970571432325246473694653572046025695009096520171063591360351113025058006015350734997219631633222297428064980145705464857817665841663782208825021710094511198272479338544473959613054314089936678897697062115107956142940774127435013759922799533756954094518434408168560453795870750653228062782968637517153100287054477991991439597007205527134972256113814836086444749936404924087327464582895880301535403837266619415044552394722234491703716821027216365973627322264766970742618876356971038985413375159189741706281179230702349883012126913965769207574697771787344375938835292973338068722745456965991642744614959338115664349737392520470421984817468337945372227345285406011831506247954804627730866957714854634304131271463533706135102146827614009695081532840202112527632508752911274468694761637832214496164583239225609671197940945410339607286268196846178027771910809240246477866144880070512476392597047759425677429594023382647071106198608515855941904944137225572709197369469551425881658241588687756786908399600360936301737045928780311776234499890287866947534871207549211822466023284929904952342157889385282380000619339775587005233908291910174440453124100482405657880270830393069075889465123394839324297037988285740490281493664079389018574441453428805623043168508837292366573679700264458672810886779771041908196883543048432373944198475532360225345402486853511916920307326270801453248846435701326649295121042305168029424034233866604510769736070214412827131749742098719634942606566392240341593882680518793251975645168419761155705219314998117696969436967927341564485654501518831477470222536811959165027510778675413666114192560508754495591160843050624344139054875799023074283628404170355494191492185638519666044383767979106218305373979389421603792982850849164841049400048682746433679994078742314428332585822228777325491504762868526874690122280099121315351372016654494966288149222640256988540288061529140316356846147717021389493453868321603200338878429620272073121036541003041824221040734918727267033452318568946396009449819623937325889341344108445644316131591777425931586414661049099737775722809259804944784715741375636970995612958667824691605293041335916799514521918430926445089496148873356788868442183708584867719749362894875928107464408520045025301589502191048699954230336135687043027196244909014178193046378366920957649110461131208026719024840988641516711796214812482092575435640550395357318654371514719934339175787502121475266670201073316044527485680687516427048154769952551951384046883138402059801910613800165581747212750250453844406282921492882676934898648248893332886246319328753809863466098673543687952927667773777338779820154533151924107436133127864776758323707167971311392600798939022016283592740084230471631872576543070204619591606203526127501737704640350073261980956000481743563518062830286706676118249255868921432701425282877968513476721726017767865315323333493732761146298608169864043616076865732628157573178678735573597119949333371369085583418624531198166426115616177161169024244862438824734619612778757684729785300477171460411827606819588978778608254903583661916374975719546993758437055473578037254204434776874834657681061142096475157259965848569810871751442484744431082782380636574895662835510756069479434501547608413092465108500217501209334286221256938630373554689543094651582757695176225154233556580590846665541321196635857048549459122916193044636771092396149532347817420286623837553456232417012984948838492492275545244885582447690980100171524160354929145549117302278394708349170384332634589283260840479207924115049422949797806589568098886184273537471368264531803476332891512749711427469104441277880960562523311482539766916116608144034155471247997400515646252186027976119991763309222211980328473519978607979212938493177172205098182927633455359805643926430974694906730729178278691523754910745933034473596860157961743927331970819756004494640546734329639798594124179664644167402235911947202158281148918009162593421373187527517428616956285632597511267063646148924293683340042988284632065172974923939609660151739698987477842219535193874744149444687926463800259558332564680590835365674358911255069578095199960135741733147688527014955308866739599744291695058584765717410669657514294789332517715216276522186052248377642945796451329894380544677689071760880648356584744499554670891910011955517715765818011338923852471130098947886670302253564371314417818963327364367369245883178384192715428202955844660941710137898955832019658971682070243655224947792841605606499810810144092671127361887433956221105554024522280414087113941542192848128179713797409511512866932397270620234752428978562057025445577278152778576504940237003132250416440731608213651963381181737956330080940492025597728734170536019739334468080316197967803122583888746393025546139577152913375065477946422523500132253554692932584430642965325693731766919447931572165181478227973612204753874441725185916282395230886179979518367933935371397592525542136175230485352569939800497269020225589198918281585882738350356691948710921452786308553877948294358460355868946078427196506655884633794252401972873224149892975905401047853593234680187849582537065900769355085505336549433482058430829439247076900203316551005894006048190581943985785323929708440388101493175325313911354142787949460468605439208556588033209247167142885075525597174404640929945673324134137630511626778134916135748264841044679770611329373854194239997694388080070354444147054622325849640930462555065196717681362116607544932067026031520473930249650686291852134797640388202898641085155973958841903552626377020628886057314071460569069008802016250974116098170068281088809963883839698202339682832601384757427189608075975029089563981760313727417070871585501612096040231134358769141209894410840462777676669075992778869219136736672758828083005065478005414917470183639225151126992200875282588378527657375671115531062551268680521875181294589118017006791695305401306781035544352019574256943534961280772320512611810108842371607308750345318514759598782027230723964972363047585391591948013142046103669085854615834484196422524525176419393026267441924947619992405979181932087747358127600726837393516737261392410736955388903088498754304813099319044250566961885229993513036177316660887149022908101022746596244767892184439416168486699471079223279962536471122996805140138096038540033205152080379545103986123820970923223242020648153783899608925182302829535852619070485599999312093553287795853871181691136341751212435329662702673665909565769271988901833151226264093045071088569613997605772181419995421871286346747234101327385677201855146213745318663033847323728764554940754622149682590829565318755815133918687367315581530266759456967481634466116081897002915252152226316251358717707198423237775907235842651421545993125375248927977009943938592660991668628741068371718027303689117796840700518855636015221083403114069683471352005014974373393607756697428079767153799014509720427287848758735826075963505404610505365036956248207213992671765836810079058242433538994319082818829985798329678418836379879211283689058572319319495014936761779284663836728345979552026760804120092007219941117892998445109886305750684943148334357516361285790187280727201646931492051352150298188216231760199135038654780733469680031141760897692596403061736991137448644163156571639441245101015136665697310570795080493758393910037771181823102938740121002843868235484363548104329499690924132290923574662110432972836841211845159827499390712993382400609723634117415064214692438824312933140724806444985862173823279508156087474070112017875351509500247521679652089929844697078883166819921897031174828072471582337288230319013426999023565681575383079197884754128734655761461023391940046544253719213580976978962445683604361375643538157740029572177918610300118152348606678150031347955278512714434992672389235130961464829340087343269534414024492116459165806366655449928615685754744102134352229830056979371521316075475418168810854305583790121630901739704870053069696820033923542568682558889865348108341065836230895719917660767857475515895579835095877970395123785084317297694805660071501874840323974924630949048745638220698281534599518058906118954910056112979138356618281949368565024049245817341105816478855350307700503601016661476424537890049231865913498506017776441129207826829114126728466231127800275030125203494515425259592332529032405007731727156564099343111396555744015645951545710250161322093027567780078818620585991243474876643130707165125675288428362848458572432955200103310790385493123477000619216767948139094343409428181321378307522302112939957825029398635553850773824007158794743627092905996539128088207620823291123702527583322123194817528233150809236586572013121470748306414502942612383293262510844078825029987644531237747260391633903694326007066021565665850269152301248270455876415264787576176769329646611979600699554417439421626386292549924946143419144042395782911044242748117705173449459242218087931187135578756433106591256993735544284497965940412793473920637131220189401588343269348262922652894841442068732694453855998115631842243594708649980461969302207514368976925042842662317865193719529972835992483915313127745597912070770204501924488556615448003816183237162538353740910737553195878182607147453554358370931818591251363155925109809248481025004558630460858472100768457171480948531797553262553962150759346936410085399607566683079030416197127329639442738390711377231522753660007607786992522782076666588676683842684812682339600945494719810855986037758432878763408098201865318235859889558722011302445185452315576050122466977024479865896979910742699580125471677944423199125041009383147303683637827841501920774934211356863383593663256473440053267432385313434190424154273384622321174150458773567487459767267743221924082377189241275342353372317927653458884806211071481504356117346697992696364037312146376969847676589006604033253611105199947877695193381389871065703308116562059602769566727479910713506630222378038629340328489920170524617328644878704824035700452042499660279229403160064651792141209469131238546982484283661731836074437278780809430278937950832585680798482167834687856514308104457438049777163321896983055634130457019467088839895650386628238011343734104885889466213071155796976621315389041633849906106366510871238577820113766133846387563854841677308910624299639825693890442954759606952250452999897290830245438471915872669079371029009572228369175018041686609983638500300210966195563889928246047088630236907125061909784226685009153901096976284864124165522454541704294728151454423736810979796279205388955735453498822873570844676404974095484282143172618974127394240688994830826368501198854425453895999941363831782190035537798317817062813512905736553403954108303457537272208979185465328769952016088314671918043499470599957547488040966031182225008079289614256270264544352420039199712586582897317710788491938528885462402386589971553843786627154575700609211320132422220408801772482340664559271015396338470826493821888475449320791431871594137409334983765429485144644357404717730082715210613441407778858769903463385175427443455424023072224566242689987058700480991773380378874533874087383101658535048797869787895008149971268300482504672877750654921220302146282756999650545600179360434859741824242313731860435036166623515656191100293156953263973731169861286528279993130748509580643833835747210103675591685724655149313287071948695409594772112180736432434332994806071954480477568460471168307816893550326079742876066717613692438336469521799717270101900372970154823266929182561769719436099136742218073602878804233251681699236022188997700582594389321924245009015373114805206954562180704683335694981705097585962021044095379824825450881228988228591277409145760763758506596275654187782668149436826844361011064228140200293541679737730668781848551634359595505085436626309980860941823915923041350089163572663195117676521936870006514327684870999577336951929780786463869570589458065370084800611246907183439912559348919887532734346885588151110415688893351394104715385976546330923175928794741158477682836361966913960598550604487322704949995489047137522808301861105743642200923028270435023076377590488755779555257793552449958572776292515665133611131422034523280021843142237769245394552281118035151205851971751036220236579580300531844580037552921395856408820733713766420651352393394819366827307966119069227494656560135533521294491533827878762920621931153816346515491638076399786942457590398985508278888501336667945426431388593821919048629102835721128169059518457659661086158506049380007406309356578408824397817010171895048967966642789126689555212955039528588777149826692510123290567231343108193477029696640798047466162711113434984085932717972212126705448750262963599201089347374721545937033044033007934764866320132165943054799240462863957270255078837227988477381555757593218612556907401117819642397116277767383936191027665792345206356681834079567409570774005923482328415478235335459389628107730642974067294389472651911853369669223525074866816448698303454093300125296294935908361336430148139246166401683619870834375544714131099438271922129854939336523934530811939795850294619012560654921503378820423246726821796149828753703195001050220827262030198976339911418681370408360630003816876546803451032856364866019237688348907687288471082749742944848874578728822636187245898687365470494689844420807965198732319394456268499035945003879277877133127757124792264328756101241239094248634201495994974331711727160091644722864395263449899280875586569688203614177081675055462911746200800053125120547427215899871542990066516440505667658879556623729555034111100216801001283188692086089198219835882696081248036475122950168917928223680436147618105689585946841871847848067383807634141492429949288121169559131873680480197859779671030785930274430061096000781139512664573811336152505526480148300017717215401689012728661593696090699792641333187809281251804811082310350933753545150738917600764807915217250665070460005617252028879435318843143446211500572340358509304911169670891764975644127715067144338024101543790615544275933946867138983544412266548419519144801019747218001381759799666907358699130388344246177411990414834399844128119481488400129673786281691723103906640931080139045254837961037963117676937969092747343868976410043724245644968819614277617644984734811082527177852018329258378343990216863930186827973628856037381728422181235630017233445560114945456859759622727501223505800268296929946207000796970252543131882469161628644278393678657168409630683910721811072060160381273246575528022807778315708280386636600152545129239864278659103649364696391476133811009499259699959024077794763779342382377893550831309198692476476600555854501687365208921667247684148504370818783707791666614226555690899374164370629231940020814308280604271292254822285115623866945400194754424835548786452590869910439453461985318075363673111751098626538565069133815758104367881749723085047020148163065172970637288500905395069003922399038827626010262196681685756367985439280329217388471968202255109842785850345978302014517367361315659277547544568239703120367939319324540068649586840957108969959380017023973662030553083662138687739642723660774751986815719674125113559328267727888478525176467320173387642365201212064482998469874897615693949830420163921080006268736309655639009567120832158047949813297086633020342790484474433232755483171740471824609444749030292739777009978401417499506744507861135070146689208414040620385518546338484571733515130889842952108483125714747095936365061929088843936255592261994884822786217073630414731324072123414616781281854641884463332641127004748223465504202732355164318508076106836613035781051634150816080340564953850732580983734363268954346611131031217124114193564290907431217628985443324181194827476242058315232783081566967980818961250338785617323315045257163807734897366156855436252320238176618169156826863307282752758784159896023049133427714857955587736754863965243159826105890135042117724924974777589074033290497443137996567146280115905828021728385378795566040900913105017942084626365930384828754859445176836597487609053084669954486333955135817400933562785074051909021994906544439003591221027547528729716068731466445937861103629824048134676434938098788195194381815461471201191859173723813445000122069196263152119541572011262528299580419154373937380858365910824623704406194631210368015610004439135534793433373416893908288268998457351189023939733391647326878426094141186206522781731402818246219935834789448496292881314251708401618344158800243479134307142449149074336284277764521422653340841627450490244641475926313627092921541428080467369741817075839018021072803381736800894170939108177787971177240014677631646030124204200580168116174652179620520260986654364418041905013106056320737886092792734656652184522300716684430539094602775237297970705382831219796593324599028059066916653640932168197332658941827909677824471998452795389395613327308850791888313269099179971450773976842135444910674184000409977973433909282642181108868511186109963158799450434760559859955389791578740187548443724709312489455733700454303803731268054377243549561788434198536004326383962678871473940704988952057492592281016364561825496783173706411884745457684171043678318345256104913835939152643398755495186864657845393460204332332971339455282346053076340111596804249684334283411590847425971074811221671499109290786137592736378556538658455991773477193479503668351682190033669925125426374609091509047796392849781286894880746422363759246691118821571137382295657380433390574126920561386486232911039483488336177853583977535763512608870128342995706230890435232897471535163830657977362998342765631504413436602953743641815867171684471767190067418912473979727903937614807429204406161458044595252458911472922848610518131237620252524187414987008844527900868097456821035418038079740775886853914283681468846065037280301657189330763089119131194105290470866177108731013483416117805993196090332051632240953795948323920030582690083996774496367598222604021858895824551853494903515284057886702209125953368553242691822318161893717203209676244539909239942452652010540594398673964941221800774466658765308064049875320855845841811075676596097084507091482111107185727588649012288076707665559750591474648083990021194939687117429267920473306133727764447011284638359629218422950911822667788761459262277737598819421533959241347274397202512052633455930491303654376927109527966450956102548678682630605002894668677119668560182523106647146994459958746404293585649051835724689703925223186423391580666182374489407993388051034377632736303786834632465953583553165690498739674352105218019354151322883513585722227063146398742368960963838904823865780576349648338302196034455908587117163442656231378467774277105635291150461085698855690906428577346336250028394408095708584892407213124469333714281595153834748965068053364463146516180927196131098128932377775349282308154950982899431149263303685638509951274636732901924356677581776450638064675087785662499042366414739188183604577259555191744189770069837173945643477574749810968505696909858854232373613137992924556418676753174841195595784627108141186478331808486668042720675864304996356007523902432064456190745530459755386246533034000517771149457601935834359546469278345920660437735428509284022454578461220678816308839064427893030248314656167311268616822837960298109659236978939668659833345834782642356854249580283477086288441103789422528202629729214728090423793715928252241828938616818159263392755076386893275291253379162400541298947980741291112428825509343523571967314846216103004043574013143213360049605227700337039883723821108275240789129496547209435599178521979934860710464710603422170140639951564049795551257838227355418257646543188884830059713285549318475421416467996476764064795225744204486456557488747408531707086810374641293732728056359484567990930068625035191080628876338945965825284596571536804528012798362448952321605982469863027985439580552852268305525878909158527261761261160486169187827284196858234710098925480222900076183620492513448657054774518247263371786172286041239016565326319126626151443511381243184633793098186909815570136791748372946619312218299892207029241052750406253149884909980463008721325016521599793404447299267177231212279599572718462665678441699644851770112321819677530614481681614622025457531447439025369968585559676598912116201415184069954359794934836542198538882849962014908313400064829596675633173982137549707278239023098701020168703737306333919679792096022127650654215153321236569770082894815470210092905147164210877210329619939429289123567364019303369915132124384591288718145293453176114027191416868278105642389660959142590915031403526655496440929838287751186698952513573713921609644063696995039320917514679785696653181948379381427492201845591279320671125241768817838153110631718349954701151656255285910099707623695870337617198127122585639528839496703435798074832745360141043098647014341544215249568662829891877986497658513634567664025903927486924662477946898558388568496932997681024048360951582894202649928097274899530605895267360731811589870818443342812722897782619799172236740688880368125546081464908243182376557078778104372546993323143611417297173829586874353117332545656712662310968063856158060370117760244929295794370208173239455087661547358394876923041898621271193849080969145110590438404075052541267162075499292187405904947887203117007921649828267675535365058806081207198601621655850370326011223019888205735446173516681170537985322561626524389918773197949102897254093868947313270079623082673996827592240211693140176383393319068741243718981461679278906806987254054197986715667447415904897231521894696018297519239432439328774254978492032109378513143913294720738243932292051827139234754467193991118006449231800847273253455348332912471870217329975134043689145083322511024453992353046396791536087570858368695150215159492382539406646530277227169836063125318047235437896162518287403917250922302543967658116937403488113200653205000934691662713984206741126839829194279052049108460990873534012530997524917473153394855357784693111437831453314985217119143277422160950218414760951797861224166784956725885189672957234869476829471374546001712907393475521944540452724445040974794394322344132618524240244756528540038582105634486975884623756876102535604234510699971412046428244731648339295852010198320761826200858714589971040688518116986926369748600081717365956397150759065611187442729427183321174786702397875959934765070693371268742519385381712569454274801983808248193232110609870530478703105892065300855419462829377846834725177176105763881100495636418399983053972954404572738277073281827139292818158928680406760915996132968811258120523464585753953862887340770306559085213177754569518697831177779875401997420550435922310441647924099508437413539447998398005994014061425874464286876918067943230775380221093223267015480482643606744928086888492621280453465425211844801266819383331179959167105666539164143668414095436362302538405614280077900701793489529119587713481856360221646802226929546071019929834374143566428462674927322214266590861175148489988729596898454526890204849038254318869444038162104884491554650342288320549362714561193934318108053014741488231991190903516402184551935362038196970407839784291605354365356167256601217645478934741309584064734740072053870878305676394787638190958127244838042620811420472564090040625882278470131916714405633412552843318515119894055983748532176136067547019966962141785242525649812712595061781864836781297650876860353554252425914817814392331363660971670659612238823983721172507449900150124791644842711662653913507190161579547874985139238988719832080677975088619396788110472576325650038111464408707816165563684141521001018959078369278607562924234749859228582997362582019554195918887229265549689351055980141365162536438629709523987840859233633773267977013488172929681674808263996141243914474925103391513500855019799873788349045852826052425415667220184574195233623107805309322109737782134842300172456835244647625503514525917151314333926132053951237781257694815430505654706209277981278252467271608245592016726519874448364402383482950846261551090200984218016847275656018970818906312479348661133307909368687064835489994674061119760383714404220438419879570617462040947358527686531904023137627861018394808679516428689228239304957322143506889873537960788806009480900771679360186960758799822027886614176476392849959927014962259911096998852650616278687961735306514827877476447910738006426427346964707597404249280577510227321420921221372370635630222827698404092312083415443205494870384547293635397050972155087561408156260303315210056574401298023625590125920186472239609754846727598256100563708469367411684346193471544480136421017382769291091887002318916034148512287193191528887411753943410980385926316188186484186496829621752431076380936921449121931689924861160393476579981540868486184232891486080952650142300709459843543779056733059942905732831726195250385856350938605655911570666896452230073102849360959049910203302654472383289151932094244928270239576499288570063424743135788852146101092875209105023033016769691321985968600810561375769251082184156918903216922707437138903514999095727400050367316473380642161670535240895042798660394280856330632202705964959137441676836609568844987425541187244939597570441260349721113894489513153432312581131603719623934573084175188444530875908963881322667291082111057471160850541533817843735809117357874813946567365720235492845499838758087000185324443822240059088917106751675717035323589807478369966607107424218193925973696544292219690301948525292689552899012017304254903447186484873671098614610886383267692169551155515712814089602831045484303436357796081823253040188217314157489750601492742750924406845969536776247793768833129550698678057610295540700577899414455305784944133844115152586934534061801507213111913889899625098443467890538425017348326957364814123828347147888315624076444739678512350158294639391446842550063042526216111055406071872546278408596902242324861525732330670527407700368350060618531794493705557711962428168859418876295493139470275601114896660970761198815635542839536344554976831764601710510781710363979094327678400503092536390860942312055309009660904897077388857742126059230795229914508825751827517854644552896875769998045657031521434077660717369287062995258276004948897079446082839916239156111729799746786180269046981871666706114620851718356237879758193024068913226857334270085966198431032523012761539426774046497549128025305069746793917061213914672267927111608528186160798145066939969815242739571163054361842735272542560492414814110303435650906179339553001014067345308180058568647678405428797961170880398100012870212725069038116319305203368367253822231502177830578427337349207870971526306433701340298267009846837546806252177495312488383881621146915065331014189868937819664628900883228187575988156277368482418394002869099997997948343375032052551873259453912649248602137497782834044337351254274363976076440677638055671527383554764248099780564492357631276684396664330107249241216346565451630684846800880429561744901743976400386123058876031012865710524453532895667692926758765489927648119200124482697648802151162965233502661294956459957419141339091802463738331388217239674547027536808850808960359251062791966074232393564445083885840879469822452453557112335471739667207205315887306750713155314233099791691100297704919389701666674572742832554729168352782355753510796593480539272044241740737211775636796822242957659620859533461847732698524181785826792294208621801023864582906293776549280201077315574385533092257784532531817739018646870419295908598113766240819110235524872854314955313135397249050335726577245015024696619519530505718427357658885076179487000898450254920915688264504679138540298347573041716765872001377967843884683212208089173576683218477984918181701576694488422658503539423929980129086838332759205106646589776997331317577362099154288639151629647016046767350788696261144569402158383047540611758883596227880537998095081399238934433822733285652501192447080153585794447555756673209072536404974240931294745233729744032320906487754876801678649848336699396513873652178036934253043153135907201349983327506131434784280290066283881471095900507499476382642286921547301969539224540461841533751265811942171012872891064856712126463395395496285069308158451380270512571023360857307199971295077960722758700947883291187182466950289159736707602270456356823502413893704551437410750332202675845259382784144128432517211170444598481741587556972292297720181289873087019176019657034353557303554607470529083304596385216083642469522582317259487547740724181283459286201936558077773752077826676715733210693842023748926450113892376070901210614690709871040047475149102820616039239974506986334702046368601421721217992665477356198749962947194289852302223161634997882935401918333232432193223726727207295524282901182727944366150798620770305857663135439321247050193823171313615354577204705557980955877664570798748354905513780712163531407808846659550405443575157081587907708156036530624558330071372404072787057593903474632714963762867718789303014787342752030262080401427588494463320573662900864719163982451747250196791355631130624274419659781220110042092466074979891723518278122702118406530884891195973749848528780423329046445140409769343136245896389442617672005571588242792013753765594953447775201418115462700497196960827046005690839487857963221095343522184999344760982542672584389050815777654551776734925167906914720017016637084659816060672372655989272891877478094610320233770965844693116185868483843694861715520033440771183969896772279358484557365077497980391378202887291546578906723791493705644913047421154347297637185053572912103090986676437445927874125535443405771181617320575468507667101813404932691681235286202958709195628980305011247118876817035419948613279806528053334718597239315963191057988314468420509147577789660689619012143181597403211524582474912433517837321274466127446719141780045425043618566440296579632696168395905329949361110413560255902332615081275556027130659981143017097838645916805166620839751823223985585598341776435872227256687150755177132805222181890881125897726371172898806426915660429852239406172341727318816821818209515902281507996211528425191603070684104101091179873501449859917505540924718290538447128464217221815930136719049725023048132842084320369175517291896702507943947461375613736764955644919509791668185366820883591671613331860700669939859587881145053729696906949732636008741463779738211714768202916775109888912589116603720192175001887517521440755747876891441965626255779935379729425518011413243906887540093009756791262025554390645707716707372062704416267109602629136077296126154113295259847596283844383303535556964015060521375104230973155967462543053811520787756462125253491297490466266177164126248727085872629675093901037214271130049198541352263050200982174775636448034589475952295496347476145792370838587120803596745477322275231373277406018197750428263095998543505177125509768899335488094842723090659768768652796271333037910869018908870163479174102697589512385731100247688838491488575751115587515529380788149419979122826398452311934352034729435787134702722951955880874841417614047954163052384015084200040972591557136904572110747508112632250047828261430552373019083399469396713639559363887086743609183345915478583142306648640500822799804717219217779993296063968417089060727393006534339488822493740834738221215298583744143044439147869510760620385415414497243981977879778143101866067797708647198178452149123181147598515961718709063840519906613614392506507439801855115755773430877562165162866314715681929756138228605866042163435665529139454228645906376632288738303901301835132977812621370235978223367246710550977924870780855790252542500839647899138624091492230027005494929072795857729381092186064529422143956775559495183018148440739217130860036904135709078727437435801112797267565753515585733132349369119629324608436273643731250162181254601990511515315054752135244925481513261915824481021482400933618708160928904007098793533849788594546633930983739403545840845605754417561558496747249402538103889389176669853744416032846403305082116840258195203245092158536853774232909709937600572433538528768452763990637756002797499784218555269021382418770811051135807282758982217150854169751728363315692682065153893619818131625175006798384049456776123465363153402968319052281698797426422046451322588819084237848546996213104278160427974762601906818497985408014040251050133152208636221608255975514240028928299634262490648566186644453625524410103770545538752073564264637400024239108113352644165159193398921703643969773319397980351250184925364689220375366979868231767440258353473554940328857301118247254159001139371023593993763280733632035765671955075170268259187042439010201599094165808029123154849598470564334133016529076509749391031400697168189385776037848276567351281271564461269374280844594822488547662006375522870986257908975366980800704703291904688154981199041366306007020877358786497227007057460649540044404288447700951615417362217859220222915112374375850179677077522267496868017780614191982860532648793372807187841849871309743617883056588403577566401986343164427106561836893107776591623341481237697106567790638243069236409087756847331054921865965195820082408293567505257062722817323822440816591878397729448415394263717277947517884882961838241886127599818123523159590106560645151300443817528804467579750802132115135528012530023675613540523496857057814360632434946723354291720924841791168590945805263479036214911619967093909879698841682159799588115810555689995209988785619832321806335564863169304988439226627325527692392371016197089265489047937523503284348663495271564290972920272320734936964564253909542199470230460718637924313202047487111881388201879679149629116972734338712072505115191572476713981198583362433111408335547033991807709743860887431834859657599903437164014016512131434035412219581314630515262580313286685078159262374651500966193674485552742943581320400288042183671991667209413574923543685536100107574527315610193762424854187703071327566726848906076933252520673034643581487534860199383557194803735785420412433906166753123946068754039279553378194496369397568254595951536624979044502537590150600958062159154656465174521332678978457141603732865589566858484465023571197716270152967775703301618634571175740955247298453568272171136463876513848939544140419892117312225197850303903822457060457393866591349730755040718159795490963168481992186751334370734062651921234789555826800738285583856461439262926681547996794838401331793801637130882700504979330838751969121695000449487118671830610187357541275068061584442191725497393070564567524274042179924188881903074120113325592350910572708746142522196964235077884291374923936948054762707283928125991385079748371286923278273863324612850416463458873129799719017161970427037262469632289798838812726348971053265510987506909361208075409659361092152601646034060221769591990046519773639998161928038848674094271724338388263602782452379457075659955345496537553312285750489213100621346350430218224213506908763344781593606040235251472430469791929059215516641580369980909087396399009266313555532222823087431937881293033790826692179774886082169041799532272594157793496341063385746593721600079729566474937008858773656480902533420522904703940624202947433356246442683992909797206895936614836203432346650258837196689842011908481140116737165022795662558085663769866017993447231896780747997150773120868301457548897264259668578161003483493292639936800126989692311436008377234295064571168851589848095615247148689914000702562008720253783550281456401029261863650213870962494878025753002279975126093468375334726544381597835253629284967782470136841212456287133398146941016685673954591293979001879998096338356051266802400472510114590994997765630474238330303476114292809860085155188572128903247062534148290818774644203507577900956213444828752111411212005268299617255361829306832590229797936108538401362155075278427954218610983727789971859652665462572708220455588614724477238590099734413679403053500667600772010137266848476362425124977756253860641170011329978306302581117629328225224086625713221021313879952917323651556383884228671359372959416224465135771346902704272584203340937237545993498886240477288878125219360025438812583285917863852956973551783424723259647538360489014850636606697137512760481976183686256316336368406949241915921105628490636896638526843627231751341001485508523521904429083955132537181831815062834931777105758594753150074686270473387613707720676228286402999237198172889278384215683103295793570394873665806005057701279815880909501226193783191545676317214537589379291071911212841358786627283646543841728717952703057826812589398791618769006023143590951069269373867468596883387920594444716544615310474599045019026627393612611502332244595978818218752732699093648501804290613763446677421059754038832963299069655197860988607933738395457132143979178107049137562522531896201846266972970787911835710595527381187461246425367693458647650830062922487491719019059467635499964482338873660512008318394440278324574331496278915238601796364247642008777993858975716523063323843432460727229151284185920847462630997260729618880995617488999710363135785358052996026209378922946548681646234843156038952691878199510603880689948995598956185191432549253078465202329245631814786398004432769207039567984582444840708112288608606187825932046546023181004159809650092732652713718163446407228701957274864198991081527002261813505701221667389974256221074313902641790809404205232496896058643310018669753871306256202078106862068532723298145571633547315679947543700044552749269680541126897539020880629422227371265914809634787294187707220813476679870612429339281547490144637933103932109342792556116551274096528269724481518273354125129905186479860668733774433308072555852119458792161852056010383446351093688506006685790302365252498583204440756504317239162150480681810796392801179733741641344028639665010619630879746344031548073842337501355377667646680027406278451200445755679240460094976468423791967646954388289895757762717430373233041654767359842852191635889367896200065900044452815959736490160451930690373834479659691613086812586338574358253237448708371032219120498240291262869173157639020475404705180735235341943791806952660840230280172677928213170363887846423237591697251449348729429885584801672613882492144924831655302174443197344153787942242673348542445307075042970864327718695657738304233338283218569621908138984777839329154508837651048283092419978750600511853315082859839418018590603296816926718540908652179251811879767582157264052074412036341154653273906066642489630607510438352430656394304168125162100952150573879476695940812805470206425157148432678960827087794943494826678377935251815101087675570907792803099565644609658843209451718535286834800518615283974803722267417311198422970855474928544906735541437200359691946511214683339064188586411681487786317165321064980384720870977600023837263357182782850511899325977636527157440971837854722528933262219357939199873009698241404597711611156502977945203168228796556396404708978458723611664895226591033262750738782456606143892315594412126483165810690847118236129381396825823532483695045519218265429781654414106589577429935931976995142276603522115877343211088240814483125678236181544707108656619357590340465894135024983243324336972185473605292806550548121152251232241794884761801476161807359692974871484699111696537279441215124554936855358850731810963511480064414369547055202717965960570135694961696854590344630846821272309569173984244073245964074502999699894971315198306505794140100433543832397252989922233724771435997355501819582893183621035209993176405759508886601944012333265459420258907777431049841388736011737992893743449987954188312677391136625952690622036011817842818616992051713270275868240990596996730028379604225614059376386105305421117582545268324558181467386903436401474552795734386417720025956348635882060357592730300159978353912965893168558210818510405265928132905372258466760894420064740519603204309129248112546386352790416891623121410575813517355418025506741702581454877851700194009622598644839263638734029071622102587730854669900405773166171662825263794803980861581709738047830014106327166733253623500538428548998668495368345024375479004022804822780801480259444678005985495471057876679891326805554651805512650567974028345807229484022219454081067280857398782312571842105071339824150596586134663427410728650660896237353939700286397313648967219766185599111265094779321021379650850876899803409533006902419368025855302495277510540341593956918346372014807260965481009348779268263219564875998800869904350138678214733779722945384621901193116959477163480705808265468973641689078352310411897994497817037835740139466403050173544241047224838517082834962358498737359360633274228458471401013625250287490474251203128908752619001764426449347796469558747408986545580309246566934199854406521676209471943311874467858129973657931329464708245149137347287245090338894387432493576891126845237417794992558295283510368940467082072041923045512353555142547166984235891305660013463308378377141378715755924940420965346752606207423031356391051344544873272904711253570346141890228613192623636781671634854647285798769801367398519048701242051156145947389818428619857721052844439339987755555474689678912132501267712498191970292522537785954384153764092007342456941657940624056750667095123082040521681753925932908894412706667568125964123044342230502734193846431848141082507002551646063552225625905258320590934169988690998796761785515218382518990596023683310905404195893773149089834133088625808695924091475444238253963665725014839617213579331418888315546105702281275229110027390822147003759500201461856196958811160104851394325808812489870079516205731399518303435907552380743546041426568492525191531003673252857118632948967837436245509690887873192431695105395194916481032351308611009556744569364099087782601142835316636902625974266468446100347740424489485621966087175320109504963977735340479384929305290273751460431836835269966816249215280343388985345139034904264463223981930185654754403312992090676691786506289863451020328819508707133106552108673271591730504802337775602725802871179668927228940456473625600956199918371610481424204105164432191736375435816772455290883997791286750606084074683352506783266049224199882202439573370746788397225402560668585343174461894229590674917226762079445989809229751829556318982587324605119220158759000370047932662861460313737258058144924451651065567450689744356419757236513512421599301896537066491682981828285772296330042595443098132429352541946419484566424056554283015902873220016717506353472033852214861261275205417252790453031660767078489119414572346498008881077585858456234431619769655776795886829895498094325111996751903905273793328783076363449466363375163275116734514844679755238323524650713617710190376311809129753395032743602335080809677673696623595354731870332454691625464529610169811912559776146401681403475517582583653900043120934988204117547740723638065901113660432882894815116467516199874478869986198806975199449617005522645524345186742214215698964176189110419477392113026329488568020765435104085179247649928507913991965021772160891872994373832403598194794919297094968128329943280625637647175287837021194695626912551658663413290887790121455308451702684366403568462258542778042064996585574737499076527632813800776114878376516066611628183451019212035856940900084473572374424635855256867149283306126288891340647721764151696950422622216888677577389485024349771240096088539143558552010309806529123829559964594325762365191117140611823315183796042186779362288136689267286652313363835909736317918847947303062525161157229845829986134712817968236731093804642337743345263041746472235675985368329326215928125567775592822592173453900597381899047697400996173042126199027513779432243150586513176672363947122231090405606080551297688614384253551909242926898260093629550970843780035088972288547268526203542344058029774528106554145165964210275766578914459115471153797347213919295217161403562512782133406592207395613364219991605606254393136300900141306786657862409046242906195955095215474795606887644940407102609621556400310367010727969939360018324316375557234630687174811302874214165250952697575202906233016760626240381858832844830052773745419079832632587838864197435798399773297513873134552621834450426978344002072590603604504287174630722416047036608175827187314277047519777627021838806709433656343653409379255549074658732564997495996786999154745629811219241990414092119827809068521983277370643853196192434071513521228260604398685317454747927616006621702748761735941862557401213922366630340560376603177806603781385726942830278117878413440642754561224358967631356998200783861742964356454231940074360287962574116368789103315174442967715577829433959167919989714999672912269222209789399245541237946111841537444560567283930238121651966372018699190303340155556045823393529567529169724968433529245327051421675552618094800075745993421240871211857962969414640786516070274062936051812926551854339473381095648179444327930429299968103055280149408473593222274504405030137172490865370003377647339588978163887587194536608066735766713100086558072837380623827336684005380513853354858568408110536268187332199099822234533691989263117991513802305313714921728698227111454457733789052914161599133206374234444567058893489885159442487881867740200155918676932775021917292286238743073909530569461681252606461696659706552073205928320579994465204148372237652520581946354028627906815468484201903112714990794837243922482982789580583962499108754415936725550081205780117800176778269750704838279743810491473471139623629276825957609258403958581696359449158255567632437227027132708731938973961741957126795342182295225845467867636247558065257492716794726796057466064647239417830842341719350757498194221545843647291608334221168668531404189883712015799189046762598232838572344795014595704523546229950320162861495311615682635606335037653797870515528242885472276376458600119131115348409271196540797989154060797798805971783672447288023511997614609599538491529868881124720417080824037491881409294745085853306914347585902119568046048490535085378344436568376738619806606589386773387512398459651474818593337378472898166704717298066653696258641671252628414460183369204248947605294213257864239075182837158443072655550129343420569861057535224803230751435347782849404787867609556820223954345854194059405697283100955204546003357722465708458396313830286345003325372053725930126227327311516072007021497679739195283055857283447510121991140533292540134913209565725007351214189430239182300247959420650046329503391864446526821807137487089223307640091018262657239191729734794371209889895570344183212248794780146310554248967314818419879683236739721882133095250255965584461847408038808083931884119411287707869998576940154443617949581412239542547063104243546211839349603672698501639720136137881300693668675587361995001015874192835275337969803635548097150736958678797884841080735389762753578289557773376421137979907921801517100948230565864820651394770500759540261222486574885537854700315921918154404758011285581869537964596987116348672633506996050879630035542511553581361734819723018198940243509706566624497474427083489768670582243953677874333173416716765760380804185148731723141188119308719481129875767006745548010181912030007832150128421047497435689602456799114713250106592537701425800103062452180441718506505686611657771232666886487757196869368272650632796611516140953821094353526515493743940170003070468298781923995605036573973135918629860381219577406777303483123561052313800508250546227226068427971517911289483000570906578256767789593490690988874151917031573831525820566459412869499583646159254774162657401713994771513008740528132975343495509511962087259283428042536908983943200335222257501398758578748038011537134301057430244749624209934254987919129672995107166517447155005487681718637891816133205797188276219648720059502605161300738468668721702600791706095394853291092947611797566112025791454712321941519734199931986470908753287382251468182135315157184568532581389262853581062536955469622451462465098642837682821569337290097019525877706004667937679733496718609718244519606800938374040293094062411548220792335236509694428259124745671740237001092330945243378862179775451364787697771128735799001952825608732791776611055922227165151202603021821151257938085866647934641511344423955440677111906418029130285327482474555487704472931684624455510847803585154702937702285885308795870069734070902603094780907512088999421164789699354001430076957475554944139979303174365547920802051691670437935916695398800771952838058030035312322328661784406868378350869011652857988623204846270505042472294758116818824192619859202158601611697177341727117314385074010322675508049856324492738002374911351263604184663355830501286052741374257519019176766917813226730899461302818077162210771048044025173732987205229176327794054107457650403983461731295527961795411878714074342414500173480270837426565701616833017665242964887489444958005969202681118997326550665541484361601086760839788221213857096186360942719460947636521393448412812447762078432847823339447564053261386293017385331349424997107546844017821028016703158664441351169743037262400897509473026745170445903860175598356127353358108277312505125845866728274688277457066164550009071248164128557366590362842326158734815462813975335870948859439186363772597034314908768519598554204924123871407553449673764845018182906169292884254303575741384308732014080886740808616496331151029253943035753990855776412056328816153414495359356471807450625164061257573775758905537846440642162550806608292786495997128124871064251276130882892159722906374162545241315016354162445590880113588942645510892184064283602729210459690281769969427205294054135429796895016058228127588118370945300027977727564148449120199651821053478482583185333151945261306700574936701244740031813606021193206500221340208710689511149412518694817188849913218792586238162312973822764656564969034056055735123789233972727306154114673604324533005155064034742408025828576920474323790377625970789413346481153471114844609377862918275052358103401925253729146520701986671084151757415704644842466297102222915352404733852171934129793741772204481273483913946106827366433466727487015038537593352447995112373281450662992324347417880471776458658161283407151217552818328947183705430709093036488939632925088665226279802612646183900976050643687129514484397935176258694896783411299493288832353122859495578743826473351288011229476991223737483442293657359551845685143793608393154680702596279421802846649155464577377694702879451771308054119607375383951583345930383271714562511718967572737018485182191918678316300823925106231462188312495026041914554467100325064152075010946984516533473171882023945710207958440179443004537408602321143472649458499358580412636549499039548861126162998850388278907957929501289557767309914563727474798289198703936580726218918351729756348123148223414056807411318341347315767802700948516960670050551571402367169401030020709130955881758196083103659364434015618406024941417824861419271896296263224543344455539205973353365019763213932758934780495821311319243473643581079709734634716781527226581525374578239712015812466947473343544805651051755363551294134395565251406878747564649018653803079802169776816628671613824219746162488888471377496674332600051172835951307791514703972751331107690308150985111431292440538318188778038971436339921587930130174214156925107279580887791120303451664412161003269475344742745240027411994319899195198068582093037691604750895485758673850243466939662866322288446320685962271242029683491309176804276350698016292068194165909429961081046859627647254862342687459942551248221306712757469462590191696170059085220933133242385809207191221673733195672019136559061925307702002510426596302682087771034298452062400158648836345254812444817306257283473450364810150706071713976060078577946535267252417027860066155576982166887721710321776881501524747170737710103645238490252122243160543971041576413519650785336003705353105800623787624192115518930855047283791209608209899245159175658426226764681326878610300630185533651870127130965635477604068326464613246203635385345151801992654817971556956660290826702489359836170647594593015606236083095112590699022035095402578096596961251227025908517075720931356316484700699885708402273448991322977668953105879255039009937794088319282750277148028765097143507964476337267795288140934482142098867394598741448974571607737837169213804999668255890812082664757703479275858033272148432635541773352450613655616919327843428944835215140114735834242636404499916934953543196115345854602863775949269751082482934870433885930451181050205403851692004752270626286842788737110738783050373307280643675776361798822716455150619456569886022043675646939719799940005334522996370602453615966357639301156257921791418700078333009105136254256968108120279217949927604471969410305969066214125301125037003614687181359537414469733548663976839680963979431571360792020294492840756857174271463688920781223947020447730908612576908071178129219833055330459659859418748931408813322932971101979551506538966815058071836955008552642104610065000215300027633178098312145925848385687092915120137309007496257958819894891789645252887166349836336607733119367200036279278227524528760732944944655676281223778462844929178340048119306338721048350702652113763815350604630835005388967328356938051898172509485146759491086539166558867338287756496328126072935760512422834872869684162360776252834031977796334554319530233111498683211397898980237972004354485546469869935739125842414856216436107943564942852874077010059610387072678753216375346210602164880798479086160709807718325579714797421010545325007924780139190994792665515243569377521656371279450902825180108552658277743014253956952595409623644734626846441730970678097953567216155130342628438909204421526594667709611147693796271722482941676865507891809458152497324503593705634005571349343860645652289584460222289378532320503134910289764041653490380469964154763262361741659036452472968387209155066601522545867257863507917096369754110544111418061000353708352071436402567674209658429992490190310468518153631237952315909885508417773565688162607340784452784419408424988668794325815294265372656197497102052617606294287890519255802813659099680742579591455099790275134620210973962315224958971332284216450723971546494766532882907040537682921075477999557873378475092232190322041505310211573783954638778557581724802226956251971276910069315501163233942223696172561858563738865460833230916690988353005669913018429625517238035990453587002243412688214622542010340794551013765055981177820918125680124936766623550555770589594516137792850427927628044610778302454158274072579815744705759455358853695460788347178724188068630397660972954152668513887846106134629107784074768199954921567423152216642985485887249459193501929453129462482710091360556144278965874378017152174157118582855870993281174500198974597510700234420778345713408821224033711692007843177988674542530575112578319685920040140944780216508713859574431446359549111975795226935871995421411835810836423200007906362780070583751608263528274401807587824324221725078383084197093285032758767723512444296246531428104600755529219015589195093619004149019497400409664089973285827253557294295919702942418884564611387170051757351548441410798891200172860504060387734881008418602772876779689460861916776382283007903661490328788515855890438389484234704107544434788861330528343809679657002066361366704073076337209046574487312337717069223816589535482056419748836004092587249000580098250856211989243042555703638904316395993534419249160552693303111459792381845063657045191305384544737387032957886763011033629615612195663857706255407282745464056465038457258059497050907182222087498813656557378138291748208680733029487334778508447363123504693776082118854416548138921931334588695660413112857526030803489030535408891430480098771057704960619026135559806509079716789640935703295128220121729783170488624248852237200586739139899840036553970622990371066864573652607309917928674806980943015893190240719260398819957828804002680452086948099552968343945298004459695555047751351829210502622811609619197635356339563613606971754868877278885614286695913657383782583403440816122784389762144022396002379220848406442043330179270925165962473745124796198232339162520850440456865863029192896903480533030273820005800767449850687994344683578827876581565132368807844463994428141125988786985341681867845962942195699084543990898470817448291655270949541823392419603672845463593450994999195947888793340373465667335475639204212650991017189038440459289918096778937911320617568472156795678278972738549352868080132679236381442104455762908342152592754538813143380508506939031857422690544426876932243553662473161079655786602685792667382628939299229273307277143884866717469493341641986218375110906114986121091293790660432971223991946970231080279846234520550215404729622855257928789227188345182144199108344315070178032198304280603992426337921364778421155044017818838689939064017800514389379499494095330554789295457903324088924325732683812945275453814439537118176109120073931736908019929020654715896088674285769523884570183893627435952014379818847204132094143258461522213983232906835021905406245055737115713946218515160091553365652362037481117966727589830798530859353541560996004781412107552403156592780954186890097710506684090070676401267155294708643291120910672093309127896375779741859091468977905153229337427194784696387793830065461843421131756831556701065480477399292712115186460506825862839333397259060145987295094218177085026674313309883835217530098660552204227989074213367004553474144247654418911732642219765353887971490731354157695900064867581935076521840593824192194071550165914114849917407492810681669585042536165923218188103572948704200867798691373020600216389395117017100025244211707452331735176410701157473617953577672440676703045179708688757569018893587092008492530306002534847813837919157740809406024610483998924303456341737636700888569714448523859249502261700975463096487222393219227597196313479199577355062430406272861152365017894627410946068031253401375567603095803576514244064454468868126757044156193700521694595848117060576413912110423328451806024646624313022723036406629055345677436145316692084115850346692285898392288570666831464073917169145680114863031585695158959449599065108301291691932935002886430218535559454398910246538427581511493665112290240072796975242154263028675102205057048232786548543486214496351320042133158158832947487484664733900351435175771541871558110459049316022596282256930834305857409495169074929534065038275929420666295989443676600749767798254879850598524484958805639193491301405902260732617707713595101292675561909166252926824019545851511511083629967159247793561019288839307996240800815448794910589207188243244550935919987971450286155325440473041697534187971967242587895010771188559869995018822071874120859466662078705252206290459164715959208932359091726939407448884633102999749786070851728544807492626265564350125283520252897101415581692802277454892736494441347000753498506553564726280558138982192120335239178897967180393552659849148086041688036389230919560579176953679163826148730953918809370596559667561486508678180829352434628019722897400614815309059965237812343820371997191547671195376666843484629522542918199979472284480945895576517921205703890483716451707279898799322967926220043780494261949523864520967471106411161604162336483838386967573654789491939828073737372911492999568081791370885246157502985141936507925397191084230023194319073412854415873994921736858167450290679997587653992067610156040963408057375101114386748792396476905673999358042145341242844720903667128167687197209618084776744476073602162046281442429987583286333260135622698245656800028552596598813069194129226013549390612473814174939800095524399649984016054868310011156885490635887277911404248374121975535953651726304601447469261088487035239385910534402797029286278568010234302097343291130813145678187128648280710549987178478822085987671336214857592546725529152112979177798526263343861536016591510731256240727794591823508641964991767149969052422565159275294935170360758296825271669485259818305657784577524516289049748929275122819015167269491724674348014546727530381222581123468430299142350206276278081566925341445946136238141312587340338726724733697788307663401344065588890228575261391112686762837162120394735738207355554811343867350180023705512387075730776217448929246674853538781984802980073232134556943078727722583241522302955104768702616874751702835203963498537277219900602094872096427906765901084548029453252235788610229356356353005951220289594891229683019127631173904711539769468933999644866778541043474602001896512225748713452427488383406063607905059884207921277519700948661393204537428397579535753197702963486480768947740124024683584359593254687154953439658697202987589596965244089851959849625652668144968875780478889141617388804124433974859433832156361202417068699838009033633624389797077371288599381877683925182021845925518825733519194811752027939470759536897294679793060040492309725852468896889872302240523173626675098160612215746842486257142169084706791465361510049599510427023217295524004877695953803692808212031767714121810200139799997258069862417853320978963002309449086385078325625357466106812717204575997443712273589280919417252549437752631375568680982694328718972107395888576435725487179025142981935638657432855554353749059646002771561039787826816200988994198187813661916807840146478343336189848361880465363580386584288408593881387627347786915013982509415126690301705057224604765499574688099492700890965068577727069349093417117385121167741781426840096275571261100527656583282826107773545849361050267904423401394575090675547117127750556023751181171635679953858390632047942738036054562110544143803254621404528226827352125361744903163020951019913786374841431715394502584593628386696372663463942197336457865174418372036472367171388939570299897155461377389213670250928289759979264108153647800075894441628407806565648827426199266028142863011439157052417093303017496275689673576214607140426716964395334934974561621915165759261688058872935145256225289562209589429274193675245134523455495955838204466269114298111603016511000069962186352390592067973601138358962711580456141165441950250318198218017012086093321970069372464079002374987187084747795230281002098803776223419473164703556034397686176625338010209628347701702367174179240732378754434077897444217326208650749670726342621567922449739940323818382095804248894721951430263865042759199079723167371877288406177829398124313971111282577441686102414439965626697475188113906513721439041744687649274935021471031183088658537675923262412010940830382626185001187087614291020353875340046994658006204845581441253666916245501620595317916811631082169285294831362905356989962955368898563104028255784390846115809470057708792109519113903596669107750582978472508737714356141425072501418351571434123525632055937911851390253787951320313818058532181300762180884999597964627369031518742205267497854923722343207421751463465956105746097652271038427833901706985784861203534294312437841458513989949205005033260150211502269646279795002462204800288077572956513359695732953770577054914047694554445884039565467189587204915153365333528657642712804701540844529635498942276449610349477871893902737711278399132157608116287404183687190283655593080309790781127523596609527096664906138604299995967554070967747964533290949253297252422911434164846479172792698385092117261139398535078226205504856332328354564353146629599571623708930391712067402246677280637715861875218898725314545266377268583376236563887427568047798267744257286537248531648538528123598091543797224390506404131072636242518487829958190044875514935780197741956196496663576575538186618000482861558898736988103352485144694019383161545395416942571131547882212296804158158401042568375883898969113739737203139377934157197358279689707499276744173155244997610246447814823635784997904218888272563479551756810921265461887815141459768543388138046068076390576790046918265307988760901573643466862042100980164315645734024276385528920285341104736559053965594460140732753872772835605972062866890498053266766247471299569728059154785506616888826036738868896037078917587333669132695727207254634505041090332702204509650960182912775664787366827154539947336309467317474259665321798792886343742954852209680626344399148032544203854262627709578678058615860792603908800592391692858163204212270812760082628274134517863370166809818531585035073311551877365450527690806283880404171740211845028579358889091263341914700809471745660458979829087836475532138003787255938540433642889434832835619374908683840514730218260043734573166334065247695663540298124050180076941635618844628028140522099178574548098514306503750147561208974858469214676309859797408107910394473660206162475018933065089920413474268060970074381298499485031122588393710567248722787825593888131855407736937223522834401631684126901461109214997668286648552012357677519981014206492226095803945922499945442560501314729645670939679987997547262297815280750829872721541819358433950933936488335574145675589750005397985124246433510836645949422177098312942153125715377757912215165796044282480770264536591381522112851551013179347588804310398657432835747435653263239256706193405358291394289148839696138510614851958659245235237707948029069760376137610375486019150189488780365536378757325064170055428757596645465210515544829932734751500714811692358117213173769200986643792564715769439211056181423925720166328638276955655444809167520208310722346731365772780821990803935984545849326028785343041146242932437307302063204504527336689518918269459803505002990678869312585993388280406737384576686884620828241640667476657323332123900649217112747996182658634428948179243173292456508518892846963098450098145653561502454882700286553636276230176251687714554772443218925960838975232893196949013613064652438895993938030505934426253996776872980950105972403377685294155872019841717912932513714418944844813319811328909408578857155942022518908083504759371743122073323614164793374704025759217817140436761247338154899045287728884263803993526742036602255073553276650037955828006708862403170658506508905261930044327023133100839274921892651048159135609689765078772803323227385936811580841508378172437371864752720861681276407935253149862449216930448612088264756465580749750258138213314656437820340128344593179225379551355561099726229256479372019538439230079360278560729885533615631189979722676140091647650562168528591989681744531505541838194273294300854606058687231289873328841099015419336886223493680568154341156593027892672230523432609106555511652732056027091547343895868501075266306899450681546297610249487808184661945087649849450377625440019846179414293851943401789778677198182331021607848533576629295711233345160847660761659766004180639289899562995119619289721957743461783526084384674173115049264658111999889707832707936507258527966696300073889797252370283650046200622433017963419107071948806513272457935733132301019958730742782622478243946706813091426940548738572215906641051560540586851379604323086230377322608550315483766646174245811676970873383248763405546891046795418349718244918931015398896042337817609194672777400142325835364258243565371736420487701128029408563268020521847757173235728538923667823678069716838645136492818494915748329184410955153029704536939798474875147102825478125542342988256342077285300213413869397319914740969001935409414674349630206357048555987420762659457652823597334235763140436006815035041248846858260783074557629105939153844055515078412544011707769099891554458952191068865703350624411316544551771160425332566040165160408863088312407708280569277771353956350029832139184924525690875633339737718391006270081288214689478664812371884959791182541690453834572337048782036891163027455309899368099130209127576360826447243961904530645300279044843555077701063589009295072562853670259759204759560027781024928857340243538586161867327319423243721125626424798869032453127846094579887691476144661467189542740574569431068669949088475863260246607969169254333143175706187498169720171241311390634077842435756357777614056173927003605869352292681342341957885962190830813213969929941274037714129919778411224821593483152657768405211205363568276245716425330320915573150676629541553115543343349689045814062124798897263355639832110558304248206959556722109676773665738940373077569978834677680080587973599162220714209981533868704203042412966330972548310606811303444529112062837279845614257500496190337757005466991203029170845766458011815016684750498694436811620854705337972252616189484332047414763612378819097796252985306871340659442070046598341665198526234690240941262230991868517159603244614174066642482186822188228571051883628025320272647245887172021964505932679249055551366929487951381591039263270766416191321781824784470802374194808084623132114768216160314765226584904326051175549291219293970855520973326993760660015081481370198251333257168288041973071101021180926961873289981710397094245113443998027208467594474393860226942748238904550885907529627391171354383150450432634905948110568549835737300706057368673072153475655415313794060410124206150474723679395505945391929461100288180111183685401947827205878217724814330074029962945308850282614028794808599131319786018765067777801752420215438803235599493098889165304155564963242455755590929753654480933967659675460138647090140518483790481669877763985435307203609646466205710990788651241826890366304404904966502550230265555693669995717430663552313911751458830727757236827378835761424020956200657232049046397159339324751422159971595484653262360872668965397444503770280821009734404614860678717592541290753533959481900393449847687845110333816629684966449972040036654633361141312257424429350342322687812798002936088082496421808365545002080416462463884881475783399664667906014747452762245848611470856983826057319947385829529717831108399626630651262127257916806776298624852913747750652133361880530425340409108092430308846367970687879258956142157583360641725572470797349555612031916796487795422725575381540160772602139287735166253197851285461348096248896427693406564945931226576809311639750776831861159004060101601169125664604652373707653227087169055444515366473803264097198983792250200613516267556655566329448927745930186930121175486883986677059084299709588124727205605286934119035372228416888595812529811543060511757612883081431281869918838102188144383536200378311334730811585406751701820158001584296084236179832125350444711918643604128719683723234114633671135058050834701205807521598765820787696864522346271332420188162136727921774857379950111980009406297868098734517947451711684726814804847539886804112587537328596640772226523224506288199643175821091292370386631179668605824208801281720284382822761839536084415868859800554504488263598746751447487258268197341698159714297099857715412888616135318776735807881381806333399254882278122716052694718858244708561519351899497575554024919933355002134535059327413082676752356218473899527160072794990359964558548045921094664516477808083414268690991856644053447635582206230257198121261986039162492951050150661250515095912055856271551018672377015214795053204149939622377035215786286532474168427280281671428734650771939890198846389993488227991398966937714020915946928724025377203162262936941444090842916024801492205103508459175465025694927276580635837844618505582616469214044406484295813714982782845241018892772911901137039136489231469120555520287571822525172439328983817822300268300654644896695862763530829824765879715304502753555015554015949587312192690527002014397791670236977640532664839822467162837077131076388452394553441866775928499450985288694208559554072304613873297515874432324905089254103658691835647531127973575505184699475299540865897256785745097385078502528129213984485545104208974409269356351845924655288689871611392426454432955569580346658219286028219169578042574951966602027714120686162992366741389989967238332176956140517644147023729328750214027843483644692529935855228137024808447292191750560661075440824516185431993403522738829293172493218072477336500437298117254549616120856392226800554350332100497131764396711691651131999385766249312406455068167371122413109366113403938085092996332400633262225664170052401569486609157653834084488768590997442042840475575363976176579352396136624769165324419702441385048993725158699918501725344012713960348157530473865637151338203242295469457789432020404186191305554851105714263573086041072083963566179675213899259221236014945503278014301022951803514739732934761301567308287618172055512804759455091528007292486789401811605230724288932537464609975216719766371498090308023211459028218779804545083742914486179754390235558879963964870235071035856883550809466276628896234484013202801830592619246460994803444369998993803995373667614005650163422180109068754856441618491346390662847675591735216009323243060069077451393849178296185489507777563164636466477557134363173158623889253807688043498788746112707478360295365363574601193746251573724527712828929746134775501429303453755766240772933034635072188095558343410604540299924667790624022852325322645822153785315941641478379860823196997776382548834875479133778128069801607826972350629373695666037415851709311184690200076717492653291961720958578127808443465921048565616956085749416258750509733780127338392981699398573269333043316015302853006592914198934674435951396150098639704913382702321985305859243610651105240641413210376219640192381873322034315905944908366238612348728364283119637657271443301864492131903072348162119689979982761814904355626413277286495091032297884065498973000653916003822705379335728711933744174068449125760994594563011444452054517701005576095876587468186060568299150622938695215101875381259656549468225979238865546813613666751046116566832118645583571454132255269652068405108810239025944448132925684141662518275549074559578872109273286599930636333047321731135901397972398945845355778556191550111195206420074187619057177161503568708061297848363280749178460084687507390657677766728569352390692498357100297784741815590136498062693929391487904700928440962094447315621780057609764087809235092406402766230210492559896055120111745446623485848496175044151560934885857279502098370565225670653050296077583726557560290420101512629665758445596109223236291646753769792013867519877001943656589167232961004270471388936734250849757903967468520482107593890023413688453106329105639096016770150103437570028043023015796147111460395127004793236130888863657047797053560524133238427198712152881223260286839913107393369474490993542139494089537004270699598532406315349787472352463518654780580892677567605391758885459221786332874792019506865094620593178768662176721928654908077342413792694150989870808858931647692599551218607979182591700785837497611984563298657263185345379872782259342734159445969883110282215392234788680985256751792159537281655586014496535742141231761456209150423488686304685245033798568970111051590858771089454778309148463054127444140854822198272055004265643729638201929863814051737187518519655142863948014872999057986604354924304931604233518686812982478148528295901599024441702984454011656360480043877293271364573199893634628028039923051847568636659445173001952709167167410244320008357010528114186715717153880100408653536660957326044617087976737581103318937879725600538945073722255248659451615133028599831965903072827853494931661808310537805957049351307693899988969122503717982109309037969655718498131979133573189170762217625591868694456759102318292837259010148585227920775625743901703877898052616447968271588557837490706021761193425737934755337713704059900906464177548857915292994406130319441752924107098214900853699861216496451339356351417271914987085673151957887723465729636628253285193616393299226381663249958717636360871487730788894581640301023610145795077615496763337699698162014095764804494626072291728980337180524959901108668301264099321633561312786460512714146355888143111826049520839111897193258887074253733914720860453405726270858785579218015212316461834602496729236389883190396383148364156083672907765581704604967703429441388281887912656607558985226190957266276214426454348206112726904807303754086277798351185848517482004881333047722486512879820156098983922871311598386297621858987025173605966619784210837923113007467590144229295004045501441724741236718044291295728082746142487286188962111273709530870302783979064024289978343144543727219790766741067355645312848467031709105467958706372756440009945730370817962055363269736083649687509846337327243069325010577584895604933779045724245366877859617691848543403661598790480431836101902440850524332556308890393937291042803809409317532238596655586537091106776471790375528927896008612036132036204236167453232252931580734754443774800173703778899060201529276488249615320787907103436361822803217962152259200287459555959836985662766776754566781037551161301531973613152790809010226772380242956875669734869056765383115159976552539651065626834598904827903735377145741460521236409487590180201343549691968456613312051237771572054747932052827932089501695822103072106246069430754465033212687173289411604855274887361228483519484140954540997905738478914736953968059724107609637535860048038081804020072804330105278795297166887329355261649600223824756980170540858129918601268790059396869220046925219672352703008066155484277620613080217293006242177248184439825402580937132951581377289957045424176919976841377950493309590538102112487397243656838288332930949684285960976926815495891059751462366618185345297365829462829949585814154563122956747823234805947152941743654682159322537372890317339254242742644890555117453313599206511054951382760053378386464049927954318017166906272217254671903240183797345600445560894074633293141764470326853673565150381978011747228099654490952020383449420188538130184026448498217191597958055881313285961708736410159625610227479669600986043708626819031285401036517543893092828475983773714059722320051148450291732865730827316788472093216378436993428264540253284319963979196601571580487194777975397096035629315057215964617341574458600104295780150967719687582409411395350156225389557832193811502913956162395680712560388354348408885496195783561185681084548333505423100526508635769900695666368173062418508156276488789532806176776582607304326623220439720810694546056296345973749847048152383902984046739373666662250285313147323338181672469820421771261477171690857569296996223346988444570512040139416481102086811624746841275280523268814721528196095528945354302174844259981821612980901257791127943094689677747479578609055792645069040746196327686570105935788317125425289236475046381176094822718537109552179803685382039178892568735556540355284613981643042647320754291971922179734224685203534821308160006552017094880221222630203327177582526873773461817143408485805733617248015698632716448613830131494425332667796357482618608100311299817021175206562386742552331089248452398005273975500679899964955823398683437122366472977898350283795052879577051120689658695690343903704687434603567802444420668207723214120038295586937268843510356402216863212961927881183588237095126836514064689601514539057648248284646336758541110317006385046541116198137564960248987335883604673505939399983409231320126288697171509366764660523560567904863000452073503950540871573861642891666183019962282594171346321096348399945466589704290186843483291597704910735822376250545350973156198990108935804106249940310798637149385144183226558928752838850539921175303973148608521268303432767761560972134663631435832846903394569267624320480457202103088353812557025631927856529902828580163110929464846359004520385410052785616054696915445678445644162620741893775471409473166726752768048832894906837747879255495828426899872048897862830947590248771292666774585182374252293559439737614495514810680639432337000219426940572610193533558017612180598295324740700457417494346123157131268911435998112928558281690796307554282438827332320677656806671248484857538024666759372143571124172418131273321654962634112281496564893722115138017734052122069424115874954835443996884009176705800443904265441547563807691053487925896682802168307969853469337936325196525749497020294459079399179801015323299653462146075503207535808595189376476997261261267932726382404041618057678352361757978359075589585196929542398286238682809469740940968967918341704401275951968005888715201570098586247379290251719116081541740139380163384434206571043751339794726650316146825480185768290112586740018464455834547406032182337589930833622539326942474636399597530521476515881176996413419261942181988653661080855554188337777292791211684316287661544646431146488624045017787848567168679920989258347977155165908395076493872640638528035979565530272541758372206680540042239839018399946319503020309102124746531175835143294424345784216591729156479770726519877471312298483126464308997683313799784339223812152961773103565376619942572976972210387972958814742920316501081151512247620957922179093850853735450102852392284411689218841299584027553420732020608069813344661369485848083973083354186703830150707293250502422784165867218479345759026152458648065814610857338351178151307984648860852970242953807548493594720388884443603962946771066544854123703435990497281323685090294156389404739404016266445276596781543920718281527830555465849474929525524306819476457171063255888308560805867058019296808950092585331306354390346268393414142738640256618015022153827086090431697062698946128272196618023201614066517287220818493519601078980704564613429425483413595496016061718857310489200501790613194158010469338771713164945526023903632095867750591190722930485889716131203707666839080865912921071052545563843469137337888464861929735077991906938162759279730503349679577557910198040353353387833581160034256276312548542269124351050564252387351256880682175029583558472857896198811921244043634027875892922469752664761472429595194327578919282039834360315506152272283800458799387816019230472850519464606041838159345353393947014977299980615161773904233995856329930181962760178658053697091768561625670602256270116365457006674604181974480158144352565062989025404657559138784142554267723647399061127542931908337412965652748155005143387788985060954186978676261207804535235319084286150950801135177799496929108908398796294460028967138290747040376282297343690527014204367685774253289938846364674021927231869469442162641861507705959436167720330379849623372740878648379471515020703811058651242614301564446586805808670515480748205724638587692049591178250159411039358678828434772596943707368412741862582483791530345089962739236072720988403834335926729209189962093044556965337712488749448479483064689275930087729152813421459620743367387157905709074222299740750513059887161249796157035532678167291179119796933471622909582042734938005012292075459840207111701844199118385178547694166617834197531898873203706176164220355047052708002781838365117609118083156943932468978235891130045033823920676695684639991162590075354195573940276036858902356491040471209787018434438904807980853470625111843202132086168824761940944002804726016743113878448914343131351357644248969510761021438843272779020928293559238095296656931751148502276518868749702041279965764400612063914897386413101769499488971505707419629787518697925247343019413195543203695899048358886395312731417392334391794038998256669275110761193058426780680399870317809370895754771914919520764387290320292550862339445076231330955088561814778152088328093042181527154287352297160054983298918365155324743369498016351765501550361814337530317717044359191931348722350952729922094872355504820723280878669166723761989946956968089465755741095746203849170865444544604289431809349989959619213417283621243387440542961116579234023443929818512428560917231922767611226051122313402083173545169921493429008346321092693556752791555837394798004318217648854644767078256670637438673209033809947369299692588725370398351715023817239366197009020828194877921079183001159063457620857032262606930407208247899337426212297635014907127293372523468376016447896957475824110441733574862123701981619832857115691913288518329187312701132676544091630717094884665415173800048519724384957863452492324074817640351626891231867082456273668194059246892911654079448352613847536054055765122914135226012903899516850345902041655640190548865969580652922413656897770981147822645769236851678894270796972012043152886661776270717103619156804128847242935966030928981316415004208392419261316800214417846390211417020243314260315936575828246088242303122793298343192614445376949012125423319387167303314599760186742981379264221280198454591332736059652334896379024310524677474679793095720640162955942209961671261915218343590594405446413244271316064739884312400622083357946186424912668977476779781599511225198615989640222858839166506837934899496686057911851671292248706296561939239950744220849250737066097600315776008931574057057531380499325913746939868563392716809500046299708478127099088172569615002205048318233789363561121505918918783202360239031555680361191810736901175495196171610911956541556183960241396105766530037171219650766122734421772691463351825231348727004290479117769491819747679118566731425004473779611413956004699080282530667219843624658032669634982270159025945846936384996621102227408067802866309232303262225621135771395472732197687857043881172549193684749870301517532947442687039948357513299041674018733675802826118159036635974503290466241537881779144778414849614682395994441284912162211360004614565595165313539091316699325161454139168223527104720417921678041722925995463287910693525898414494826613285564251029253510204285373420161125182317887219316529500209155248972587603191002106784022516023404463456159914230296656924633468504709923217112346675044898137381448600584629392707071730588424543347811433399929367952756806532470839038634111330279024655010172123867122508215141185066435955864750357708441216377129830701232342736278599760978037017833959804038060607799787149126958599890289452297589986106034039918225946224574427657343436393836820208033332985861307005378319164256920134948617374289203626879582928515747442642307374891053789997063926568149963855356529920132331612096297844321610967728574517496620992151817602747305767363938291314021536741108634330985509288550722296405514857551409122355945936999467509775924999253796300631765769571969541193371225608436524866383071404995263711010621403397961835005180192938025627230585194538590167718306125123935083571688558341679244751669645981735618757547773261461460922211765079939544658135720201136691493035884082085329532593559597040676950855861845773952831808324807904088520943795258469413478766673222225708006182455951384349633981128070126813066911522196141648807973960410715444589358337470457301555953916317947132982701310501401606174064358303527470463645041657728755860225421753055162402030402569807410289611128690494517358202214699797058484526905947909707220235611076561756272182420419162756609427700857956834237141322930731856837118550180409360667406782658036061309698768830536984209732042982961716577555421960501725262386588814941266354830812916156088883875404581487381820652909273444014189883631735682105248589260322007637488995343037990478123274687350658536958818598427031488337035975779166493339445932813482671124586171459392024944018902639102892953640268323476789541538839274803450355215935583571713754320465787862992711286589195269783334817354296508251338289103537034838430116891736494893690237550093543538129042389151759236663480903326006256559963110456132626991324616596934029630653538124641581355169026685877116355343085009437115443429903634276008208862063972856999579864609384783407848335144071589573987745465690210739746835209515149307095808153959046417905261404465929805038498442681295395695928878686978165989517855226910324684405773234400104488700877014690000048778789061769578040736693446508333379130470246647182852511847511068859927245218965222063219985277785863265874088878226686132516491830532820361311287040435014598525792811391517262063305295594033338850963159589297865331775293230334349058707598025868886507435336334130035023260527291300446539197013833167523488217007323214382601635456388656025981931384873865541796789090577800277874557162908365353583057953331135962414947053749023817013935011743977153520523481751767652311498287882468147986328392280349867862185335180820408301550370433494411825800534089377165810565877264836042366949748298052658736861046409236638847032111590270188799162068285547361767505281093085385458776899877009758290724814422200312215795044894109313366446965575982123712571658130661246000861611105731355760846142700312116306244149808357958510795734109277622992367053519262571839898960000755920897647812221788086209962513950241554306784873560716245141708007655509959293823823731371121340252384013113320742747824403029855593252098512725054298461747516954725936942361972282383860020203808291938312530907881883033979362550795852363932172542891943093300005041866555727675045707446416558619034317794106484394093289673570566563464288782557888361338615680760312575291053757842717204232695639571998165233594987617354580203178064410798296460055826664976039982346299467225693036894756925393515450333819046157209663673242838286738296091029449267750945378290068767924999695847083269437994514019292707120363855591074688153755033969150246451418535673171777419863534239076880851535516035905067892522864807294469751666639184773554639388759187650954752878344917209312589120100838377887489482424932724083154996954583268422863584847964422590017136427868181916900417202120802140337983615507525913608591567581798354742199387821924450944223086826315809148891838955482741624329621824285920618238156185190241333931720045370754114830810827586298592207148886741112221551253297462513558798461986435364076667937262569881876757949541515526481359947138946214338505857373491152691469457740821560813804108271035326156031534422180186460811177122330910858744089293349647581493027045227716662604946159129965203020802691223534288357466489628815834489835589476907107584197764260157303942935360986070096635071871291192244987923116260220985741597186116465821874472947993224907772830987559669281562000198512362032362736381569783447168391043008220942089987658379211734075613196611209026272121776434290177262174935267033869662388807002831878384509291098396797349078860803641662153059804524303769906824477295761487438388530934718661368571345977701195819794072133953932709393087634492495473799236747048487509497259318751960850548770198480644230414380931130135810500519696962942257682040953258285714836855237022199978397669966665035576723890474889702699121954876594832271910904286767220308012561565367970131827687530188096712159399600813843613664474201661246521922834804332882533758998615444349127982855707937487398424409873151541321931098905681624326803868887515010443249694978170182084927310805199284124242355464956102196869865624621953685313798714816811092924045613862481408342715070391889663801553830490682003141947034843917312285111591301811591748976117597078039566509465471726290633659883229040798714182932481371699519211886311508786376571787469357130346840423008257834425688601700539103312962473943607698136200566679135127876056365353828337107353942866801655217753349568358670971221170493910141486458693791150727943495213787503876923481323322751156906256738123028234653201180121963122057819581758479481258639300498458666955492325532513887743793158483289265918278521812906697470167777110514073943901071270836261278028480303885717213000365631509781323014385323227944467842369782503736564811862208700177325450998483236467416078776414571768004642316577009643379823167865766609190094940195802348526114626800668339068503386554975060447102146362539571368836609620633065301775568311691852775809300698433891626773713523122966241018152972523066159737169389780945314808178229162822928318064477015990448544664556084596579707199205399278450249746209973364483829630539665564600947287258141647238772576509447847341459404272459309338676974966906788538845184066121316237154283288133672004737583081049225582197305228484095113464943802257593649562377776068893420361581881561939591422031617988392170310166781569548642233375227546757146706528703488773958671344964981128635680718613236294694486170980266904424692089316474619753347646063697476690156764351003402422124285062551963642067674011354643894320965807293739986775472318020756161650542854626842465343222835563996229604298160871739136742299968115254098622314272271118962423792242258645773661663112494997913117878326252259373533584255044421326079172291812112023191509834637083498411296460447331862185319927436495289309958751570888844074519386135671186775158841640235446701355837592517769424090388196794566785197473834220505777363218715559894580389753428333626496002595258099096241007543510006856443538375101647392332558115314175620766543574809960017083781238212738902532630087793340090540773479891755720390215449176772160777869894924911139870791011454231648048260555339416710927654675276575375240619674357947620470511024315557631933646424951656171831233236930478377938300920834713461004450655784898863412931571977300640563460717622140365150559837140829363114847453862084777714108687068371501238345970319362329972886107979642584772459068997628609351667293182367675677537158592524773611890908395066657381104078417543924604922130415888158660995227149823102571888676074719197903951479678935689634487392103694422383834171468023339378508907057508408744303919870042336076188798814166142371696854916599018446310150534195466975277150986499467665985334278238930001448617310586555697976982337244856821082750254354319373561046083136852033260520353078122544801084688286149915623429836865029983886878502843779503348756613394602582894917427859338015299778808333482434444857117909519550393859463677603442034436943316806059456175786167617279438777060916545297579747042869347255414047966475188934788928831902252056485097735846455559751368287254721798511751596077002947716799255653344040555225659265514515479475150778490684328531189486058095917278581882470202363658923746437779919631215368461773127230015129051307487947957232496795623943693158262293571442484665504680569022818145288408826475662444109370867990642362606070978875835257795648073351635973835595308262695349899582196406773048113637131660810880256180028178002148799380946218645022951130502579514775251282074198410426590124883976329901681084589300528516387077092560263764002550476578707136114253669407809545107136992812586460824937629571254791233616683379722435866201703594226001452252693072896590262278948936681030466269068685491518707144776057173035296682736876615863598106479604004557928438135744728908265944193243213873456656279001571130978855804658940179164474525226842055856487010871629645132355235285593047462289644994615745973208968500167326033713385142986662614219354015872018979773617308111603916400019452942516977961051803660191313236817308299615848666140606446862597513447252404331932798431934519997520708720228013175661736846969959772485633507350263982694487814441188284334897817604198689993611113446301967331937874155607057294219975805721257723417795051871603192963680344865212706170770786336378431291787884462675818418103146378058030615835522047245176185938573209008743019598680156120815440781747928276903265509177530612754590220742455232069648227246519197956296442360605623154692285953639443234006678249372483249683021081167498352435335832686380496579153228482020899995486650176164792033593251664510844014886269824624740179792205173223420856565985502388784580022201295482068794992352220492764038741728551096451037412494683106902023767831463844926764582553549536666941637500949377807581386758962637366878117840823777934987768737677720593378854297455793998944716971747246715236039757701748799619434041568131760678369670638673401300692582208309418557314430968375551758342283086030319424534953698145180684319226629341971793539019655421530428420840786350334558940333292065296325366371873872417700065936818009145394696908655837869739378505473924391818504658119975756333607491315622197793622467195611750594158837265808866665004899109270191545028075099901420017381788022913947200752774553624612922081147555211011244885590973137619454841128021157775292673552184464546778964256032480349817572837618178288619801369362419362820696682633948174233119042187224978316727109097893621579085483240237346481030303983170252502674359736218967409945997603722066007260483967498063538815453267881389695344003582352631268663405804634514696715513211867062877138353002277512598362814648745957761173371178309441580323652117272461356100827400859346734672059146112753667547053824257358452851728430887919287518087748844483049047969829901835701385304199571975371503556845324481673685223068640335157739511774964609930511087872710262288782862961492785735645227957654561718722607969178302604362121213941372522953384391884896895764547701747528832852412617190322920245258016266650659242275987833519097695979622694063426961182442551645086606499749485665616864975646184035363668158652720625777875952176844436707825607995938739279741029763641146163694186826150181493955797866253386642047412502851873165866176275390264203290051990763461452269602585321612865607764458715591396720749365113146017111908428179877072448286300215824546585583521677219926386757148375640147288882686002120969004632931736795649803747781912131136809594452215615653675576749204378783392031899763233190907050018736351410579651087299390003966434544514319089778181031093786630727858516265492455262198447847859048130979166769820143123252489164262444550499143070950952316907974577483963272461016574334194038285503177362900835492646449899297885286740702878545054208503614581545665913371340987749113568423455238100686217869337547662834186891046556511130681987317773778810122767202811158874715006150970398648025527043556690725701925575831837003312677224306525382506384807646086325544026484872515385184025881969897385451493092675884144602445753316675680910176723571157812942516969845054526125489491864880129000483704406565755640940932928556138018445377176122551944461837163626784160604810120308414304421003019215034584136560106029976687375195587568855527481026132848027835128698509756981129118718813444636587753702645679183855370783357156422087019552098065667361590386078236676349031177212492067063989429419997663193947096478505434473350069373908129656232625443772361313668283958058167776292029930388459367319369232504962177441880655706355144579158759886091271320125111006158110160972002508245834426936317870228290229806300174588927818105239251554226259581623132124064352683278311215801889988286385099162104462859944701788490253098548896236169713833721256495336667475716793319483641220034830310857652785580287827515962459567667869581396408156448400813062605884072152863819755312046918202388910303333713600151850719476969879855863030026944025229331397015543299885655571573427032003486003921005082041270450096112032830225544452596715531669336386766570089264051262357943811029870255673117526996116193168039472507133064764210358683748603422012154324279620407595050908156749737440672583533420931793352267068347413378647944360863617085707929927036672628312064643665865417432809634045392212194016647463378633015071825686579550828351036720601013696949500777632099924358119188852678971536750312316798960199596720196758287338584102330420957872585205498825272572402420797998203766723276728288693974502238437665525312735377240761639722366082484113883151029581224444224478684216122817953911047566057198154588804155397618407573005640096721458584829899975093015972983990763475255454623780112023983823001412870347043158593587702358477069464246659340467147646997338601997375305468348071250685345025363809087778650579573944524614248881809839354058607318293719422636325150882422237803331682357976971473995338725302855851358163059478889372360330949816626628610129542220048786030430242992182070057895508622080961028353988310560977174426017333448437374202202275953826686604981375223870725070587160708420424171927160254112737097274147171298819581850213504123413837248691049627873534170775271889621506963167898552571861114123644830836738971889506199089404573267383283476611762612579671434910351054338421710898804257485170444881250571115522577254556193700462682129116840026974243213004522062240224313684746245304414789235532414654349751421548467379768283814181609532438519496313858561546786018832358789763586654410721225978722658837773230894262099366957277528274806646566046265660772539300194334168739338182434813118859876611407108942057842712397497250963489034929269810494165143374629033809317238419596233440991731309802638292747082368035147414380300409662842013839517022765940989196632204035282041133983778349499988796026145110899264403122301931487747573857995970935097781274344099028598395554418164288281142883320059089945414886743782528743591851063019008241018006340003112362110635602325471804281909583748601755420284255255061262182492268366303817362838976351591437675892366786487328498329482047145924038874476775034888853997265753555199866351645506370026114104555265525632128700617436273287115593643852838760355571156986675732529618816351424925275249647712712066875185082569747140682154977454528710602702983875845274777491050361033751229854155484250934663880213586012374598419205506331074553257249640123256618106149719103775060418701089035448678185674879001455864376399804228724891777447125926873276296368896869915771446576779910977956165433405213616968783834631032841291747067835682555552420361114822022605763630676298414438686305551745098811448137764656972062331787223509245006454145541632549945431850841207100616790933040114712588509293796712080401891815939592751854446072477426431369456662307992410492236059655525374909489272333675718430038881397198997227511567823222237671857387135900455550290928419428326961314363308953135298826528989449451874146316467590577046140876385430133767004946725929746095631828913027078843941999268291393326260912144837057967589465888516537129926671327307113140398761259712234204921813180199580723829957383089080357968009763183238106324285841231785967117631315694204495064388848793121767616679603061000660750363897401151954583408218542060187093569601150221487979578009839088020214661807170184940372591965994592830034788447578541309743151790943262719324722025818521174128860268726928821946788320140264792728277578176382269497839678306623278031894192419913326814882634349660553018868560749192184437887111733634968792502598290861744487971684562797691794031382808833889024479603970464500845227977994975007085869629019554804839371223539164827205077194966463444835158958327204947442520396453145844260980994823046680791112396633965058008907074639053830461076240977332777295286303777229484553270441241315923716848329340073845015163938387132039435724430396358324103565035366530501186901529686068114576792170080088854863665379041830735371648793529382154243297857825378012201868523147612222668857697956568801886859948092062099725966710276914330625364576112535085789066102684392596509628615772647353657073661904229886340528251450632330561297523038207114700610185309983367433905453247553914428959489941811162206780825659481617148750684885502548575921101659411697567129846698586082394611803752581170903698665605988590103715366786699732375858806296180683390948369964991755858536004315076268561868140487744494453343342401963954106333849109817335604260003068841223485217912872927220944671596584915196930418695027461571268564165466110486222914493927865719503400198058540386518943651027993599550441036562784926882260657777634382001742787181414275400022959697373138924579964190761935093873462407155733351816286423978469372866138881993645691609671343182066961732891524701389488669481872700012367835504941036629021427227573797209992537619229202630411166920889414436498161803508025809994036266268090823959678822182205682271639688956240430898390750581941810655119833157965478978050068366715483279706476670130600710557870212471164163356747796609990046223998453308695265049619286278533589785780935772143654328222056437560117166488918849653286054593793445225464557798812353311523270018615716450209787395483330627106076348089981604937588760414101053942033445734203564007611826672501919210703784432511939303806030505458857696311175730124281210417212249206384359763013186233126734078546031595440028467107684784701749590691869463108395210265448996709727904376593657527969380299681516267979792237845135333851102026822867043674625291120456409854108317139469857936101745066482024771293648125629183502486497720395451586645198994421340612323855623869450852091477822437340590734479698647505896034683719811131411448339514779710937007029181329491442463101753784831695183335007640690563699981484275276212481217685481827029768387467917625442020103422124838190437974644904911507949452118392414518764644532522366594855809966715683919928226627020671845661410925455580962432231568795267558104000677797095208773770663784164644049726612061638089210616463648357343013999998481788501251866154561476110256884363380317584632912545039329493622247732870674029780810570701179011609221016231015255088419525846070700534443018278589138636402197699044878179350493122532077409786021680842851829850640598332207505597040325409024627700849566521198656340244640678381363046991574826654523979785867715926410153597937778544245888851384650260816898758465047784316507829806240047954661855080355771407303020146228401713049981291763121201694207357005363803600424010552436028144470319616140412278132141269352586705973579594687184261251402977438719415974452359440449288975301681421073956224139617757792538372291789979361870698568649734832625706410917476593705327901742699951624632118040539818389438135869725294345995138361877530688235626592577109536883880495979839674476571528134426215769579816997405517134619743511378173431416148450289561787561742823999027942949364748809262221179614610907450766447845547423477344249157968849804791739731836904416711486713912997336484577628364056923417407037819613277750273368441418599250573004263716640673585014851386017322568254211103484201916307400397081715339289343039978686879205904952281001875316580514360819687481441879255197979174481224173226475918996386652970871298194433954834009382577226394871508501823988910479572244879564410663249963452156226086779491650206665988581475080171558179430806926227816513234502775992429408600088175161932454674996077733276191651912679744884081914711906342198895964093086849562366950719355130492699018161071417457507715595502017254435316583546639256184385488288363490007890970435988387237374676303018007767568665073618281443352331071062094361818058108489733277686153622850561767556726923186707680151354260453126392957327661574900184374326486315078158968048443934960868381210282484938645130758223009561214859425368620033791937306256325243758285568959249013804552570028656446787302075102512609503907597276067571553322622248170502125808652049218036957598541255299394361103271366852867254521432723039644570841885482362022450369442097840506911108787550613036536691214738848985846153493976024154395263364788925497367677968748302880542887646143951211629430477753710340001372709586680927429201921074976925000333021450843928724991675544257548764796734727948189373798167422771792102747964929829411810593433347450039187033918271790425948349603433847496066785346153473332382073693789474017012265124283351136689972746972632588422391126760443336251642454110318049857753314234116839906842866638769051525092589841342909002076417335811696505638050499862526371616316416361984936811710551883531766311366325288820920286707966452973895700821518754626174837660303770132935203119017351606170874563996815412662707329565948188536231943453213116614271644559371735992130685491864602879101531344493411050683314775999795054916716236132901540483645936744413401710009098694563350319087307786122360189265394119260300345543007787264547062517973830427009821680980874769091192285758974887323048794120679629146508645478956236829695952274943105663540335337059190560142278375027553537055332982587258951907746107675924709331699266286007792552187858613276787726753927238498371855975091148353605397436593398236601339126953819281481573957979886513098732674497368181050564121315148744224737487626596861369755446081471662679413848558735403344788275548684525543438500703823349098026950726377938914733212022918670753470954528377766059326172936108950871067840466826018463185828421689180050910717739442364124781838674088338665089403684013741227032861079019058489450574820812922309211121814236919317516016502761343268364876240700892070185299559922056343582426313551670971637415285937870550973204480181176435499169675993014067652615059319822143706644887644038977878622540545327490315953026930115005662178477257912593899159492522044998293688909772072755669419304718613429268724706217586275541641090643213773027420978159955479835943060334869742936308556757162128386945903308636491578659199594548763949039030924933966959563728775561130875671959693169806188261324029330147405064350400641657813764829343130773001926394701844375121917741176154503849638659827664964751305800275447427868790186128345186463891388209429915261926665123591907315127078369078365728183090050440132545944369863319414252988837032262892569257923575665289357833488800197081227238564619155801459908652412927878808372574896519086835579280511991148737409229819244441704075793999442857888511656468552807471674377057229581029612225838909547783118399487036536670632094521951343046749408262877196089846863666462273848742200606935337601673405162235247526487115123628423035413717380214963765629671145508774003308516215733489036091590805104695268276578454764254018866121605999075216698537168696714743516804186570023304351615044753709486913161313570458239529872750084411449689401868069829451061802154104336660462326729393245896815944112362879542757856376359025424044269709108062664161980250176499666637776368908087971794138389941369434980319153935328184281557397860078822071409457427088879708002046945327515640311392724422285705033172101658077039413247043913544467939946575988646442607301120753206952224976491077076320458286751605688247867665781519491504031989402482520455655123954611094493665875728733796107796343629982969678389116508570592001188221660661957946638248953670147375881498503201354739044919241693271798694183706119878082350301669491100377246204446483683490647249584688721070020234996501608894410809974371854300708104720754122415963713536799874459330821076645436818400902782354047055220739218201804208280003595246874373283179801039573526344171868161405710424184498965572426461040693963957139457706059451275066272952512774348567603856110634548025606580179383855597208182679719267571097517475166189808862531946291016075105911459463902733184966138772967235769679549195385338464275791537067099560162122854536890384631537803723392197504900158320864026943616095602488462231267368159046261669509922699826417430273745786298938635182462546633409717396430258326821913441788461085585576430098349602990032974182733820112022234362646369599453649171378704122856960854207494995873209889270358249833682474497724407428277421541296287352943473476064700918814985981891416834920544725255786906146886114579239931025366960280347575760660024121415776993658903943697487267227705098480842364377205566056141814965660885823184710333495451437295106910431051961850611153556133971179578762847906694634985263146388333415198597424172312615793177426640708371006942126695795346865361133261658224948994684552343930495075964683988252626454674259692752184609270630069129116041425086289284283068394792146441206619553608563761242134692576826472365794586933526517157629065192830151773467200445333890589139464268987305069032399341901595550227296846160538140273725554392275671489472640195908681953850544008651463862228949536124442792496569522568481510918394069520005870239534264480747037904107637956215130811347701325588356318350267131618894354784464032354891548787831069790717378991166382949176746918202270295130168837531865717295079368254404883870422625379029310674662683635499561989440068876149705907591808280385649252064518353625233479493383107041761491008998223526889255231773920624227686422690516052316341346436345933596594565917921569601964815372245827809145233483747397086958820815076253078510400529978220979565501696100354613625904755184002846165022780917073167416659086636427784207523157106431272907571159232364047883043831089681912934152048394066852639186070285633515901057500693174213475841229322297794108003898107116381067299201730432056118930100080590992092810868795655678336291433382504869045457421147452461298710003380414958593031024743363794184979836594522510038505052579038921579538880572280423586369526348772861373881693499543795318146068068023129621482519444022977727227654761349907239945695085031777888635606532132295455868291016444782081474619096823904230009330083459394579539403900538014037132084972747499121165790644617729599623685245346628901232587855354146329918526908670055461385230005261154052194403486175972392772267612219691512126210703676328444837533000323594516774251478311293663376503512547983816176562970632601850312349640429057477714422239930538622242357143948135186046522019202610864853553362544068870336845567699689788754526596356690908147289266377700606903613446803787633297225568270423192544251713398048632756332560753770415416733791327782551667904151907510474545665133757261218255168586504876932014074597712968230688215342716624686873821972436875329471445928261004324346946661568447101714984671094740566588427918302570886664415177320139107699239743481567598269183688597246473492830389162968061012107316054848122170197054597322948053032957936537660940422448824817908825027999737384259584019960209459833834025796901420845510116660532486261991811041334185472514894212866746149978968491381471028795297624376288981607232879760833254537161622816492461984098991461426692574877587740310442663722198010441165149121012261334601478262174021767393263518373802656293274222665753038122693050714726969083622935725963156993358010000776928956492227162969317400982587388223042751358280438854399689341594603392645640107368912765279193764444252893528799594458598663983744492080573989335509861111904781971038113650163522463807418138922250124041619029478415700803857485438278079551515993097294550931517992808767316494837630438773536956127467516722831076073104644626227335950792334133595135920167181945743473785940417895659465371180170050405114697164120885128287603788286752008975015366804637926135230138300662620836492739776756599285983517226375471622361068965420048665250441526518381098353772977772369931335364166160348951727325971776891241358371903929423441671273564405634203123624948838964793846362217263083849583613533886897253871737341712722092768976797699644424247360012525352436372042625782056969959763642263384933381043220189971429042026437686623512238819585762103700447451642749131381315272172645977233657707594291669215833226164493216261780993442054301314080143412747598957355355286465258822888984824704015977356438796823118083806390243730802199552759038016988868551721826687542080730042853021277171210382819430424652386228122553726030231391585575563702667845908992927767738079590142688086804210667981564089534650147874067714412786005970047081347844593745780178300928655828688312454219760438523024891063546645081872546481217265090077185420443847729201675008843583262266545921971985042165267540208499629100254176568702474832193627610710188974832766444874585370300465880718036697191513573675056550210564259535511620986324032366834850075651304892887951806495640360529989389906651726783400837374631694958073430510002797057508704154534202464556344849939570092552645497953684132943917329966926190878174937495305153748663691407384922387463574257110576803646871948655264835862762584720032379796814928069374449793562189619326890382522967695000729319484775029142317993041567612819877239325612587020510736041286700011527715682715833677067318218212695356653853587931725615158034608084443669606298017878916367690393977958704350881955425944803422943089815703694956330306135252718858892909226561597055021416538112330693634949572870805258149576064415352135184986271433917350678426311018410741156806445119636898136495045418172556832842611827383469777175359609405658170196956148495910060030863304418841537911855479943190721493443220855350308328548964662241596026813753224231272451082768684068208904787267950751663655589962018621066767509802713604022182762320471634235049695753967495222223704848204555474842219578767195316353076441503809421583087647568771552355259118304519734197964389006875562766360282731070265942938963544545876055481410137309269913266367311870642067610864405541666827347451240929500573096024422422524655941185036072547807663723293092063699439338305540176320552729561313235000354585730024735566214193921572461717468129964559393534901337438938515982534734286859376601914405747022842108657638168398605743245179548428780120566389477647509332556978998684167307358555777327106156767050611904183378492942379540289557476209872986276536472854677576967378139353344894527447618929457244899871479873546244746070521265117203875871697285413987406096057177825940369951967489854576566642583880831007676510771474523268395484489119456029253186729658314971635804569463008171536223853969625621010619285328156176075120590893270893440169563526264944461814082326128355550287957304097559924561094033796269043449000010476093671133541990659563123207394769321803586072339522165615850598259736909442101253476670188780300185839814759887262669510320266289598161184526259602308151482243864381746243077407676453334849860330641375823493142097356066482625878860063124126936223340730551191175874980629146085536485451828285165078742948358034344515436357144071371806155375786958726935529278634641966230539590453925502236871251363853953572885287209981685936413646632832015325640961523791616116756414423554511462469447663074700447450747184431571550222604855510267878385796869237964954789948458580430640031734197146245894550981430984616594506548910176605913396092220183523079300348325995400659061778393284061429219504635586119984860750445692008335809132635235635925821580403375056252097707172360713019666259156489371262779220888761950592012789785360948810280188966031745182533045018103310971048023689503678881426850092636529291676109166019856126037171858609488596012282495901648615904375960268685910704591370482550496049113663522846610046977149148750614073364385816113914537458215724476419642729032026828209231982994269604389606632595411110216578573268626736589030617088805290726241506698970562436641488083478528469957924141041095854210938731794548347590726703354977859978766506191657057687424398137689354930146725525630044488925690417824948899892579342887639486109448265061198393848476541068014381781011256517800752655879296174900834788564239945861653628933916703281711184808593723063986933783567554666258168783980454770724334566378385559953559667435044077203727254813989984502776583636681381883837841295650731486844645400279658651257017686965054952647359666027144133637104363860165515886234115965480994786472420517327884470908227567198446067227099350092840559823947719178716488443472061247422703359525114454599939931165176627527121450277021512665976712326247442159365672084296236926609139734617206655890393340522003338022218969107332060374793090584442725735220330193552180230775296210759944872305021548130849312591422061711777522785379540587323365889315300849244578115345660040860295422407797004870711901106138772043877432037723077221887079091295506160786418217638130109187444132376801002302875177165680042875971843155213745673704044082990533197926341338584574905815627006467227724643821408021584699435223308749615243289983499099531355768826360407336676903262094263751588781784664738440328050352914643751877150773426245874183171091923056007303919535698996099190025536980702266831751005644038148895638476120752863655021542659206971400032297460792533137979479243823919673533835867105538107906726019573935636393852423058327218568467233058868978406364913665579382403906719557161634825136288250881883591795067813283847229011889321326719429714620821012215257618500100208951150255439266167399412568234876700488296917976343009893987523703805916913036254407342109245911000037832007361503370781352314540075760141816671936804138598824531918885877568125702017790227416514398775248106549509972865288049434728271459709125018721856765912399704656436190713264032602253741676756906097933688538357387645446270388282527176609251911597098682500926934930184647489438480921154110643651169537104994438686743162576026513056962659690161540384146994728499460111314913108683362748922833855085655596733391868261041055278665325974075247078274209292430993044889582644505656145138021618742947024073342712237074976655754960830775832192039102694687798912595402317038819801091080409302047568283636454074606773357773697793125188554857693301599415816356356221858109463762854881451658366180193379661856945396399953279874305392916907843787098650883110701653619040388513811865364463832802909118889405059428611303871994168898887662720723886176891700846730889357729502442449999159028001597662297069157967536611461591833776154712124254362297154976821628310515638974281826199031575719598444105523205937867593508688386960162044195046859658253074129042856089651728702442614246351394672575948675168680264480565656404909350995518485340807486339392583385058198222658202726729659666867254156278292051599404825183660999083963007105924872840467400533266842690866877104146297058863697746928360356797607306920802007618503887205885496866048356764232639059199515473072029451456048115856035572052911186906141346812995035739107492665395045001945268262122320681174073875919374770568290981112387994743327924485584971802856594933019797703984124973307724210827373349496326091012171078155272967024023844311126662933669383919676390979176076529857130102624880335024970329263406141150915352716316184183734474223358191907439623147861869086970755718246812245088934115684963657008513464808450106473275741161294904816101224246722628345249908204719640619998725547444445983962247741728832452088902098176442351901046422881875850648332069847135312172557971437878213828132986802564958902865957574742614057510372453986474564335304089813054854020966061025389993200599506545762896251977405335501848450182405771598856128253516637696619825377502714323775880257700445373771480343525758828536606451730159776007763681540421195099247312124587180433907757967080943901190769065068747941387733540931389604701144883389234293046475215815199782173176849347168531034384941802725642474840845569069415309903719656007393453258477624248732185728067159551886635140450534422250278160427530614160571389936109102301957233086514482681063768580243626525685153375239237806055678233633055161486433707272057391697882265694921594001893369629127280184526987274476429407735108580681963702891480715041287432981937626710879022203981907440188654320660193456197963650889803853613950373577503075328254975777930747404121817225990539373856304579834950984726740438085561996285164641255374553486053252117520983695571511565903288497059190297449935200802926304258775821981860006399038078236599772751197447486065878736218987330347927945364989511086672169971830399534729497492132657678592964621706186630892242401407598449651634416697409420222052333161320629455165311068590045263800887414497593446420818877661567808967517327062471820738026646997141216597603217214435871711258573493620849680082927487137652718109419743874671340525126369212848245381789381652812843589716756540862679140053735869774167503033214151839194586012253056322242678235355447500929337558558115491482004760505601992718559816592783200850934679207499657501212432038450144032616147395042223244976602008514758372864671377826777635911450980720705055767566263725450064758857388697140456941727458202199987953257163043568825086063155597043438808760287018727809217009320886097554350706766902126299524382002171479337016430960373153177996840584547453074076808332745825846483073679457879440779103149107989018263374743509196268436532387872828429086481115240831890888103627683872688815981317431631184869136073730470450206818961918399125419529203086254490567104044228024246794808429250324327735339845544709509216784066484255776392494906143987400905530047188898763169142408808558878309119260931339612318986801170297119967940936441205827202913735109275209193907807867151886052775186172768344892873268769968903328253786423676226270304588360852910146649948954758254583682769165644509709295200170515070841432191139083734217252406484302650849392846314865205136822111248706506126027733869851089315634188796878138107168215499133254298356448024064072403484569408832640336599101290019589569108101998865629323414016120174641406394534480790260421944464136344589484303631543840198166257037759109321067822681702142582582438895481280699590118874467930434877262479853751218640859357081756328885309881177995258176511688406422680305962994515899357010392978089149172399209138218248911286967595742192621370570257870998984925048872873397937174316048571145893909468849959454366031382954506088229590846561144559174319088429136034097052266904227033372285150833177967014449185846288858681839576952681901060256180227785636678618921537589675275938654955232988286077291640312977488525000645437523089824756686474875703845030932856544766479734616629926511595406975850860127774966533451386435736883613851641094500101599654254751476798162387991760244843595713629814512484727713372673352686592382652446399599207249974063003823075178440048384490042638438766505964263544651132424593982043480562593173464877542690331490952500248193496122803491914262232437416337090551498362144605882392254432729780794010035934770769588883399243909929284969255761370540992991575948231408363083433729372004857802368910834678617123786067330180686462411685856581474667073065362553833183149621502929886042034921875897255912574585492942254662074894016953002195492153115905633136060285744431359056891655616691162337171102057290106408712023861195920154542037687168247854764549024331131728752300714117684334175655586427890200065662337699232686896556998553340765860524681747253954135637587506055170269948355506046095655001776702440395121478890508441316561723697929431273329599921694366220651041635110587061078122561769967513751848622428661727432493395593851032723012792436332426952779002033965871727534389050641679887458276184827434768563681406062705928185966225755110668543728528817388691112052493303028256195320312910776274587590024785096460142641447891113101644496614158349566850024607944051776853341961824133849288422913940225306956725201907056929663033539601733833356678368317486626760520882565000278543342040572297991726335978272139131385393305340343497409794730973229218024535774930943160862254794496966090140308155537300051451814403179999120126962033377117490140044153105027392469611913008021719003952009781953131047655391370556048782728300056533855741309139014011697701171715162358340744298135679832421382727218104609530298284699265804197820087522769580564711167055865707921597993222915639350271976881457273368223238456977928361178322393991485264858709481551188399550672211984778123659989657597808724967063713790125910409560552088708214425889832697998042566321647872551326078623509478123270857724768050910109305340830877988266773536598110011818735128419406612676321630708013256536629185533781715199894468231324626636618740892202045744508978246359947228947162443369502645333878598944327704224228202262547497559426805145039613512637753687838104644781672288582415922778725591993946731018367950625240801387047908363177153148543202104722199058131920667789106742761120693337767965721071626584625851503287277617367404477080577136109904180217848052495738449574529848605647293945582425408441200982389496429315803155326410029848145188853281348170794709414035859722342376094170413852334709275620348106448198678305749972799004503733230029922098485667956064753316419486161533399450100067216955462665348488875214116703716305591743191067140437183464333784918844329497559020965314734440122831589179640035117404297460480062279420265423646624353329761047018858914942880981239906722988529120277451415049045783417239853260857421761137178696848250228915067116820544377270756786224497779676601958922244574481906496361388755485697558747364864583699535022496970009201137508133112851265578642876504297116521560661444415373337824543538277552353245398627017703921295207312911825916853488037502018019837719378016691381478571882191458725072583949195087269047337457910825859910646326001941970512850655785469681305784900209429102391622628051475963686182807584448118802721124886662618606486518592973860123850598802210535804398907228463800952283876782416896795107625023452340153220054359819566713696401609460702012450005508674395055505237831498826332154558657772105580450562655632373170774374529819045722732619122605366406425603546512221026903200932950993702849382106728950306432803171019597611596956568857259330417772949412382880120844804336332048237822598029696964562379088569952179400129746090538218142219192836143805197005005327150800250919984897223261189304868855233228011957786329422937881875498908780556885334836295271411082046779374518050843388588695172316497545615772063816818473040021549051790214345794459999338886067723063140658823171649118388430198581838844062843448576218233213906245225350514892365925952192448884672066177653063561900347178363512521723436192957994728174129929044069482476122656202078373977238964446088934059811590389035590746916908450043024468821083300268438160736034249237286646515671090696592127962841057534443904331636841904502970042553085287049152774473452076191785075459733730286324416856571364525734289001823924214248899142363193622672268210026616317914930892200928117182650055536558370644811306993033029645334660201821997076939223412674331491924866638690004264316598995735026905254146425036366596150693078213410262152448323655187839744022765652476684000861105045702446232355867967309967387840534494511613545042596821846622743299272690764173422848413943962192763482616449683926158349053279531783032109422182455397481152626000911253441128086250590138340137164671786302151158530099693754266899879540968543001065733677263623381652900634216937846658279209207538116771388831184315995247643285191320381772594343372509996079170652294247254884075510977400077220304132470963403206835577035344019330933480450841783638445995976496551413142216621762653972619820714568658969451923815989478011873523967204041164611112759097014602443723181503747236386752035328559096470563380288461979862862536528407580329019698764766030056651696353269906558576901525077918457032124791139682316872291229736960029669555890674283266216629809881758714826067125564388927039296527747640786221533267126970450216296179257127506652071756330466310711648831525221550806893884073207776414759869551122158201050128157036335706153662472310488884244259677518692636556570523654343811903476355289531646450346083008814295845884020340752922804600398966490503481969712996476499779925291029868542096958775880994410820098866652680466986668762416267480626447060426514397083088403201024706697228843669799324396730618078498688044863244054680590871596035887251044554891990645260902487043449012856302867221579983073222041752014120292554656242507163082273686560130868458968344922577066912244823711085498114480318053333514371561373427202715554430995492034526438356280552807996122686020491116718170155967724764723571822107439769002376703993398894603896357500593843616849087273658549844684859880831364811555207285317339037045988992478590656178784046127911893030603197445460638191881117924132694310645130065558319814873268870189999055464414153475725335575423211684083388189293047961716594993550298497856502891431255209242335178290906017138052397734956884020615443323104326680295862980286350237550621541752496966377851636308915567668298332666053390342286098673210912683047288773930040484576172344896447005918007151548466841202748190552849646154485560085807331132009029091223268776879462987521611209262717258805286378275362204123723000720362119770318017731736975522738862377014883080376007473236094418221785168981729048553126826173459282423173565167090882612837475142962414057020062880355953632145175994463219626707590791346935608470321863530582063597707676165270178819006578194765044454312570316285379127739830155198758854685235608232560542374496742743438520163636704736510562304709030421051293466469006742701633861224623808940516625945062525547178478983569404975394606581032041382336463863087839475680655559201404807150657968411741184233353401230349816174477435364068883553439352841236467769897437877619451473266446967838460489447078948610640649484298979815927940821892982273663724811399878831795056565458198704186048291102651614492872465375604422505037906141371790920742428312867403771789209360593921871788385119937229742917360344878639238117384255525213435097734976349961403023436028559243575161879092336922338334378448653202604244950720508912759972077713014958482427451574203769448371987706322643542917262044960440280638154337418188297699902584601534233552320831472854626546274904271645354264693627533316566940399197349275636988840138076297118106913035055194952357967592326206277634947250783819853787164509766221589673887723999288845866621276824501030400969807756356707099986849825802941852324803696383445157902342048702005511530550113012774290024995291173887142586615028683560440860786708626621137987030442741856788252790461684592955266857978025613867759380650753066580656831707770186458530451943893731331458626582723540867288226439212960265383441784338308305105899246524264216080948551051307550475737365221675547731554775771678455458711032524868952529018303326974968104325651392910345567022405551900897131671496826995975213427022589362613994321923151071347733012219621933796915606163323969378736347275403210866719041192545184556638900436463322431289233507534672514326889550106650449277512642960506858388399617218615329662001449243187145856479124906692755033223647905949165049500926897699030984001941330921126585750580177850477126707445957892805444153078656366133088445835765755493457728279561327419652441700231934024949479496929638211978393482007486764376931301901402372394049257888334936626919825175431116478114804462677465993609105059806828515296866695157108672765873322330915198664549214374998567402942239964278742715380225790704599819731777621314950814866273273438730523273314225786396700164109518198831863182867921306471023080603699469924437416028318022190461081047755095674371945033934521117334836249442749932012584264943686535072824862832327508801419025119596449865422513134361844955295125642084342405674286242987801360951476448708865312803188514814112928644567831891649354513569639595610630836514555520362334024180535841244805942634867063217589909426971206794758316523993122967959767033778278771036485773978011150131118012272590378919972212874207774253232496949294058533846201627438687011953958864166630142528935022363260237843810695434751832933364939618281018206482438630555224406795462351436610540832602184724924171934012506202530297697082341680143928460818559206901174223971529085517555757494967098185044578759298692209060410783922582073417138104890004330273074112932669661806600140082840934720462064827049203220548025874679695199543306655827397269445405371931923139485615309617511101910279645236092466980593658853408807087040212263573847585065041638237307966083579250866070414058496473493786150875554721573809084741546841428356290577909635843757704185045127083226915831199545907225614499419541454166897598903305649754553321654760069812416707274570144158518881284745568213410157143666195555671394879558657830105534158566688727377294948408014443595512821039727175913882716358736687230018751650882951930004998711840315911829000326083009252241643656941680608794783193080768466917283819435938513399565145889420013757521262253654156245939464517378448559184783468319922898034282507011828267869445084349524834811002034710801137360937506434946259300808125342471294069523738211210630339839128968127149730637058936605899463861587841214593469230514907019008154570463060315320571123694434790382129308204476165698560104862338158283832526922509562227608750904876450376306688948168537380864683190457550737441226310642815216923085637621935463150256048842284564993773274940107528580872342334115968143044322153557065607340913449899031936592030115379316548279881433547496219633200205108220345389107744403917447531092066759695415499350338203372702627758442064441248154377407808645850311704795858385051808586272355263009471618707734871214147077029507407560053578836194708642847264029233220116865749070454056732348203959062388717388317302614722858454141629163133158016678250726681184217956009461304167851723722112305565404701066869637267010973669961751018255564186660021799960419963434632519537966807516433967150236472194471189946294630936362188129872149748116552653866799679191621009981686189895179420459703218388562580191721674271551694210611806261633099062939024681869789670552666844865142479275448910433434181420161343687118732130691391769498509141257797423684285949042921142349708864999686193528536675006802036997360494834161611222021700037829916002737900703715532115588966384601919780290658133715616072282582912345072633408079491335066447935092342217631208374174769449126149178383802278744881055136228605331395032206639569320737338512614930050803279633838289314540405490407395627009694871156978085165206097870831377802270129312578316013844595991379227926945594092150826919118461612207648181589953376723055526387471875182080049843332313054260260067208495044013665274120115148428091234507940487743911704040433194702778538124447715331518930740146500814459964023310178034632846273221761258777116414458952375924265320020440738578652732404877354266828740618039928038323756557292014149407219203303802273650536029748962684111636145553858574200280998178116461663182850345532959868382770007152171165321496618330051918625584164331584062169240815948049285548607015267394332067685771324513018779480585097028236731988179735706619858330700722695723429461311493431888314735311878787785192745680361083406383112155352557357268088367508991715144810152049408300050075374259321483308464292455246803638233892512720260235378223485503663460032951631562912889582154568658641869981656301878168757583645778033247357648865760763643233203388171011859278052678297667032680754179841917631190896754160078244796728165090853674054755064154729505346501205528134043235912661501353278181703684183429235686344872521500983831902846953172342091397342369998457609807231436852112558639001991259303162367715864429452780305195526249613955084074701828722630267916771910522384829325710028512219965314358735628598346036595094367981143383788679922368398735893611170803625015493256759770809183133555690750273734045915575814676241653409721669534574596778099010121427167941498830173954316882284250469920771719046313773072791586083374081965784629356645345874760789601882814543696515338527861293308804997167842359382029833595704437499109432463346965500091737240231593291845659200265169493833205924573621215376342920959865401696794411907407414162373491794021530961618864229046580799304536245378895773303255836116635465568187673421411753103668535149036739772539247554660300275874957879603181877573078487786352106879217479943326842216721313366488863618047316505369317365324027495603663859596344999496320104020933745189458523493221115059470781360008710519390534848887182754888435093310074322152968282335775542609512014380072507557646677424296940908746283894515871961500955333840596642300536259723175790626838580028994590937160609791406336329652008135685880065545257403907406900226611035793140637589722185917206527199254617705590825731441623288825377114811232480061842898253913580871032113424504650278544853969821021997273050980383882257376586072941215272800319258375380602118263982467692431627965940184232840829508657754406639678405600618410628919625641423083347867644647651859938652827111696657023975142122722535382232524704338772828655835960300354480892233095593416366166447419853151791327414412430860430613507262833837804926856469548188559210027610026917916036191814918335421932279992427808644950436602305742214293392265232513213605526710492669087952822477590168611605563573257581351072813191859371523160372164782252078599888468258490886761809171671485296292141125945452879689838812335458836544617570354929664974429479130237256209680862312597829390107665955533145538101012289629173115838617974413348235650752472021650457405791174190318667538795295113539629915929627749573379018288517221915856173296092275008209317683021333206489949816894296903913657599352716269634256718728244602479025089369304641089117949802443218608699634162910158975095622576069598961238107506737246104353186842771668334417938389266953833392299475441882024007930952387659085132292745217207210125202165783076991562835067103593009557784888377314564123169560401948659486358548666521498738808381563555099828111112132937238049317761983816019590571148378936150642036024987534426228705224173447394580420811457182111575447929439169020350375257854436837159448039451909072914680991720761402108669711439601160904980775685190423293701826456834347686863204241175577885038323890186418363429834601004755827692059511059194969569057140107903606479732891285325029731796499098953597005685433496384189302106670225739048568428208043086549277311775962675161008437428561039451428127819044339493905156945104413202713912668860457916264519201854633044932914056403229573507644703053202119705652388672780990839373821124707981221404220393191640983720685251408129292930621762419438144137324079038299495888199675839973482699202123810408758072225375088510296489612556575925704652527264795461731573511734577534348742472319571968140683523230337827913255689472096139299352390971763079174784430146420720876600631615520560531208016370861988318133185346695923944710464585159719901705868997540948647785780784748726354880233526395260426851229010545725374595171590789926188254973591200557830826770002427791836629365754240783993407199569982906376989057840948839715016085077476624800342653982960286017017632103961659235323960052122997917270994255622144167798278655960743327384623357705322581525285019399561449818322646828414765687165740996147203872361334465602377804475154196251687152024575432171444920174188577064661020563877701503577642823504068709543856113091162623551503324696759105684686262505916184167357927301052104455673021447519038452268694800637606347655849529437156427092219726241646743543033758783463986542061474001868936283712352042759038376145088891694423760357690441397613805934930951731165473311884928282425462886709581182264207832150737965131563757965777461640244276217179634190550444943600567796829673179953400844917772263523689495580273032289367675871137733100944601991811029114635966096241781248258961335558622729058502135308522020624254610460671186886830891634322796305026863453319105419280451454240350828685959782975166714174291042286066446548434416172697998321041117518025358889767014685589752868454546850339636807389505597153714546896957096888535344562307682356144728675931688519458649618456334547141958966023034309751321236712854890965707589177344078602186749592527296937257779058027951076058096013773820003315947079710165341527254479682294668636844804578369290346522703911373671507126790068454852957232090969566833937115816110224602836849973794263198534395406081334524788766627100628469807326616624195409782792259768469613454642288353076355248383287435887512340313258353365293077632591313468929049837894544427155800712631431184989246992505829708187918368653778903388953715932225726764787517414463592891881796668517851317522297920217272855214472088630330969162503166226705913887051701570387442837396192767019981848496306352104993925409887681088939863247678822242760286703037826326485086814358881109578361743941842447924927381560839263299071301684325843942483637501687793016093292320427818632619015920493805209904760166606138042953286614978668199991078454836830612914957817933271705527199486343658710916656953160931042454767977880800412530309308174546082283605068195973686498959900328644659213346317062539538754751047521046502002900717457956919470319113253651170374052095215595385019375489472110893629910188783083077847471622236971705507685575187000236616855021741419180368821764494050628178045574424048412672863824911612920943682654782296269543973853171111930340565645695578809827878002713881783267253301331493338846076484946149558655778177077097935398397496018693237686414050531116206224540816882379072672838752291719593964647847200078212991231971855817896654379539425076300544016802546825710302179308284880999348743387318048941920528014382879562940212984531111282757877809434656845565563514931595246044870772173194990776262868664506444089417340061647391343526855487058944549724586941643609421667322786312387089890823326086460765395620222616184031044326031348236731406967190372099911302489986905918889570720872973522933790865451108704454854143034504586682526090442189250701480632985661729248652535032780610119059324802044282855794107563383468891539995153347623949417350404349080532900817753874602440672644137750131978305033850831379784001577958119505142745620820531299883800551999158788914188741023235129831927196112364434501372830058696979799425248636963705302796590242819219549019895213993011653251960553632464969704114918332759215617547653739073264706313659793236595918357058677709063884212490915186516703174295409436793399251009755056353435066021412768323533804408737066424678291704974608420929248440930673852049807413429653307985509762435223666372399740721353755049192433933697286069162905654069133405544156376734944035873353390654349295392275789693038585072033462317564401977812906708060667950353578228834447328868205094966896595081511666626186242235732277135724473871735867020561323128850780441178304670680683649661765917962101811207579089905549110247223198393827275776508856650785699414995118222105704010979261573542844491567531018419897837372712417203978973218438475739490209691149688028676979430687794380632724620061271214281892646493157683901509399129834043855395240038913650564253340202157177093508207614813055117136432615583384304355871057132486129154285604556475321764884564581332848712712439682654699217956097262873497790958141582437800331381110903340668739739813787299147695334969226089266017730365719557614550274030392817694840293287929077929109563373025764804704221217284637791190170551423229140503864448674928300846295719585939455084716674483627378971987882121991822362788385300482469502274327551993328184818938619135597674101995111219302662227896765880939946720416010903447406851606343610606216494567821469085697689306626864471984322362796456955496708289077611760429768310003171037179778500809272196542295654317062303508037198753096856539191749542122219923429311679108548972650124896154039101569029446360406516309467688408254564014123232372473354316017176148090773701348675426682233927072870547560042711656101874502864636653414774817395813463432748274238893010339877969214605712985843890580763689606081664973836212527521951612760492354567830483442876258726129806755316842113648413220847571794586321134296082790050121307511885810595359421387133639530779399203346351511987067612613935177251623586097248468982691998054797869231703993409000929055514977275739798934087066709273566973114283404878530318942749845052397235347440942942329345130952669758637199688704777039670965596831982762319597986685056595276427848211169905826511091841485495912679164818746037710437848374833216699605623923746378455364235916986860514380699778057590670605740174813539522098736872206976213865344347622401946122083828226482929828207154214442089331687670650339935283066398524553951104673734370378451751319412662481249398343118423861356333576003687832156817884483039374067394564636388369357864136803569629557772664410381808138211987718036291885424461807219182769195139207126520862039272616232761236636157005511119804874524793537227926536964360309519341602402720342266442134145681888842811421867110148813103248835831211158501579413645714315951517248261201728539355662864871411958202581813286454598632015409705269419954187874321763058965151293294982024104465156442428347844030049275668408889042925454921198520070966171339287922708650115410234882236686177096200906664249695484402637525494622282820797017212537493016210270595607671062696351682017778558634695053697539181026504189386024263943156356531555689822312857044131033708947678741940885146127399554451150604011365342076390166737328531068946934455580923306268966539870507895564819548311670153050897921010958181146209463130371642678495256997535980504748427197785292415383587289380276473665756332187832397470147572536639493036190116723357908737693093943178346982476396156925379566270150942583964034588943429897491669662194547573899646702817593655216912719215430961408727215607997403960289852993429678188706502692951609273752503358371873321032272093747884913103923860129758594440885287973891346198211417694303983161573615373823909221883473698022225464371486900242101692302423056824348888939790080231235202404621990871777454251233027356091166738967464288609559318442381388070683966358459613747597123280520556841846145286072483696301254533685520039496111545618811031750131428330313746972364343807762595884850345364160580502197688100963771192319906204229367816116224679344703810211440851072182138261313226042678360719220286878801273104877281669374325677946209954709961511818790519331683303406670463101104707083902945244565248042017172246725566411069616825694634002776701040210235062600652013698899291793509320365624827850891062625441913158254241036536322532307156733468573826684010113906491085025631086230568737171971217086238403866442163635328536917730382595247524829290299850503530450953724915105622996059017119845405212112236467985940639779612624226682014172751945507286822457615402896659447416886434846137246349135205190919646527169637776035067594369048691137768280486584249251155514751682676780848131566276522362890999654616166304419219778791977906989493102258466815945427806191376606215563939193092572916338787155680681064889911068400256869877690646579537808365932596129061431984453428897083618036632057227600639533676119977704567312247923487602495520195400315095897098190608948905811261061669575368594360422832589699254271888389338039639949389023182000594494802504605525497891881438601402863791610732262542485360212078761346000811308975075654843114108361283408882202771035131151690132708482016472930294688791960109645490941787349917197486679230543510118510205192805147394214004055341799429076633185379718063049553082195758254404240667347460142439192203725206535349507894155960287274621638383475195431078683568240008927788748481970654649673972047994642420841725162898346332060076362329950729427230357584753315883972385737511498383515608713645598858957979228341578935621166323653713317047105555167996747275377496839777856460647686763487708892794574695143404963725695973438365298468948606566485256257855379199831940052865480567415589114982900439660671247178924504958048564721655835969138251696520229629570660239822525869826730093710234157633939732010315073428363044276352506706524644331258737731730463864863523431752628384927030072876607785746315031198460923318954628858869541779463536591716060543508551497164436454736787143236075704978841948062290348181990538818138469171153290051587672310109810454711064680780612863695694235029781000952198818461364416011824874043051450928939756869010170121847127764896902993689873807390514064904447248086917543210232712889892831896352918712267024018137955538591920282674928623075989173075257109826745209665784935749697876257819886364980683425600371894895028989169655151486082427898943985473668107225931610302546862166454341855799422579384800599558205003860738794720823114247891936300719496256134402964490707474830210526309405401893972381318012778334277816985253937652499908430273708139250595538179085262171843943180275119969184056993135622656132222360655110535180962585927343335683332166928390449942563878230584175368836794404264478880566558568473166831191579679705323539927590518216901447936864433936095237741287924795537619454936238294885073528507774386865143492447671070187820001718462755373728638377853711800768366769660720721087974684531312691035659894047546232173132498165018342295487819744172083165487354504471524461770064752359675121500114632427126858458559284528746195166886239659296827004293546351896104744072763143140217644160764062309182650615568398080950566852630533964273225378843925993295980812434724689624552522016691340014199796775016090396962281317493386908394473751479264109584802625293052674025540112030314897251269744385718033629284246369511434035826762934544212575629502616909874792473087736847573350459455004925489170456152524390787994468291092926460832258489474345340368821014567163523190536871963178858896292143842155850358214614244253232011980226560365331935975543500701621637242180794008392029287288442441682676000003908772156292510725856190220134768843592830363375560877671029680561437440549453164488014237273461596236632199853598318480029782315366878984136932682218856096334996929915675422436236318448048016669449058871485557477936003603627692764283067959399194292673350679101663726860259644266475914953610537514171835378306582661875797900684086997226129963505157322227998538236547026421424950987991820900442531087545068959508208173342709834133913969315792829097200506548634854282073229631416283620035236419263781318291306797280607596006761621135660560924890422327510237131951820810766655178052338486269773378126633561289555782265048771109170928185771801762831327770902551267957774082968595883138657264895746691031732412795758124031346744309039242978557765234238024736653838306420825653031720817200818830536542320439620950369893027425086080702059399217475413534835877869480825634232711643748779271098291615413181033778853238070830933600841671920541256005336640610631348589977294179604159625543454549765470477203490992143023080289437761123392463993916830615430274732767747110273234335083410664625987493812189506837719451081757131160045368605014301578173869136481656739053798050034887639248341693352721654050614349965544108042828105210247724628302458522025926391691309156510883694217440603824909122397286311636145263715890323704668540890284092003733875634566745780170381698023775800372332278981217049164113370670277042654125282834893037970336697568974078406313316754315393409084429537891214445938568634959218113379865234707862120372726159178600620353800063971354282179521840713941430087122892300776037060653854080156213526776314774182493757418160489395044018402694708225515067516371569662623633713384130430283798589931049237034106700572924172578168956614689469555498100269138808082072114910893518616521574547526081970302991055532332769768874439215908367472009046056547890850316219735727570495245438790656049076408048808623160395042104120255359432791296550791824702276740240185218924000847865881734546124196516648326151083786332185060217767138537071397240576827322210864370147018768141779089000442331822672397611098899955255903961261362026974045425974998341193912180350535161741993093549608268541338224287155184287877974523034025668079327436059551351241695425966441373370920002324257665490529371262146744703463679258391446696443765771174004752372301810661165047748874205145454646417910769331155877844424361671458782295367783119573593259924967823831934107284345004293563484396795671615353630531433467257532766611528966126358560409127157162547459081465270488757470714738634044275586816094302700179990434991209891209027928916248131161166842612824682466594248480336278462407230373808584530908674527810782149126406291193104951879166016112138828269653474724350390791718313411469349346198805947919219736486824173319610325045569794249686583582021425749655601145355602425902166772083736137228953259741938031201749803240486941752659450805684550536015887393803569233285110418153415269166500565233401071879364234415418337087879962702891335213500623578254027504528684266582586738910749160732230472813971506971633402216521484800837011412058572743709856917816668866947351054804937923384716187380653563215324310398555887443198776207793895491723540477267835329657423819404344587935517082750707691763401287988857468803113478041913856798726864072352949421221068252864332107011559750358572351469125951712786196796260309688134946340683660444993658481909069270552273171764534828094789123390619192930111440325299105735898490701747734904282235528470549625395497393299997519771601152858536563104942108285436514673377104672252691161653585578767457806070235625445892269777017366432118150930477068337548088295205244893621081394329268647235168976458848651849414259629568019018000503301488693915288953286684598845664364908295887541344263944664681123151301130529681122956837795040655650564660325150566594178515440282754970385491036165525843645859658476916783153466567321051892963805912442442209378402275875594883742624043828681139485133623689424662540889668412516005349312853219153756089009198442986572864685054742024442390971974596162047997716303134101881550571008165143387401926187400059379147944138616491079484323768536739581731308133912878143187746118175153278300685827670929557289413105263230613758120836160601105202419360290407308939371506784732333838235300571967602893207743203101818591643212584446275700838502402191880988191739987783028624065524609946172535285436750868166477254292664161140608208583775450087502553307316027329129391871304169756888887539259642973580033183186899887055095471117259321947901007996458377383511997492096670834503437259372377585770869861734360591897047253484521130951812409791357105841363377562267581640482112191993608501767684605014462966924157929170124569207550188413124667847653203683108711914450557219524886113145577530352293734454727399575381311752164903888245305627969920463636096252251375600414033995465168991260904458530882103074166074936522045058555574806433875473422433496045699167059954251547919736662177794749609599141414488056458200966511610878702095310978978204357453578699432414861372319334064060793694074996436502555994740272216520031455751541823965464194399704155605579784818042339024723963041127862061514503097884714903205821956803413913409021089722705782124995426816885187236261485168947817315135637367093926903512035503138789426555274350584654714809097733353377719707362989382411738626402558549947588993305004399709000998970019883260280105121666746934830608241084672848247393380713937585023873481729771420136911436815061580748357492768390546066529085789073611940669156247448557531620814837593859744252056235707612592484794886959137192811570628104245800473553844548494351546117321456451087397718455907079979879877888205152341365286247766293618187900274536393589439687544061491453585920854767606357239831856642440514562754990504897634590943742225507434542355535579811976095475351380958021276559103274570266334414600549920003178728037390582551109952787139842516281618061436031873424392877694004687588191585919971704299041687567190145153114728049410179286412015847191524974676429796012778837435011496370473562058012647707631547078191348110750806995880306769350850651940579445457471987128426040318871586785634539459068793346242444423881197266026595222967727102055862793302851937954610209248356100592271935653241248995404834636013201901746183203407283880735800398440473188925458259621337614527204187553545958594248349781937674099334992698311215192723691596560623712862760313365728490903987835315437505236754348544572391553104400203405970108278786043058139796384120115511659340065761398596584480997654744909655417085282293521799176137856626002019319810721882780608090095832438595155690654832377598349859633628314039189057933947868719503506780805554305675381616988838837127248788521873931010856233438697188769686381207356559780999368774029172167091027395107237914259428498830403124830368118176784477727085884952053367134140385984978222160645230713905181042129843725673052669741375382349334237331095580903675880415221614715449900844952604942434762957594222952726609499213720037371841118209129392341840152171706313273074526947919354556621627064156381400809367881877110608350180457065390255373753315790444118948450488714845593827471101275041297059498221871907047264157329202534790547747377993991574365961594406427944235522870534427936649472786596849081110265394961935066861660440599518409180825781886672748473397359830336422969871617631790615361236618410361780212563819301637947938858853900637311379504938371029205133518055034995097488106451005321528255986054414082933118063439221125763470918113179883321591852963906451629136784825680781021177880874589138265669897399608369652044277817120317844196152906849114798889411126119701530933393461819306784104225887945738259053041503378732702520119987432799355127184238537651549161442185737484999336622928496444888421287496530198055707124928712096777607546898583064591179962276989941641936736628739932848157346064599325816377499514494758846473657700521190490402755316532409327568919050058900380578600745020518100595463499947275125427535822384263568704205824429909018265507601841906013768377391040547283314625863214096238352337018054920762241916630817430201246871304667033028464203365997407431627362238352777297144105917820139790230389300875864677869167022136936638180852243466006138348218901608549481523065103803870245127742307126937832860571376397117250213038830746379702572634724858149796463471465401012359580467032410296199258633996989596990309379602195603661434650311980031840652792259546710245016477734786236285195837378326198312406652884232938747958041406395870964200319796370557692139694325268625305800136570935370939070517479576618160294679586586776172345256436243366624400617671645722150190139094931376815362331213913891866098562708766647219586652454120218834513539708645348584210691311266312042122275219105841081995198954939730142077034608205046149601422369025572330424889420574451423634399533688980845796149437737227470090263043964999149595884556635546216540593714008196423342080556295271965131183088018759505449304405072428296380017181589461356749130343847257690468139999233830147070007424212546647599235939184700860463461990397823432201917683151409855841641263150658149935585765630677506687190861844681579380398783759249079085257553999257538128580210481970896021149352108854273920261794685013344662642690812806658447717809351532938821625498821767440421234846145394380279865393301950240723616440340391562349921833673683778917123748966474999029985930939348962390745457879592194888643299843702197333287419209498915740154436126993093776204933583269374625217155599846664451935328884558311712845417049772477119753593390385797993120971290017547780761511543767608842354132960081381467348190429202644921536181537573671613893807213291512529034942092265103714152363692375748654714128136375353207071668976684286481780930290131851775398830594709685102599517157036508005885542143173020557896651130212403284514528023034767001976342293522558851839333616251345740148900064021362036466785418123524261709981306736734518208047139100102164906470781639603531913999845514032817681875498544070572873118256907837323492962467921313872479468921806678898377056118035510774224540175094110241811045565364817182132679970949302409590996639788160955513394469143716729262472483419476559328321061067003264525408768280237605840399884876427485293357811647171587537889025886713634264618196749795857124756194723875692878302374135870942685062582453694269696815791969055060361976835816774226090072703106716376353584405865652769324604961182426167716400693594357068381841226704974462158394766014991117499052828803692623157318458287592646215076307581066218897634729959303774735549623387480433154508970743075308698362881567621416513674755841763686692717769755535705197455550899754200416421013373373935054157422688197953630059463624076893385302699312900873109097770562753609971760815574905153278791295588728651938628071037719418083785244965954121656971998101912073400200310764878060594333590695034357651375562090383935386645196768504909520077146524239224941450906133627006280656448777653776560340699705227316944926689667646454291462476317013865337483544637015229070796487777170998482466771803634091684470080220696301164955160542217013071743411164516617262925019822383828745694380704927899135258293681159057108802390480049431991235052598875248525507271205706420799060344924334893704168633345927784531187721963943857639885657288890888349156326286336032203018687434816245122342515086283058259683382916140936017307449641849467153322798595198617508925424915394636171159185509141485835275774707561087190182616160458841147078837712781729438201692961610107712640557858317718104135629486754747926827501992980298371834274209404187710919281574597986761052677458084094211240151718431370446963928287641266308752287724625453406693882431133785654060221837466685755074300869450723000811066120786204376707761743997044892527540160170642605399498268198154250814599523084652076508938751619247312248062330754727879809500954608582154569148288132395386803763910332755806313961842967782871818793339058983611173519655138484012722213812385297276528556067302111364604098845604327980634345980790774932621344673128899595756731358337547097245437218485687595638831917737258868507977226059540162623334622618707998810901830965069123160781503108154768049168508487246368186289752252643249255949262087367301107220509983939746390701932788343071674481740443095484966111750016566468043200342151274990962351399216980560691106595226979281558399178535831934180199093121347751364824536765008490581861637224065531277612158827289845167857535635015788924430479986852481385121560719403873882883033862572703850017616405389986770991318377116435699090172918118271766049380844605684291504124716751075013340952285860443064754960553153069998552451728123220448146071598235239878743974333450881252767173265579538284628124119175487360427189786225742981963537697392303352068761700706920027703091213294556549677921751288746724736436534760167675420346565767231006051727117679255605102287798093932664269312417356251999253003089841021999696290409598954514050797516712127262119463080515490723703585750826867151654780275236917288613181084484103245511889777821386991012697793771621791395488000039347391022160905372607871370340892428529707300623931152909282887398943079330274925131961957552041556484883570058963420070836291334540836185228594958919560434451609220874712914553689529037603188571684203019930154286514662915347258472144504216376461464858602547057467144971035435131055270143558485571223582882735246121014494746080865702129121163816488512764294933549467963653252251676695738517984637929865258656935431169511262761084869265282919225033197092617372688218774673519946551470593923741564172761796940343423528732059738119829407458670355598259253344976876785101831864772628928004479506552574929054358314638446746638319357190308711962649028306431316321626726827080183513009414475302593411649813983240341545791596350418358466576822892318602334424712675633102596332343278178877194522651247385348642699957232821522139886203066747487602966204801539218551117221284576625493459263572003642124160615237753798734132040190004602414998282859986192406615376104902698842195120949082365254015620378218824700369565889388301340671262762761046514516548417926438117609686713485862939513185388577796863181271763823958748797385428347975907461793875228441143306380033573193001899880803405269693061579559212717957490687481034295836254800994964211853656434123981371197176205741753234967503769026957083719283036919835830009924023888671901276918758399655204946961559610588920086213941361291349516571494776703343702504083781212598896074113121945008627562518372281425569427272237447129635851940749519661349762115860989050937079298207959268897687827274360230112429242310887947202883751198542361823472084721314011554370628094426782148356908795052742439180363874670920867244257985456572200873661465892120283750870008421587279297356159787283413689713442846556854117547482188015002014471541593628299576026701826480088760389332900807045153391215702481656849556518093020210266726598766365186557269586317629066613591994062430325707887747546909722251050354453718326513493798486753488443247233554797853081216186247030994504875237434642667707511917682879410813349527624157908137842355025779517818404263722102861659412928706347876498307984740395914771981568210106964235375053585394730303843697837681667958649626214383866140266886629086817233887424730184632997893580533139113587984499676204554897789920920988790343835447855302434951786411302903572685674444817186383583043114424395443288183965274159033086666954646914153395314335988993009891779423467387362761267152463370613931706105516155257164217310794766683074639799733622152871188940737139487640647502391572752128876585466367718097258389778836660342328717390930685199021496204815844697761157593957831521976662645233947878436649885421950202505613522439325800588815223898813567661375036717365729114762003282839385008783508284209342903108074113259266766065706999546567869678797252990383159770689537923664824619688223327100212590522970245990063771793420804106322762348240461291757497086960634995517963197481454589216461805184538606309779402805532008697482266192767223274516050662760296103254646103856325520040077956406455077710274780964035401456041325681366078879458774929238982983880405175598775465639508039995644011016197654073152376867156953434607368339297216997255649926857399546166604751981592678758923719365624912646996031971126648247806985755988538539668270020244089597790884727587905900710682215388519598546518726394258661217019325992158336923140246076851276272276848055062750382534743415412504306596263545443062841000263420441857156270064307019408418030401093484383567055846775521879451295692041731592376102694944948211411499198466074101808154555688065951842723703244718570135060250943056330343918520120352525646361811524117683447272343297454975091158609346901017249089322057610763536188103018111958832275002900559762677072166087991924495997911701052456492909106804546932668519298487594786537340679146308578265551751677241630395935820181820670840288070191387893971725973174863241725505412077482149870911109436651657771344330425311332628806886858918498589486118829205270285366829653937989023953522987917077192594497761964953707273212166842657837216874227902391775431723308098973389040454278494918592608505938038963127043179981432842394575041929294324583713447630974177861113513791728354618869751615422692644627763490732384439731708571216923660703181973429953850306820132820944205780643418751950668824450395455736904663897264395429065030174961629803259464773683072347385514726804006723429374082117985327408796717220335209551695262331984156861636298491736379373474722176857735430097174091052198569016585672603919858077947823765812457226713622246095025831140756740360609480385835160107963813223550267305251922340980099760466586291822533478027438402302259183573593865941441615702219949665125979068041469535322384464517282983496762998633497448299007596087304825277256866541643239550377216279061422545060856002368435934793262387874321547302530110376219281279693494273663747340108859443741651864838236405544498445433942262731713842978956136646041885325571779232085894070837622787657920816380080174285071647830670104759111147838582481287599906824628517350463593721669479292796267081496075498432125656365735883190325201069811321664545742342820156215871290902023333645684052804840470198816360260660508222109240479233508620509236260334379199685947168359584637404233397377772822211423931342793670686995656904148235271444781454628643226544846348791631165844799184448234947861785433995544870292347638198194592975293913129664787548286670551535985777292698022388243388033900956712889693672630892704526804330836172579277693595178531324310139876691859810963602710343905383911287403336373529885811989234898687406467982478492772681806353130133505575515716906221033501174002628497891205930884985755430671613818137965860674106444608229098229684369127869483041568974685383752619205155268981168277262886512230946439007838811400479324116417596926301683686027012486776341917894898986403299386001357852895962962629692894706395559778063220688870421778787236469521264677232980426854745897824244601255536092511823626561425833765568509650550073529636477816626130750727455562774478483505914371776660105960549718421955568415655143826634330425684073508310268698495082344923403082736680193296883681585345572727362831166782954570346091161459860984727696362143196058395081494480319616614190599957335775911483625376802022290349245262188175116253897076927096629895996391589620686868502157605201890143354919267429722214721626240272783155216057755374295384038553569875193603081160674575676307840436746471515719720264703959015824888416941661838499366638509277754193996808189680789636747065541952897912189241998117997439436962289085745937818001526562037197987834248400084625876141843198275882954524795608750695910585851623681420196377975166465385522120141264696247538961386239418447611081863368514020762342014303491546523269883619388518889410631835105739810021788479483783079409001361740575812070847621814397318381903305710021396511838836530280967308906760096608154253803705559916356122886429904831559922010864104455039262833499788176470714226839447455852677090471191412913513224349412420443909938197441740545013744976795134478219470280044447089461276044748751740826624358348028979117474287320796211238957505081152218109081767751469149185853340300906794268209038922751969326800653599815391621862141061194753203087391068661248330453936294399221400884137296991836649426341011728528869611777913050860915027655486778986642799305068103973731999716648715158125039485944644325598384982162003520714843678747181147255134496824772085109910955118187621517561045555123283347386187285697182799083953835317930729425706722697684800511834825873743144656236108484712540343436269949614296023352116935952646356476807310550081214344486886427333452470359297296075850078559058585609319750447986554588486673260693753688912806866104912503878064178089569786543240923466915237920304646097587456783308123474031968862542963678121063673820030493618203445057783990686710903689921825258310909346302857968396309047077421543657533796433333854196286217705689197274045528517636419263776777406556683013886863909033973680068582401205245474801262165827117650915166775832023437217571377422188532792974403874263514928143749727376889731502243118504265342958639479863351492181285612121162224061731714612772734169596179104372317359166904996978788963584264752012856084000805630296493596614832154009240071423755064026763343131190272215183550721736874500556238103971168228751868054031359235544413226478599738874172988649981677460059234122439267711356443688607831023867240294245774870009739870474200194555121925799316968972115950841075471477992588293113597823505236842293857216313859961959085707218103364040290555226889483908187968522879440391740306333786262359441029876448329588690705552256319683701734492243000998606370053672833226295528832144557490744955175554607442343574325352715483113075271536834701913347450666092892526298602528009811210543640151889739665009729470948506393986601566442950619083854390147485233522512618450539806036819544344463949661445784051539929149295897294484423209689784721198173114320813584297007272924337831873481080653023288903929534773447655809305488386069899513946472862810873152697100737455541225499745549102069968249443673017552342640953702950931305482923113893632644297552819388553513422463835758385878203248118415744522719373517284822505718445755955242576226943757536048036963378417516102564137028406611892925843281296880108931784236483615889002742320057076841263575723485653198422442082358750768732018933431581282188215679156020353302360815202548278561101786779358274283413701264593311027461544417060682037636562342366751627173310956560080952855169424698922720452695871516206864463917679700472338937854634374197305672207908393463612674403680368582730806224861326076102701869042735833568106037471843067365028868820314699444006372852150046720285237008904016673012368136981137809411244106645067199688798765098792481305756753356786578366041835991209635190996068415862887968747711068866393204250184560216314521380731655055399308179005041941012127769302525425735746796687125163434732063611901008644650769630047196923244891195420743561202049928499291934976834868578864559992728752342821044817778735322442799122972557402920460091755719030586977480198358138263223191232130323746400508104167911747767399842070241981380347480726304663373014302327237069210619123604809626196165837715761763554638138079948449061949357028951038154803451048515609302139854513759980956790201615017082521188552565179750699029913198394150761667729437390305406083323251826200407529045204989992294310064548421621103036902246753651294388021370515158147409015113474861901949298831387119759823139245425967217924821323167210335642212962587858374235548602079268516059204608375073430038404544258709349087279165915113049600682146787552962528260807593991251871227422766836089415971067402334100492095574765286191267154800385458179733199547392417159803038274931579342155793404089990781831223564744248023898616136602366173902934232707555761276563711217748032178805112780020888678792781896650689494549181227404542797671749303177274064709432165396920886404114711684028317872619102549052923750173283453297315025883646686049850855658489045411143601255627824718388127009809218451541543079436955766177379703331405389140150637842902467162792650071014803360531230353584007893168875696811873371460770887587797685443247859396819636908351622413340187219732582483408716519617024877598483486060102910190751692607574041806777834083570173871307466336633257335292734667934463203223245063779375536363782598248652026955254651807232510432448358641952923668412216522096517554323290720304643392513683522483768005844243334265896537697517899731490367983188237764602577521580135924891517762418265787204921373435597176007123406944481441344155842921783182557866589129596192238760488357616468950101948082649853860710122475161436310857506798859201671366540520706398457450023756541593916381489216663946952790732134058550953941875270147595049739874684271117870464420314878031488294008723826070167120516512300703271169498469626038200696690489650860772759306011825557090940367379530722035021091070439416308424651502993157892275204499689187515307141440721106216609905129714296066335639135444176577241437234865479741230899278345677892891042582657965222010984379904114203023041432554410652358625002361890789871475532427147752951177336317504293073055578468034061633439366724420894300670983465956190914091557880954451621608272928481623265041431792701877696604544670854661929428939256080847197191498878411132583364902384132543438620736423771273794287544761432508395694073607608661629096535695459934345640879210465855861109948141100844777091566532973654739525395148681260951323102303685242139668742529297568782223026852795163381894310472222725997139595923173096394539608502431985814207477140661599932732407023382066250659098618408857562086252857128282771113931027754800566328042750921916213296649256805122567391734732083397797666629515956653092410027007509349968294170992523101996498425647679767681906510564258072042627880975770395062807664310736555478669410273132990274699378995522505715481046018075596416322646655704202276559175622138418895033239818280033262679200508058087690162692815832609335254510848110652871512800218228042175872188050441534201981758936913969443852162192287565032107322913793351129685597267803182165103413235202165677596790747287111671411380534519650845441324787174188558164870915504130502637047137941519469481961960697633478122940599902200051940967819928062771624943218764690356033163770041021446971254263322660631151114702996165071996390561355686174740642478480313598833672672743204558101340214693479278153034285975141598052482433597560089599515729447199123437250652733412814267156962581727091753407377448833137441436454978276595065286363605918008497670287112814902139063310157163546309035027278034553929583878563636111753758441930503646035651263465770875530688511402561262005242614214067620070134107872765032287276177827205981506484207659615594189648059650670141110813821719089446816594492376309069491879062103755950416786991724042862007170595062888606882660100915778595541329644393752945824746626734402056083185189402397941188217359887416441203721203865571098044481111713617935136454204071964518033892508846350290620360974188324440722144657809091588882759681524289083579620489402398709261689016010342921809051744703924047084210106353540994563078588465321788867615001431091792941463822230729062404851519950165480985419668615995370163760221559895693088068732022672711871606794518970216784433556239373982880312330029707074772352234293364078601781561158522992242381035450395287740249116016548219739710395267709287071971242622873711629203697146910144346772643799102427512760168682935270149079367741027408735068654399640753402363434485072716753494875091104632125544950478987218402486952070259429859109975960456041128712225363915746484592574059003606302520170353944478116810144483239045639493525176890742252205894442388610307485751977209251537198239215757444827571193627161664846049866851918734372037865862329535327137842950800032548082325901019710759440846156110220962384640569549354587862226538935637328212661427361103150446969478983337812959005338006986780289930528931144926208744412662124361793509660048331567895950295986676116670378918412872671829359885577953664214836067845909719085526816494102269892200908068359309242659076629815845173512358104033005279087858667527601935312600591851039861296888671614725879133906375997698793559892654750590991299253027009121263241548081713217589818899844643182968093486094764117738656737445342820292697034474676115335052746267842014881687736106323586471909429476489266781859414429508033917677985870043662803077825972523935305417138274429865409856137311725822983619449798494261769308434392176844659354019399438659028142976868449408660672047123684042334149714519195542344865597508444428360017862809278154408743075079958921705509661089300504915483005571337122332218974307517835315186055942740671924216463326360727184069637112175912688394664029163238828233617035481139778388921455369888071883554624001118220091542896789791077254458969384117799752322082179409571698986939125725110956651453296204721961551485713431833385109193025984251671267013720955289068016745380862666188580245575806023494648044989306107342586855796358878827246721443625677254448681061631591995638146214638376860653688697552062265135404779998402601746717784479418950571797657153590308859089888063428201243046567213011925642546422678358140590416035459620728889171428598759683720199497200448392680708897732667990111292461997963917698931863677052060177720106141285207607496220956670957951407963466978807641227491544822005694075660799182245141898670470665552216752294410519534069741870304314769140781238674262444684874366735118307243239847368609122060090916490419998575192036128583683942073459521582318346325682310240062962351014678362258221561517558671800248486231762661986024585221892990598883202967823324667149362920580125165892566169964748049593395562448939478779362390113904358154160189871274465272601024541109401375050875012053075283288907161448984539446160242752110102601636892055650536178902645316820100738281797193345009593609459217844614165389221425564840125553273597629853151726782367872032341401700857725568329735776203481789462999208107150513291833356321658414960856820844483914235863800174079522708881507556592951315261039375576496111225899757659900190286813386223787735119911894500322815436953577994831670606706821522310728361165189539188061647012481990723112689637316970416597406782455997908773110321519028748855464074010483549143392987874436275122070066625064379032310741296186289529684564176105712791077532476297945668029509287833774593783055404874679401732329005426217753852158042663633264333621007370467784411728147069044819629130987091984092996836665969970331434232910403769066156813758581339685459245821162549973944145638840307403219225470417133175103641399374427102942065833541129525203022194027993846920854530053884807206424503953938039752187006398206553682077961217519781674285636746852860173081059884149148417159343230898563054349937670004693773878164729845906544157402940159130566280266534822402715302710477673240163512230296661967485054618280488750105630786031189445048946133630051886825296610155723405134592124866463915050447723222803235787972206402048102464394661981669123617493877987884989252812236622229584848746992162931532810507102298796065996303377771804743453896772605423603971400033797743944496598730027643338671089779614456833030875637775758127826057363157373547700910726034709168305796822749170411751045484362155586156038179113606188909078357537171816090951465737570017793478610443425459137241339632020520799179910538378713434158292846943681942665372538000025533558036282200933851438104947664663564729487748241444443953972424114902703373512363611951974414724244298652512071866099408371557344998636520942212989202534662007842829151187296686177867462209148564448814354365606231989895168913076634208106193812470414555992599863824712098306549087755696153971958274776770452119978053287175214618271924562228721148907570077866411156501419976225858709919300325495258610809681698507770143471778721804412230677033285599054357952512554386838207029775322170555070635354963055623475084679077839954097707876372251225964054567099232566749195246583046772479722773190553435335754329143738745950498913149510617015987301190472453240236911364115013112774333513102327057514310698172951124532957627776240297960130230589456972172227728363133850036022660781180021552934537739813479779930211856577992505531938851028670619499372995617510803586955003646800066581311528594132892353251484913478577495645741541778075911699105204453513319803129140721623969455049733409164918468366644934204312170961381461376253667910563071799311413626924908303695479354592015154825968902513033303333522528060884848347754136228873358280066603709423041628081235338057115357295588435535645149553925817631318942131242950979484161134076916679333187430357350830683509200143397727586724445593005337706737960249956210696862805857617323705119058345497920128943482373460443615623456291042381077307736166934002170574200037902355214121168639236085192303374000551550725858324337567625998883100406194811897444589796787303490367563073208170959429105966240431803952574307929556581036646970205975240054090765444703001367681029197811750096569863082841118118493177621373160407234057917882007510615086054223481646805922994392625759492105740218303203722939961909683683384410507362698062080493572072896183763242676782673200941882116435981224549017691697180171805323792855706524409290611846468808880950002906639919631923188706450325358318148157135337480560739725612137899997718938933921737104577966266243402671852764237638977182679483143121990528363481117413299341060538935208882397745377661647136080178862996161034310633139179915966943612480922852546670867476246275423517895042560292273170339044991874504057428207186887753133874412374679205068468187234348852869172566978011938001106893719628863226806069879879438007440509550939850708005447422194756423352270659715379346258529529824707196740931437865337984950671578942661910956915222414019914080339138645341936389365575641836036532450002974246023985720155509852639737025725211375631517745393153238331942442771857924031758171399299115603670039294114963860130482192747711258380312939629974536632304195318660479526595581558595615226080683820112069027045360203934247890850776738678701441928250277473033231735939708566291761484162891278049209051608976757546254221132863692803867784714285100811218017126610890399723012491377477516778485571501733835394634063920651936748563697916036419662635700262313953742998560719953145689833685971405511898961679061442913096752544756731635760101336929341486607938312998246397691078673314569787389824394219804053417465161390843066306999532215865725347657121960619333258592373737159121604914653888982831258062270581956857650552311725225385022536357679192190025567304625472776435334461777906749094524083862563924631531223172768087655169094724785581386094495325478551190255454365184728982671181698175226737638859970489295328247139427190403060457966437850597494883942290706667931076923531397670163834442335853437725393669679650938857975551410425035082803675285466700277935572645854433926150676595489267202949222205112608823290757327058184917008189402528221892773911114977372459578650198461959566639137503747897377826314225279886879047429653510693619848871503142542126367599069537438337042782242766036922687676303206936788097386154540113269081961749828436218045976739992824997475356732535300289892871935376923449007383293410549743177998160143501153095219799751281312490356351592461953248785245606399906929798839929751535850770855694472863421818386462870445794102498663921469581253237475537425205776797709409896983473206554420638240729118566597487186656677146282752510150014629414229590251953343340276051066215707674473996079893855450173974602208873216431131236621240115894711868284167978033227920212610322278801197638096974676339144132907490782351457205279077172780173962412144042072186771367642117917498074570532769220078705143561418426185174445775413931559176146348444428753222467370989218593289943799897928820417468541412886598616847831289679508730581232531158784850412408187645076132976807321820942350576561794670012489426952353154349364440147193124319545988685122942249206700955951018780262649072665961149092952491947598854152437863757312093943815638497009686535673411969531766943430543641364929659513480742965072247917509694258410052307159269838574730822197332020456256462618297522690605212603612848828122109127652803664616020858258072766878155705709724787456028946819761285363770600668513586550096104177905643003067095253011372235169746246277834990654200840472586134180798617958480370545894323574339359079823827403660670047105595320769736814861623598778640133878593027718106058758080376473155845532936054221691168688845166160744956732755842538583712513478863808980565633948959116344567938604548949703008705369859991662507049544736480176636427809566493123659876569006620850773661063238375869756479238260537429840244892395309716278041910381822691126348864683691709306566586793203839720235961140912460818177376949275115430936740874019805634235576380426297381561403357488898647014485730398226914412133905335968418489836445271247477184908440942000251932302022961450170209801024515469365713698418496985222743122616994151937733293544608434506113732641922259055767012564047436585698258366582467610864250913384103199772922054803383705415791087370030107297698723107345964352459163533261038703700863268179612735193909802864142797775552710825235880611037901551621657294806488271748604829820619264529611218002069153438556780514265240353657111920898443356022650001724176276443790707365760872213820753113947739946658227610735230846373663960209435512749047797576586642836323083461044588966996420252591334022020132897319260410050627586588971537700664350699711711179492891285585505130594390724446040279149963549646490697296874654711736147181814069795658426048612901643661484514436631726759945355512001058466935346913350248341708094291345898465673062369893564942600846133846749202813484894688747182265221344733339442789730604584903933958704720788280999150172111036218826933907780426201755811001436486848751450298410226963812268382028486677362763931944435423609375647941435501904981380010107775622292568795500896658507627005127348303455837474026837158213357046282875178301146950554596128913876731013305130491426187785082285065534973173354585653705292758112266861640753267086003746616746907341335215073565589052354655174284498588123963023064359790399445732474483103864387683759911138753961592740305947512713825047184384756146062208395112507564410870641703422592699198275831880239489896523477899846495125335103993821289083678246352999258479172852242736406048575983318085421581176393153244765766136192781643068833994001415326370034015291488380236077593044513639187405010334214060209274897456098979850136129542508888675715328412266136139461421640225958342219532406106411595083755876574938645557510960313302215647716097408186534602596493213434438969188070925308950541457082229534181001159063718763382345433146052164303695718246133132805018118648652249014642979110616979724903160794405499850486945313907433205671803889249485869552545195980360225633402297796047354043380310329094332220530575827766923250800266552682003728854156407160324983899267132662351020808889433766377248211895725105811901443485122146090074500847824488595845036090534637139521456226812975075761894401558355885055420756490393174224912243849974964772699843868938256343453936780484995577623729113949478876889434326730373173147976096476986425411041321375609567941139453750871694419700056067049247054823617020971914597982870336785650505649673894900480365635815313606705898733709667814123143423645933067829192014927177398093401547679096078380989537124612061848159512572397632356659950890933459729091715728183483276407076753009943908081670643422953024906384023029742708808687581576758911070002444839769757886238339771842646017179085988084397798515861124818111621404580612821136810216109294172494641078786028282933179737251963410970435746894440846803827713439026210046736174815695298751677704591209450969815146096016892298296467411119975502602635813885969490877166109225352543974169102532285168751100286424919947116772611698886433394944334333114772995004310679866293693893744598429071290590117045631337089130336647643691217603519525635015483382290795765975585675035452233187741025594766815014098715891307042236697345918930017608121083841184260705285046449564223383785237606878339480369585680573298957995283804344094328737017591439077075769544271443141721398454362588497601252756631514362744167047864313213542464693157959470322314847618816965530956206325190813136504803482791010524053093575018148328565105140439551473428162568616778117206601163863832157336352600925667598806935513439933019242499166284889319040681611947592199128516948826648301607427689048918270698801678087755318138699653286418260401488533318622220316956446967857901594038122004660419126012850492152421484673163784614361049060527659578802620261681544894582758799203941653790709189890431255660003851707278160243487282027608077025029257368672055101002266119269254305535409236611666170655260414433154624911471598113379778564473994871331872310294864296405644064034190731182754225271262980861405085483971869464984368674651221244599570576938604944528253425259113362304841337683761352588544705348669963510712592306307367607293369810331825760306612344861617947658015611683700308898321295457180844550597852869371439116910508320869913378114204773094666017909881761118286691282441743301583229730747484726644376789729688930623318325217413731485224619611063702668566372109726056532972026239257009906233517961472328497611483281855459897142812193513266897148192682637898685959222303809213706308106351393446453604295895947823307748668548773782058695426678947617780803688941079633423334529090845269589737589089497421545572496119264696224365587452111272473130150336322531279247112942563676140411849616333623857345430517937815752027741797719859174493587920363414057729749188119527362022328509070972962685178494256430132267531881118436209475924433660912028817716551223865704968144753735675887663220548753492998430716380338314358436864395962173675211772640736121148833769920023897459686582514496552915499935326193806521031479489514797125171422100283627053959822940978355320246588552070577562421582552246208698645723134660506801600145985111794918272227635012934490781050896938596616265642795374352605115145692962418842708463259077046765617024389811875386382950405466560838905135088009587386461963739412733452339859253357196426204445101650163832126341098595792597501190655185885358456130365162157565079993942542747560781671315154469374977054594138446940187822064228975742656666930051546639746236892722598915023992324935956967452761883789242006180465441384577743372720717983309613596085594981136706226461419199262758569800829616025621371645180894369569050727699094080161423462652559368891332531446194546068234585804403271176738533179636847394040732814106980880886935588955228071710911516929971194537441627770864685561668212280791745474734764846271575319832652973462062587121270055215313588040765934934280954679109978302412625687951019344396307534507686530565159381508357510642579221712475750709934533057906249018157231981410630666276318853542665031070977912586197819387369391681072054279491119082307444013401795411630836683573429687764842098342550365822524444911180158676376019105605173595008646261578788738957727312889236603108521408216189022899707004335250165181566217855674684504423247151395019800439346969820814591890420166984724450955342432743058261377828363834423067546191773238858890965995299884481725941213603298130655681405760704975361502487735706326929174626797040482962871752825579963517329857152876782904494481686742399654547132901051801082889201298613644614874205762980002328935234276235488941721526296282867862327481436793088398690630060926977023928211164706032836002201409432513642257201668962155144512906775243931315061774395910533282951487026757055360556234476290624199377829441845292401260343056869983711406036043942621149830989486587637582724696059654071884871597207752396478292728371626173682732980898801423618614982513433174013569762489838014219771134714006195758653969905917323071387052113835920010465705596326394655334902966291747812874370511758997441594152575093719178908792109031298458690704173219902961051257173523425362774913150374192176941042665944916188618426276143048655208543407816350218249184311964261320957471167232645619806501344780498806799152082070092035675375133125655509814400185553767958299393081619071163306903540189204378031318897134535494455426188207549664161154362715724317989482808175688269578804301322025598717271534317570609176316120707428401344357087183683391713798938476677740667720350032813857296658947963480231497231959671080876495183951411474159910989165384540269232257896443912935377668148738783291423477670587556671422403024624659301332349242887264816232335272265548539659840093801347886744490861376883974915441328952115731462770238885706870490519641327687410532298670248060701590166426461174587793965694034107084321321294899518349888543639317616388123392730293898503477517738055586212547063771875452736827680117179707296839341220901964460251104146339351855133818667125920740659714249973863075162000384606578372330182249957472259927984814870759360832992770869874037670881096790713913997284668912885010762996200542678725745992258552586437107428824999253603804017919022796089145877034096825069576924074518594347177200616853208907858930004142106730082828341429406206044119197651203405524527992604609813116762313933557970253669574950128001849298044622673314526502893533070435571054918680856142069280691641798469192540246399644797667976276922753347004653287883155127268447753130106941529883101479508803863309034866780710943083685129312609563813393182815629708157010978257091434354442520291917640033473263439250040416579512324313500373019122255788903133688925277566827313489394228602147448845477456331215164722743044786004049998658241125247488457304484119844503716749231005692743823496115051247779076606437256321015723786377217223813974170109871929174578592617087900635816210537442684253504804600565682389953569702961798382265614972138891269731283742592103114514998485342702320334651004756817755716014736707327118759153651391785484802900535863751492032012900273752776064640373153388221385065768144792269850337366920696257966976187765284859328282278696575887872121655346561623028798556158445559281595402315593682066646044868682231331270995857689436992671734131013281637385647432517949355588101412254182850121568684128090080095546691556904514593544131349264602043623726162813827073089048188740977767656672825080948581355227997939736121459733402544969521200240341460819916577104433471308027524076085518620254939957813733435965392359117513057305267052651751309692524142923404811537669721100764138743219597508665829466009680894979639804506546727028553366931013961983646491518862896528560637107306455018330755314196354472146845096728657000914930794150719350234063784113199933818736648558532365326466662299387205216437640940872226683019876389685055941494533292136642028433362486447920832900772375546437591341449566287361232799707782177935913384593543900419479226267306683789566148595100478412864916266479072149279216226103827876094075159598177480615656971889816368089928790898672774043351382395018526138992115465303431541358223302630696318333341018499424593921678719546798672418429079311908253201989927459252084567280957016348275100672380544214944643632495828582783533558283645805531331920326974785540761204535807183686503680007040844672763720873880526228123576126624338549617239823120772210738069844461833134562310769662673398707937218926003886837998692866180673643840061098185377315119115462526404320877404778530713775978476223641729825087530221972921282815259502518601496682280249270298870606060195065174337081494903983910270874719791229809644211105594715038866962664494941368162969893661821405041599635782467202754875005330148733097336057830253059777515537606676922064037989404105881725891973456567828174187469589559189304014995437714830730704309201236228742529930893794101309527512384367828038763691871812674726164960892892730859088545351881839930096617099518623518946433640353234465521513777586576129691609391738176249660750147746329998740622287229725973261641149123130856439238675778501350085758728620843875974274619293996732333811336305351737410715730974078213636971353013410559510548959690261781949302573609655928849877041426544115031804741562756124943090479084656834852664556734818802726818038888002658060913387192938659541143134783813342125574155219138633521330372871985132835034458033879254452021671600083692725381291075740341400407640113749023897827250057935226906688028689936590325513205322567578631833019591961924470170624721990202562719391868234992216959400832264092949473400164367008247097282251745660382375792432392864532871163771607189548390381162750128172520412700666329388115505761753761305784717118829186625752263027054025638980783770133518376531821097270084911307975423098686639483207420319791777658612612174991018721995845501752684179503779593046119792483606101756785723629886757534300131732623374189645821335165303684785978911776422301952771462669263409816186120549322630848587133193559076984373882648041360395541650575827246003168206231130974891032243703057597931156855909660556972570446610142996769013099856063418060499123136133847661787658952132344085012985804197089317274848829361002536486173913901320589337698821004400281334873908572093029018380794204235874715266425950899186667611436051285260665743154829828049508501276139102562607368535078464091321585377719749128291841931189462526691878687227302514038015597542912094256608900886747597199584423238691345086691198935081663613224247913169306527890050443048298138498015622192214517318211664528463858709153405160031265612069128334684358545610617254342964997258183229729413682719994074138806105298275002703623667379312770569986078724034404759133754188178461971606918299834834045212983746587974868541210121405866270226650645336587339292632835956028782195155298717561248204839844740487349847230972531720100246261943959161221432808680019073866800369607605184983763624136487763616832401395730512112859438097797792838722417298108232768601814831161446631513499663015876089173883165562945879991734984801000705181542830605032763473086545934870551690446167811870798929359025183641152762935486369053139276912760065316137424093080714663390001321805961089179312938087968433283982031265441273807942956901885791451866543635411198182503628592861815211846037813733306681302986548222809683600146169261614376230516203284776575166406549815787497645806477901954567689395345916871616174609635113367631123228379216577709486874701039916481062922381411955268476013114610430228435150880320195512668624597924695353677451581078861548391240785947476512772699835602296085692309215936067464493895152232929050548172338671355181545363533304766499861001015261983961039571920057377327181881366035006893916323419015970298435571945575072500182863351007339149436844606906739114248137349424549194718758239482460496253450376630033183298969525338692807200362615786182850467372087621685459057154851485295171022606281155466691699416057800495678307426710497643585764779780723162693594696799814747794864816316213788790480002186537960772602572774100498952613117521076676630601711263867148113116830789044888649225025882457170074990362949710496908214153176943959199849505004479667837566637573086194782743713529646978561034713754018826517429717621011615177134053912667585363022211428718784524489278793403389000635382620933283094270347084498572981504537263718026336357073290922485107610695631377876719038627122606510393780535028342872215723689572677657874695765775536727181489585739941190601125196194064906897467341252469401655029570919927196076005576753729614512386622936014034738071559230814060372781552143864927777439596809230460839267173636653297603923775401783765894698662841723678990867347670845052776293433293235837968969873298479843480451333739723959414189596096867940583807522341670099565854749352152217897460703068942880931006538660876839219630915404291987333049237909477021182068231154575219658959748060214561156166748730761574076705246259741301505601362786132078621257932053713884366202962753725986438690352931711502354283748846342666413506000655498995685891482633831939918418949048648716793413857492614295804449824320610998078438791017717090509642252484996982312928338601160104359332359140124820480402507239337911865516576473475290050068520744075668054775569105454224653490356517002292366784938400422762298587194185223919806702706513181916213744349458752243065277140427284491440841904185023216451180657091124822074597937155293837109590169627732806145067285123660418454614473446206443009043904301437908659990455677528816908547244472559127579283498949453180203724767123778141296134846699861869304058191739749173106516275365478402119108834718273222372365238238063769257863909330545602360351716338896598718508016482434310456910034724498765042157750420060127340494897690118080609666638471394431724073958299538974911096919136687709669391914968739016687068282256960562885106024190243939964417098773243476078685575869330709502104731384202488326003352130915509168109035380765175876163456903142048520916532609808709996049539524548836806837261717856136576496608324051962432655056880485244993856982449634202499231619291987380550437991269347256229611807138519162988072561364843037398021017292551739721084647476216206887447879937813423666998425976071629265282967543608109081915879980505036794845062051987892889533200186584635270584848549538991897941976236867089686033754825561813546781788691544199716214979569453474268257292310268674344128469488911245970418804424784590749377246479414925631854661960787080302586257337713752410374903482524589174399262090111728972053564039705314545536339239656168029772464521004184676292041748179921650689855323148218194461728836763987236073189939049208257415154574137639676788807372597456062170033241662370896272711669785333033669858436766385102567664271002690335377032404280092712356003966671957450949676533957885851873825767670298658563417200186738981155488026786036831472404941937964018298104299946081662239786452220220391547632720921853620186791207268916441539778630783525145347648299947293333299324595423017048558727210339455113271079419680943017185288945074565699290169087179477477125314055164164855395437919846774975100758411761877709594769052305123441282870163116353947579785325079277331909496995336996787285665345789305003062147858383760290558061183195413218964520629113318428172059554174087149224108198887628450540236509429311324690268486168765274261150852203915223435801414291035067406828961975940005741887073785623736485609903993006609921352841848059008073863031103565211016739010454844349041783008930965915479517777599066254639567327793955588738836492520674610666674407617598968432849287695811215816128550091547894989963196834802807406926959299907506159217642516039497511752203002540285449186106650601189534859462816116146203293400774886937132126198991774948758086429205109822494729895662341357569691754823847705459319453275054197712544914538560480434327024988661475318575394917139939259235209539047287973173768492980144702463246171136363875374301218584206956611836664703713528895575802851987308341979011863294300230772314971350566614120527633767751169612496547396548759622133699673818382874453296880306594055250981722277254814222439007253141327654035764555953479737969000548510250328357962351187903400434605187499113627978037290617244458353591658287564119695168651585597154690350131563442786382730964561277383387312438779658219850163552281493653523872937420293221196808361377917496638943321281141667838763873601166490582997511713512592386897254854742082950451771571088546377480094453018168798931388246345040133897658501415299503655448822157465707382514195450926846970246446963476401456340908094645368574454798718450897827937974150212515799717126267305766544514443618704563370676515342363600926115963512042202178518783722960220876897089982117156435779243293201630796958206401332745540219377371834239055567164932021488086037500878045967285234167492430227866535047255613889214557832730584023296659732409270315918667305847634326329705914151553302411332755229943357079420322993719797770074034939717494538764756764077527971070536730768452682107798027102517739087248814356172562140162900375001053663462713711700821320263681511643663338854362998302709833082085501407402926361472963559887225070812936600957546845004094450940208178124559092119383025462100968336462000912030217933841895081561566935263926771326955613438719376919661364208570394748847562901204816544174470499198832354701780854189597810154683372221135008472240861758649702370857848471432219322797042363350395124624722562865666143812570334235113733614049361731092996567248719940796140909881495972839644720280355710884725429171145810477643898851937863305394912677720517361782867004525286628406165050854051581889643057864553787960255505899233001634691477812063848488082534507446098798682786545814293312128977959627929926608301148319531064805431811054536753373686595210807238426111279889595723559157831470082031592628257768600953866454263966565051825467777431543196873564314716190794864873951684303547577772923352015873766186656474301968745580003627937291594030227649186757592165318984074187846093026786789701415866527200041914784388259893353831971662974474156717513100110134289649469474437789188779294349037312057740498832417538874665173479758908826043781529875534977616103166350425968058819984854905007282324012854422783287225328023552027685267483501201287790862172047879835923753540868171451970278964732099688351628943227143959893219930041655963481097932373520316776060356862108816154469451327057142375749575758858109385689905542515111673504542978904452478034217276875722604533115173875544746505430608530546822543985241468079560307809272989548718634015741039244214443942366697592641260708374209709717583322199204594266477544737010743549993439612813358734105363843767247747296450546299053662965354019370851054274954095725227303887733840720399183886993644499632025886731333925699577173345986896415221427821943118568167402126266586968388992622579597684132702947835245533879463896261030138581381703251816843219039370180701585286092227005113922564883913272210805492301875860899177230111534095386163581004295818211286462121130729785955968469229003784356996572311085021487553886441080003427123049861822063620837553392390121706913939363359063127060708719788718323980732986816060551644621703179471166853208709584328653392208252524425703750852824065122777533457305836646439250920938118369250624951294240756316638479947413896488071689117559616605740784402303710040499486142646358239537963735215946893814548602578000378576115371831148614817992374011658319892747294182517952992442336337912433803757897319934523223742299678518775193419738403743999558304562417470362534163064966137777772279127738374469881020573499590121334495926954179780696489135287378456708918959556677522230687071667002309999162215443136426694042458211620628245850652075290730587384256823596733172822454539906983689889917257020443072075995025469296619473534589065677733197011463825902677288032806357743353929031050345469172606992796093541533898504929566663119246059063495130674215530660457798897948249354634704305509969714708494255883297404006229387111385953663725543589583342065892009542241468999804472247689833463168041556606697952142434019451822299660420113470286044780322064613172654226379898467293222728480148711480819590231976656782054242644656646196295387755883039959290312458356341110319824964529254535550440547825904824608234772094467595388962463230474599164454901561124139655098672714063266586321359603677967896191426940982314161702879041700680188970681194801046034346604275453323470848361028225717091707478867884667109493153664627792603487133068430537343919474670837533254597204445594041172850674643269533741709694245885622118757193140595872799417608585406385593145359099095530321631260658014131972830157824239828222182526696507632134829941256650970624547854452678958860319114271253865481372562198377703316476031763243593850624372318472260446941083595996582881735776851322599638402897666523885775813626403980410004719297748557330286010870800540234842815724973227997481953255865798189518404586142672999254406848066769183170010696469721052913429155567773479526131960176278464864474921271689739943945304402185809557543091004331058803021689072440867483474594527625134954862137817117207607367474905845027923600115525847647443549362091491905288972969564094739073167797394744708896661091265679470627541826349465729404547947603834611107427959742813143553614558841550965275458919976123259401485899799802848415250235836189478943383002049949017677983548426969871446156640003568062417287274236086465567466095053520727404570791227110670968443049659196407042331600690761368868073886092478067355554137661814169999816962533995619489403823990056716157940140369317884878114064924788884687301740571099101320842840586951097555067910441995734616592286036281089587007836632873187992799224467064356817234095524824991620212516072651377830267156376231350845353639085790288772745419463745106820396591130900668215355655635363794504752560785131620335669980707455402463806016350165346792661170937583836078131985234278100220750576783954907570859404717838784330617817494960592668318835897399120469998455698757212736217575592344344974160775932935274548102526554273981189426339074784179643200466226380474515941573734323590075439062703687610807455862921809187185208452876134395962595653697056722133655063159360290897423854355236265930495558196745021385916828290881847871222572705192121897909942888605122789220171722193237913674487451972899155250421169111695984298570523720267368848981753027195674963872694579954341013915710803135483003799098647986453846328675105057560339070161316711507530610863991692961894316533819270657206450964574139973394232408158090749377059582902469250472589997048185589937830960247282227215289448741550459306814648746124167869834869335142724644767320100044072472193724131278630498750055496597975272505297521163365196554927966721321515153641476833869851815405112766099659902426127351648023093834044091173942968527216596792028669257378864691490904102407053907453859956708037973341340775393045578904253448422312332419618784335034185050403342765440578140614269008292722219453181238241381907656285134484527664378088922999710093804649728271239633454083167083602152436157724412761403137185903498042132900753229166005384456031100688650657429791102537237272998087302243357875371478340125299582401130344702350334456642506696442620471228295317708070443667853692667486723383143243500448224070016787200990490363089215720054732379102392207514116142036575412211925432874298179904106342127904471056360580171407028857305032979584813524618648563465028843549392734758172849869007374818775023854289952208287354089524924156411792285861921159486857968268191017167767391198910613751559543405077422964637776040210567540053510993708108143646784940020532746840849422127166978115848450226325132335256355480569410557763365209170931976940106273188108541411602044416657933396066132218080824866848804895725599993621130748843463842354874122869953550003403977898302535532203412614019794470276137756027748952263959292745334504224953845861989320529738041352838405850089344558075230920866801675154751702797994526771728579887077101180723424898725426494211766179485798483823205957260253031416230229109312665120335064613386831845305389796461410511152530592972240016738408825874740888464064377794507121670625408615293246176218650069780442771056763038471668988421640551201229277611981536720643873781169951525674069084223137621123789498874277195275491024995348612881574974126589684229213734284453084820744282049278770278183491195759398294823542350539040068139551130953027432271752466717809118687974189252949545441319383658514312357807195591935263366354457073149277972835485415995328061931920419572002737175767888637531838268575753692657628235574030110862862618118192985817409207752027810388339735514611400429200308950520403890603497951798071153867492357084934843531980439628027330101047099612670172464144940213693880503809334591363877116589768004819622856075029069053370918297258199962970164388356683984705417217792188255993162769942940448645760715533187399158170441757232093793420918992302532395597545263947361012552027816498118974912576958542940110489623728435678499303227285589575891336874163780269850050020926497414943888507401522365060137107146616140794955960791842124940744070026515008740795797151601324895835330704254255039601891794625433507237052524082376696036710786153718540424518434671616482403848850516525638333568542696986970052603363675249199879084996618439573347609442658560615686315706233488701805557610148330421932245373099255338667439764478212920160204545662713815143715255716532584287217743975391050015883317505371605554205746760857792364682196964315159333423533028114795327551645338387881964981645525050942518542168090607270667140190338272998922589170333067471964716551545711056973624943063663311216466197764724005836991684558400961860370113417696729192847588399388151177730317506925802802789249589635891607242171615885409431600435114838859623501178031820977944339595827224502032492801035967909209432223746288889532317377211822841897845632317224280583671019414282447478932396248234406237526387190589824179467206588032471420108275066236148568971210425800350551574929306041425947051206183138526472835834546184270212429788894501945362867062578811318137878635004430806461618560543752920072622239849370704640905674839977440869822355671584500746826969305770655308398594030786755398934694002700248633247722203334995418166819537497963367140065188227991244745504812098179350126437397539634749479236288198519537273821464962812673490142938345956943478890328155019723159622762825938029911936037780729289870699706724758061975394964376079700418890730218509517976538651548494350459248643742431434532605142413270766877928317081792121367067950595920986019286761064554132337520679914840904208874594890994375832055028978139296080685764351295331528311041545244331336643186126297889555903018713070011546452691272218698686552918512356278939837870008695670612654498015590445598664567169643420429368551299027584472551671115600997170897780729873694527808673063278223829730847082330256634678246524219819081075790096777576655047824057430806077625898627335430196238506832950386718917467876084343095274515582356214709127476328959292390227805427596733475825626603985974554500713448320109348925283391018846539368478132847460170285282793862057484589992533090622450153609023887362556463764465246521834340102404560248894664947798230408733480593550439580837176692621583551558529609248196275173748778295603275401402301601501741834664365388456346673977573299199562882333652746695140174287557383674168951535612412735467022662151014315525529928427221644884602679957949223429520438210512497914145209311347742404282019162320197969265570209809863902620765936164683133657853888313575482353041517609880420485635735920531868592663150407230286664646376974449070208850343306240765063800484534937059236827267824186835733160779381479080473217266305150302645893296431941967826526958884853375643589381840739107772649265582092920819037542970127939042262485757259674304981184163172584205935544523462298180348959938156931739047936233282628609056071113991681942833186236411638850313046333014799560544151595739168414484375543984869158809473135386108683296972498925430933447705881268699719283986542404257842817871391280122213413569308419235378387410195081536692520528927808398819017720437025325635896742932540966526474610770996309972964520901720527222408496949370789983299468205450214069967938243657136237196693487847189706043361872607093434566763407412864521072025716378691397258933570242234518950339654215157109840674557904946261242062760969049769560006661229086356642440109764274233686536345473129362901375544190381083078059223226943286391511133673164451438224988878562996655516886746981925340754436163666130800406626032906453371663016917906779327035092324166034821000504310468882337285053610873827333825377340560096698950535190411762274255386287377788011833600231915112525869408595915089526199464398376608539876782419084570065927645431416541326124962121074489720555554524029010706806555775602867890820477564130528670688374401987725011601567091006329992037622671492955365951548989899741183721517262950231089778280722384877260039663187961952568043921857658322446927234472950006965045707934969781886544105012639972779478201354917132315751130816018411008400955866291708384027605252098210836544720331230798640982308700009176378657641494745796323308399571084002104324722695895710981572981630645852469070037626820439203065505590678317141249519115246081263785521323993178860007449487824790227950354293263583233177727350640942781018653285052203866501562449592736766665680378813507963710673087054869564394811903570401152978915318634256772073808944222852982455282438645146214284476610077025850046401155710193667969611104796449297536269146441640612242790242623453970815722334679227329636575916768564815751791935658992513814238385616140076656602986245595361633870997962571680023318114863683734981973304436045555858437353284541234825526090485697678080686247663984597619924587822017565113836817097146373977189654876870344378475086248522610438903069140975022632221264977878661174408964142995358437205350418250594987682862533603780426464705261624614124869034381689962745731362141812990581983226182371887368741165606477868324291292459712532796742606535344192608186523624651687783377769798986470544628304805174678674915200111588661133970144452388441063846253748761497005713098121236669806227396091348486127471966019524058457834658314506234371277911799032057936997821550488885445125124657282880476492794039696589917026525472118732643100355228155616070421986078170207203220796359101828923588981535646991581593699037489822801841695782970993708084199700568606781345027079339280792768698832841292337804467632081528472032693341519754084042700475752788699907927580842028202321821721323777369605840843494454953132655369265856442245714247564231670581447868962537085780651014157819421270827936192746113360273513538674812467710267199976734025307817372331876770351378868382045424673805204338072456454754938966495576520899021439701182459607844245783619680416733199338637112432758320501968511132001200357035497539864687851005390579715975296350179187628253741131485945535822295204973195915096992797066098121977042515276873397542035088943224754122961868256115082180493244411092608889078752189246660505811305133039061711631680625410829431034338932893711741024009006579233456932778269523061201767954401030790981290627540949614349243877848368550619951775298467521138531272794600023212601804383080707774559107352871071080205658080595262343716190295806292994103508429710651397542758928911593174538504810848125947688276925243074819860303597120547359346990083486097631562523083943326561439712986489697034369065586913126952907518110320768111840707169141902961809111141901718082154898349936536424189938385520577610511386370123593152303148721866571500655869009807830423036975553241539166469600869063546525164960026085473892945380771640964848186585467112967969097720134343126022418678016432215229345565507469642193511756506231635817320511445542740884170716291625689619247299595991054469254959561987537108175647638234079068034418716553139552960646687900644910968992056702971699895806305075110358815698088971889247288401291418544776274651128537467622283416570725917733612510003564437924217658137615920941317901586793814798107641384950256176382548728722482866833080500635369818197115038302450347209283957078224119735683213037826650439856121158758872037713545152062471980154698948343912767708476843949532803059068728025751929406390958134208373402642896347947057569119952030558265791879299962307307455854863886448027911377583437023912623355814838194667902517528442204369015892008763510798256813522982074384504451922659976741418933863981917169082650203616422792658480450315402938108860191949492165135474908650635956612189287472039100009542549510479682459610848712725172104406753709034849250072001267575590672642228271363130178090198340125644162343643706284915554383236816621427317703085005167334459599745977534945185260429847113417307159836779613408495265737456629396587798801506442348374620269534566861272601688888784714481895066039503441510906123171519712579653807034616891390982905261938055737804065925545291422388656939264495902824664226240459084286572789290478259998188521755801307431183369537459314063159260984070959316340908594598865666490010694710459902125598634012321446780373994096581767118576666401978510979183169360197010470794591890296977274944871342967458070830455954682303735126106286371296956968825555825083705201191047012159935429402999886905716426641172188688951811824869370438906069251560838610547450860403175346496333234907393744117769446287070522052603276129831023485163675399600984871195930571271580778527347254975623416687434155861504146163091890520670391024549129629310053581047569407789494305510760449986664672139525581356919974512076320836761562746642081635273061540539344125362578559686922777186735129467839084810301218913030296165267561224459509896173913689119552663261006446935484066453724886652690870921161876691397958759174573297774969255127030773672588205620017832884053266689295143805473063319505800830606183043118996757892294028026039575773271505136392570966480252581984587545030706548055313107793463680389158310437685887838797456722516427093476620666242814122424193489379580663419484121666530820281002810775549260953153324995637949529948399880622093730425608413892380656416241168104881448939371334428901514991265682000871869132214151347917993753106005988890035143936444031351335554687830706687513815309604000080961890100028759185775968217366781061924352419984835151883679177609759893600673739509729351300672045190157958816663936049212645054191050270208609191209488703915571309928239982698852733545943275755203288630572853936376364370898121427214339894689097459444371823557130028875504013450486333047074711698760400093489799512888927340787793712676955414679060910046587802307318297068440826053052316128802794733163607745011155299293597169371527783079229515141088466783680247171737039866559566726012471879833092434168705395371523409744734826853762409774680770807539366572314405542688918205987120864070407606183107281631546876676212432291011468759719418053088734900713713647724666057537394836692957498054725773827966933618228346360267773362438785216975402955047761200534191787922292512342165272518139128552076040720336393615220195724369462506672845852035496413063469129724862095785641708919584636012248720999526034492210314989771533122950385903191885055713319216164857452667714368456196817392585849177337585987280043080904994042386887031568503861871353107820129449161603203462005742245496672269615905691069031443419283196637023232319164241734331051944157696795061663526606908281894322267678695807646905118499153915137428556872003210908496827453219926610758621055981031734225174026517896682314819090999650386665042267169673107354945525731975253677366285334427530668858754506708403735181699195317245094949164636431560852044159405472467429589395237759877518729186823160598290534334434214801507984743086366650093416405055642408894166976651350004854313092607918992951144733070657531468268548185675151845992579913925375571449586961197956492040165106055579679979405291848630689825950396915318868522246839534498236741760700330584898703884600644298431415962684149970841090964987779686369797195300830992604578604334609742552554381808827399980726164410771916105482525225070946240637747369531235581052937834232964247515326955298614012461042901094523451232892626001273387531872359893478893290460202991101839650257759637764510704317636302158432324297942288849331639465966950055523549590871598240178153032701308667672887337555611232667625924722636106672046769272223267983321892896062966574623925333088803645859392209216718919709469969460936717236175971062360310736118534611235348022105533881246314020856857860780026400904370597770682229194693796065395929318014701801219672479056660344320919937250971025173268910468209320668730496851066034781118002449967495471129419193695439062898618831222165287985024413273881001816703880892952663909231070823887697182444399238424205197112368496727741401923453908643117512997099081226398582601486464615653857619940789069023281429852959395238932146462328597531997896128498999811013823488493733684046733417860026114909894623990516886828169468535360177952587122389681577179076641895135192223677474534195312538025391476563586018497153106683618047324158119812677979009310669878252449729009265563971576907500735427669923121539748533317839070119383397511029465269208350303869951156992665771269708218676200434380673354732845075724744543412619364795302360131128387274939275443403340211052484124253648789748620530015928639643452110344470646837333885586332082305872479631949832208289898376785407175809458234614207325005437452908453920341669812158414253939355967194344128692870227685238985080016639164075857682669810148741136425956156599880248784145337609268139361977505227109560144252738901855826892750432262846583999909193725677585338635268576779660745392641452004189969426113946599209710352501312975276952571503799754316057840730271510994735577886382273418716930200210958820221276198519933889991491351112401129713506163987348316693501458369896716377371606299520087483085651912282437468362988358002868601373107054471969766038075925369879998993676490158033273650226367715219594186460057139391413424596586251456260750180044777565752493056976882438905453478715815117055408342885437133506164064356851891183014835866223081848571965908776257501117511707316128242826945958739618961543335720239683503670318940989041125673733611228105800566537739945732669945109926796282284398340585242348885391195534087906387727591844582138520448416937819800459225770694024002287172545075157987825728792111689972629569996374353757728242809808015712283380925663785886276028953495237860504291438568297959216711123010033830385501449595937544205439738129499205834290019521931848876258080275866784005733760560672850881283503760613652412752142857387788497433092266032738591008009295143896985562337947976452789897845340190231807689764286872978996957356168460714572893796727781816101437774399835370559924745885882667316395860567229362162190736477407886936848275441687248827764875725090769859755345119595188180314410537264307683861345856374149101084609021586723670197987889554503063020584243586436990256401285944638248054566527423813233272471945632083517041901039427758642963902399016508130250685649911017207960627575241158624743346746757790161832857674748805309916399003607453690016811045856494021632138052198192318281711873231510021434976882282342492970987947367660651975562374846581270369100849181519700593408678059295266775532034408940555494685301799520217300197648435605223548891522463752430909398908508192970618983431971818690177021821726045083395846722027780396461265106144194551328509606617549890003425094273727287758699591880276325572221340297479997910288476043425881353705228439313302546381215920115236858579256889696349296557677944287484542552639849488676352350686069110391662129076992305171753498129555242969152368920001030033416497919413375186786537887874296574582567965344117199853933445823215092208018543427892573729406894015968315040784930915379754595101050136091314389316645519991967554708211097550492035884424707983610095097837486288144707723597825353493367314670949230595576731734287169390064249157725642389337725241067001390401787270193453706738273322440179031808056288689899732585255166757548806854364963884133144446649687744412620495628604943059295235296777911352994467311239874468176433828642164639027707902142555195808417517501895949918105422543778967103103666378134624108217142482169676611756336548898025857648467387932817944611233109395689340428251967552740735568219760050817142307933366831643529981536166055597720618084149179633405599944435034203590267992248906088174658113341279624685811219781983213779741475286302238938905378076086245543482613458824129624552343900617878077645453686128885446778921199813835971249244846207142377497278713248646579016559190775446225437317142493633636490784967219844816493468827665502378830722839073060752455365661236528191534900618761029584848460744592998759542436029790428383109128135492407227790642973012052521723697954337685017957233117201056679218379691543215095508302866345701009476879953312959622251900152289463554759574432664777744610722735659410075108048871753632821874936451450603682826705696449038605139806976535249156736099713846626255198322494533538499428576480802071595671364387234915251460225253181202616761353688094136230435602265693608852911499966969368774185359401038374772759708024411983860751495387659020648344829112045704957117212261993141841450389468163020280374792058339363442586348762513851530063311695362156514251685611793652123190302264773026901161205335962395199131062456814478276629150087088250817020051948727999235563944855137256683746487256485221902277166133801967933102240634946568212758359932028739185588276975355590906662723960253754178450834129988229660021051584402095691419647394283991393177404687043724512358004829443453765631794676941558968553789260986189894304206545674945791828737196888953682801389501649783226453588597424944738987770724127652034243954732736050359558698442085465748499624712403365692354428021461452019635830959037884670858475909185086217973191921054189771354052065077337299830788406598097866408195612048797010259675472793601130972418154554965004127274240211587036911925943642775083762687630267909226675339620542131864994472913763545125168054387282107494741701874311299221558046967556695493360213271544879267549837533308420301430122370869099772746866719455145878694658295800238521369716835187526152428197452523944349208539896962113007051775134831606858643604214522352164279772673983426185027846358404684967399485873439377073317125009480266004300641819672408562452892047314996590485082635420637065085882281159342870605945706673184616389603036789243630366827369501881380821666503891712672090433861925131917879023989347911952948117540272234887746666334583129824690342880458204661663440857298430531031024252526822763529271882468008167984863098099361958407065130183673110061915547015641079722501038110778970762594356009900889455660636265959286737737473172147063324950437629188188919033699235950530738703624459230027269413779182286207060868689189180353264208425069874416982541054275124394422126450760028937185443584062135244094088323597724413102996517381125036656066840334330145205887364620817852239572012044227730545338483822355739690511686828983361393916854764005256565471380620991461804452538070544263027319055347049121676185639770556253868786503867160345332741424818907107034384131335426561279245010037922516793800949107412411468688177012023853457616843032562115923005438611080897861035715889876540027396004203975533534627785903512819089086265111397768117092785780674526883513941375651381256456288867046261493242307292836529585338458011468133750273916969237322018791411505850749629807692783141861437869911167902381952790211788120916283998811375896179384051307801747003624666689225855264748432531821584966941409970087119724242980779885791723948673605922621147817831228682367666628273826171699326152403763084308982010556067530269093260862177974634895621030105001797890333191989605335049614552229848527668887640727622752157070448844304276197802271412720141108202984106303710682697576582550087654296248736220411824439196520550774376008534497020439429589722807226396896579278375434066571142204931423596589925983631063325264155359326665637633746576324689644234273874939137389212552104087119780845807459985647550820009126813711201472299023042918543959778164589007866475831421303729115955066362133562855876705404122463735921029895776956869783291351164973935340328914579974511814349641329119969736771469391950118544315158681276814083415749189690122842457509760327283448568561315403811226917001400875692752519209590763449828021172172972690110213660565101963635304568713974997008875977357796315013635741099565686100092552806512509533636912455568170152145219194532018420199239582464934889891367614226227730102627232576485646543069692838468515259068400316156571405540009548993968536609812089274111912862514822399683881732938225730681003285591187739196683818517673927680596532717050230125536371864523938503760751721560637124676053841932472779460189295641619499006155214467758694637227091237904107374650500813703510333759272355979574454149401549507719734289719818178188936435552958960895372822290642921140353471568350125694099583452170348290460972985086277792206240151542554460902243607365308618555906061324291272335309296732398005131255457843867195174466368628503476443698711451679312884919441484375816965697248579953404083722778025333140254649585698508207558113664381012098078906184028289024148997393048590698903607853488803014653007789329047155415358742021537823617262289084636754275453860067551375478400681510853385842843321224704360213615424958139589688722216484695842787440902222522083745563888173372075155260088985682900434858583900421530649664096852952694740583567344991011091504812832095763595819940464872534653845093820739749425765606791893521237958793439589844871984312854809114924884838138797155024383599628101088827451786759704305433685746072457090662820899040971559047581254501053421939689439918255150463073202315933780470269528069731628539313398585169011797735598717388347584136747235363288759851515994565551529587844366124010556768405230738505797754069357034014072959645570722452067892329337637735241273757562174349015487271752715840225188274532231831703636773772310811851336016333090592585390363413712574653181416780528037392326153058744111164135994979007782007711400707166030352213482873655491501939695758559521902690647225330759825150129472739425113005767452878370279700905305502504714139820631923681641441738678061100800820752864590470304762247994934616358047073444576266544357958741808388091542372221744576241924274342553700178004674145111751669470109047717624957506041598845143863132606848848284318877483552260363185571189482337639603940388714754485021976314494645878414207707369751018393835225249152376772656010822071554801000955555552041745760798297333959574310346024756770260717895827293773157157651833828210905359690472877276935218052869966857419475780767498721985707786216742493792680971422094960801094472300381634710539447011649638071952195760402579252326299092883847015647128174818788834132841905358459773496305345644804463338933381178198901420763966212889538298468564622257138723868130248315564214347772770713549811636900543227498398080119420850791321847732864495287047747320871276207740049447780898274538658457526410724641057813545867560628036143458729819629189675121075231291218783689858707298856997364918037870741315731284234521859641355114582875091126965335515193125707093966377193073764366374860445932646228348619610928071760585429601962794189276199142260688320896844015537650066539439809326695290498123157629248695772984543248415216040723266722161590394374492272543663716313366476557869114847158949839867156858812977493581109739271680028024408959410568447396403629821966895209233430422461230297715038813328962657884484718148265985907889995436060699650145711424081517851045796835659667528408846096725735886710978304791566117371386554771312622274544973430730641647753923525814542473130703419913385231285509412703236629341201106510554708317609450124485538642896508655577948570406633774228914812987781228710268748209838197144288168730529747236712502430730717345193399494536900550293268531954666435587779076570159499567075969326639635805615545192200876021664808304742763809165839229884625038771397771972247342943658380734076616173086782807649037863902724747797377352784286300337456275449748384678680014765445226974445113851374680873639807692944804228870838910349333636735053259260710503018933454230161754278652200206096559156182153217512851069148856530815659123731717712037499283087211785977254431504658902777143601264592676287037131909554072170827604193022386646617859163078907567633785984391666706183268581794285554034300398474312184611247906623285336056847333700171287361535309375459047358227784017151808640166091468098910008724085137331612646756776428228705367231807904575755280599801792641470315995617424997552496756521832292389394451234241621001379091503898736172227035818045533576158845843361662179359040243429548472888055521939655715397377493972459660352538005095600211036175388573811986625352535135932989009371378371489313160202124349120572149474301648115145893948779842743560212706267811123003969104599046620027996491279994007360387154937559867715292748040009156312680382124716380958178086272917192387226206815481465868521341921094169672614427188991536438016454220478218751129788549132980616963963578891087476796396623483163690865649014527892828102666437497328806649193273742568177635874186135269111015478931790574374669560767952457838288758615175154951720577286342575359654047752007840481119525347055535780846558534753531333212010585558192752550013126445068597451045406394521225632998723602453085855858573215300410942578001358653228043154211424563684650284529800731540613639099341206788040364418509398854934841261806091411702912048127680334967214306664231475025619226411431493718281846605416230389106438440320747389876173942693706986724362871905542732914807073323717220415426169664287147209379106085758658468521393522130757314573209900485848403173087015462561931090112808198627914041068544562586493572943706359482022131315537948840265165507678866345116615778386182042934908510114845717086448992202113673825338750280665707375409088774624861155773838900494290984770184934649318927535112377859603299184871804594771802077327874837356928563092578972135349087671487731220400601135414373407173761193538938560128540136745243978772049396997620202095597273053014015760426232531964188569365101737212721085210170776085678166604865127604531443289613585605860560347388178886521183011590758649200381815744279560503800946878290565233151528964142966099869394284334689757508233165975661672677827341883158015642630646866139011903355483988171158829326982992094270142715940676151026838644970418421507349578284684568562947761345463836771160950693519428820079413312429291452114759319292763802405295997345384264770128647322976459846035392264140529276394228606512869018522569937814811043519196427332248512818725950724247494906534402779721367371531089603486427365972747385082557660391782224038599805908791299156081626186452628215997412078636667998399683667300775315316774871800716988489716418295283545098675814131543602501876457715533493837881931269231253959218364330486545345158374882070043273950790523536792011046324352251922907318832831798092536713327016126799933325310628240078767684345858759877430530442618285659518442730946770507915430312602207470636982534619629186283325391600799827401699220134453091722201488871299573724423852074959764356200125499649514602599563981100564383354676192498514986287947225079338817488621850016481381886220367972489985982047626173580740947793278820870754390073970016327947891678540993877428651810490261838495733973134828807938523145464663892581112014051630078767340124336234350761133795693432575039715186927497366180363161469372072311495859692301731726317292386006551964625014705581793362065608880682465938163802491827795074824915655778966791745713948262952441725012609429112947375649374584387650203442811617617468378551903107258456110989611486053765958723964440298965886443679124439202531047864103960499220590780793502335181373790649516401491845844440425142267083654052371908123819301683516102213995207321350954421465973397730099709788353616197948048174251720520817507644129183253883459546698644802262818495696694392640197750117346300696496170389545779503852867949818406232113569387304207305434198369964972825502130934676416528910356126583047778100356035754572670711868825155574243314841746661786909143230953511404518944214148780051481256306731748964063335370257202349861673383198232912228687445509432399823923613590941449232613365345179119714696000190335437084045016780009404964152195292702998988348872547002717609891829229673471719575935124186769967677527985279944867115837060293562263802064238588861987854885398515019782514993180386517643500785960930937517028244689646562962259878908666960656839387779486890522032834213686932904178690448589314597946279589632810075451902022311414224861499564024112080361028160549751777884063057853768101661610925089950171950860962367568490210736184444282445582505115642351864105255253939660765815859680736702485246479665592615502676863359272192754876172238332368020325378238126342704251253150899851186783660167480265885408493869551055369153873294234574500612294885269227869875006977827909379930796592864494741172865951475911536870873836068536600109445423530744933442070263462878331748358577178448835693348418287375133494755150381994716228225912932953802585504490454980128393730776285449441651248525478016166030482811064943533146392888973414771431198240953504259436230035717749368194457159242298580978863792975525336284210404401378346470618184851721524260405360110618457817445482344990424381462002454329441374053981567533260064999885200603756377677144196362181961202933189047726563261685822508369824399286375952833867277253340960814798004288916587166063753431296439379108409449669372872352848889300299415564421878980054427775191135917068829289762345990216284707858978293222664919029198899403056674415449005814329672395288662104102174017111784648814991149793064866693374255558829991910165515212002345223401253608452570235591836590093649297315356693104625866003330445305421163555898358816941420231124131768183703352209371204342702278597937584823069957315777431856675430504444654694572885003847682367794686680688076022057835592565541250493099556176999572962861155067861160376866105587542945032828957463713132819725107373957058861853634845599857590827193820762712012967485794229872453864365367312592193988270890918504699794560825694698082678032246374838417270209881153863907899578726854093829908270062388457074258983321678509388489656809064868305439208616966827257638494663659337599668116263979987358938912594192310205271106511167967962236709376082279438231940952840835121608063813501620700143637723688964729490047027823836482282328858709975146788102604453466138866448330136398162578159542004178105495304023488392362648258874238780722411785888074391320422869677158041759044154250999594481292499835654178686198011089570612877602569882338866714435277999519928004332764872666159113835887091326271737916368982589339454193514285021299910442240182084393585207906793031484747200182834216178907286134581082961261875011436404089684031036530826562915567569388072684864005627512126989941199640169306103558456049443095657041110373145982910913290581546576849082274470065464004106257821717636590250867324353966325600793946889499063540105364026267883829922946817419826051009997334760000256188997413053558191570620704977496052206700891003395948937518732024935982935279078395016762324522903205927458243725706026417974219562725019148606661887281041439258172671804970373862416791728716380434391297454696354520805917820132244046911651268325478603557363247145566617235675490184529637962911237500579875623422496568548903420166900263273334358374036814842055700770957580042379527467013321335149451539737820657097212823310804303949897401164912221070574412298441020233264402113678738088202848736060870966467666956504432375709819909335225028473506817671775280401125359835162089265622729519549753532869830354399414126525430556016934448306731639212324674386174177047266023154611275448711614263212019457374138689101958848516153876074011854208675998453892371623249366173837010014902313853680746616796345179330451395539606951284193626500896611410078071268026524084300929485994340822383864531772476257431123941811715860483222001758940752533657500974929083184330578681818126027527278913380369950563552758340679923907330640651518095872395470534365843316823147432896171278987660665065080069839050474679260314149030970251528060155892140404535584549178722763078997164677530004201656344173814613919587924966865161922503066445749764231620863517152449804219714472755742695475661039821497930122948170112782515032729092191505385407347347902917026015210995408581519370696228722175867344540406045584331754731955851966996331346053743840820230963088114264993746896527383684294583764885748093422877745158401809356518180082830126333429550725756086054821680822918108737242632631779486161199851648501700430687670425928464574940489393335042682740583697575914466527792313731464694994917953265331783083493306952726876433808931703272041822252853260179240892317482249886310461181452256656946818613739253690839054041371682797619749238607179457237914498073193756876009657118761588153620780792502291677943830789183474998840299262952810170097788100809526627410481934565860968283350372687923877580650986465280161268080100178861863087083116481160400749999172195035645083952009209252006063134206396534019955886109349208456877514434936478277915831286653309726435012358077222698559002346245622003076266471245758961776330555940325597598891790203606676071706690962389489103425373982978423198101014490829347780393879146016796009891181309117836149120798308547613051500369475721733817482766082155131865696316065733033634668298118472503008173571247588977336335193659527264655123499162461932618326195865857182634636128063635508772811681205782081602104946794872151417767855585002803116604380769965754635274716642236151396964416507274365028162510307540985487949049239359587712686196198566137608341480453093780406160096609766868916501268056164847053503979273954519373273753597552281466486881551845109478408363615143831396943536655255532783591156591577849172730957351434449958576753496753299038923050207278362499152534406890949378647320103758456756567202198176270595710886837794512616138734192236280564072559781358027949817563261129534502915991397477408628472001898909817593731708636834762568016171146106077764100086648349553233156325571417597869277166319814594733829059744196594736181024017563394445600169943333023095742040052783407085294996721604751448956246669366772633462459397276836591296633635111145359913715710298221284463283275687560272208922517252913328769179121667299978440016719380882890905471391805406020912162998046549225937392303391083094283137151631046470448608451045334860981711986248968204486291797488011926006248057931673950151606807341910357567476445380910034024860319840594149790382864402708346734006845632894642643038796612790243268710021131211307179467611104831956057979640229576581049144575455425523584048482068695861885818243397771344050658610372442298140365373594202584096656695492386100539424876974234573944909512015990165784330892569414727473624522588363829443623446516415598005667353223990937452566011599272325312234862555417325463455154243176056636960764439606128209228816195352687134972720235077278946499744580205414277665977898386633564154677630224331252827482225363267542034302967771695528221578379896129537749381119668764595441008530191401814617300050482221197424858347015912169739532375556834303619843455055453142782620738215827169124711745407472330928670700405039015536330173728857647394395692374630495665810453937962603666656328697628042306174407821688111962052238931689660916710059607692775532058057509727511720072137317202710659124932425860843601133121900347891904962671559278698900718031053184895572373048333616682898194242723022990092969697749685474262608372007329546544931364567608825758956013796919406653068066638157036863089392688486377464219117604797806116988686355244819387404860401549022237427013139457384954116640636471954416810602076014224086573064699166715509166441700769340859494908645245427650891722401640671238532782447326690674800378442131414203577692020380632182013391216434383058782925227065936607563295306216111190530961330926807957936275724933254464747079654082352090592888104765940470589885618235309711529578942650037132476602691107686167411082116886912081757268440811565260072288451245929365617939268839993121460183334929676632175954061868153250103323341109030779201862467805908880889301919448908105271737072710945892096549133548896980296436169676406624312797794559157683104270916762276849530800473337378526274181907663664840542922067563403088492231282929805477502457660584246500909123559046227371016606524211232487818687520116708606285905984566203787793971097707305398215892981313075023652255587402707699275995783509808891821696835009229649246794828722280798885378692982899476512412457759529744413600596523981291858431502855594019726587417342110230442620067994881672661359404321074514698628952678329585777375165628936178597470927996103296167473465452934940523638676121268068198716314397196694849943281317519979518941325864278201526225675015888528591932768663453186667531644130280078907474885359349967028364091555828246213653366088579129594342493104129733821948445010553673232672552360810560319716516542772883355682935533100555411355913405241448965214544135549478958353915871211841353536755626362857983468250020468827667782701968211386436827639074791945336327883719896359266440575313030175375712093583968102875033191164187945045235174042203158485613795323946116003732061944592386708108473062061125683231181558411834273674947250009041389637179912163772042280204332636381067864640470676644434063689612066404096492652423618864188688737201566018066134066591030738563603676563558345436679710742616720825944384150294114584313921762167073727291369223841005930376190550863652852903476519984839881421477849671197367023074592235455132482660685361010441458353874924027680145465006862487665941989933835307465599458781835103400385070586709799373081042566038953374897112002542316074515034503337131265437805493157967230229819204756267337755987266763775684529282720515042265760384317348700861422950062181159626892148816072901522796144468386804593810949822474788740412703954564000788442022259631199862887610201278609045464065400536137713668757335907795979060738078696046728125224475298719211841074880256391066473176334554245912270243032127948065927412962844010321229507785534257697073951293337003374173284601567863044346946725800898666413476010898744304230182490371119132213030816963862972149507807369586015589058080430868540135553771493763517601382907385631988372639486742912869254667237177674108599469559452820281409433554184450011491522813605365310530151052034929591913737748464036491514218604097602688906411101228623214041129079805776144334160791520677798391621541486240441596880660154586316255196963889712710253278355846503223077860422768973346401964504491253060430355917057876036181736316578344030872457827394731872684052672728548540937120197618128842983217550382419664240109416783996284293260498606850001085155157113607820577672465276472074811243963644025705787242767545291434068473530841414299088663685476096572174792758398297255077270743479573712914735883527575237418780422943976851279676076517738425287710214121444401429620201358705157037062572662832390859573993066850321227636422599592892434353830331935095478864568241636651703559321035699376348765317302266063645118156522243260856455373049036344918864483019336146364108451168402028275113935592808008545412182538827555105941218739570270760224911373471431723945746445501558023530381547271507673873377044389026632772381192521108763760311334165464845850750989217355442383840371121692192077808016122128304459956768859175700625684082317553467075708481774656770168099040776406793465084939612794101467074044711055907670534440756132348496682181468368129464222479180711486618788440955146937804653993627452668678825387917776627897218303086866615714198452678827535066573913566271228498006034782410707326352644758514253222166467591986968430235914549645044660446732527101406478899358936260877493628799841068982020433374911866702840407488631966369794693074747708567113171384146649948926749575737133453859161786643901269801957135211919782586967705677691043731868831039608524238927733155629022648166384457155192209445226498145343207890655001030340252335375653471647327516383027333775339032928892151465167785292035568890202293327630948800347590038176304714196512678257713316571101696128632499257691752358697095859241485395089459356360010589503433586202586083195225480505672236516911066525311678883465745858698988579321754251183339086965294859232803417804761213855005836842633818366553882111379928717511120687384276490978329026293806090781713044323524776713959530486548855566733137522376925260870792332671213231065898799349925032350351643717927496965116374367811675170043736991661886578970130900198697237348519120977679737362735500122206527178332890345035901062166951340219590822735695034461009679888402847123559650139375699937458674630702912713213936486044434148254101611312074111371619723888155217848377847101477731638514367595488858218047219769555628867795037934906684996767208072066517252643268049988042886661377279511837953357607597152111929740834015651248567288176784919392501635890533572719322080026183015284513877360690062243876971738357421500384252333204623172408063647518136046493837723953723501314531471666158622678162268333875858077660547579266257465503491136188459877547837929945137421300052743078796181098779244733291369813341210826868993009831664924472974000330343936438450371313402072543943427020072397410436291428783064959514214203965694991803071389055038545930496744972104422680470325824357992518924887125111179455347507387699690109195612335298940500427551890562617460693690251709728701090848681103450154994743009653118488975576869771743623224813279827337869942902033999287469707383248817729013214694604005091346523829945693093770272746604018562920382014877135150477679186442664959334694273589846739968555591815617434965732491746718141781012692047101123244803562493625697368907110156431109977915727998021023581272965419972137101106738244952892006721411077607453483795556994277305880428223589962261486755471498451881266565509462917826458029336715607952714590451544889229477919969926335274435356489961971685245502271454150735289252550514352846212219982755946771307345522440712145120378399989710332538702076235224816801175667110429308836707884583068541701280812475548074199027006585170623290975238057705540525831948082916215227885109454757722539357853770526874809299955522000900501842239285235725854368935192816574882699030677129892081283862908851875052771746247922349858751764090951858272967170127156288180665936168643628189393460544894499409174351764148516531722785596896602326580542452453209471424307181055077778613012181550873362634058590493165120304912164202334189770647100513929927561546097131373383737773748775629569491500214761190358682050824084244450838076817456571791740405488473189761365994973853805054240952110081706890482792252322207122787584383255652786322028784244963027431479264407018933757802979510365202546573093050440358306758480882216347871379936563032128719254670702702083569521729686011178264601550527953751637321206811074552428304851476381977055582109108034868632544272486656383274276684322839444665715692465359407152538345521020129395782068470502268461449656740330714403170071254731143441115726760514706969262156745793067104895785812301959304137143031110736978156852268552315305993417429292815227832807766314891152597275971664186586381085090171267348204813109586390288062707746279869829270791967538137518721528555955099777369402900329126600487380182408518971865885807716672682802189840969826966487578282626051506938001413163801717715775607269370532332363800267003243247977999650890172163634402901690540599654035688924952172800987102061275917163674903803720257647532283745255417935489565511613457944741304996884961119304340842299606904769973287616202334702379419648444827732881922423246287359217009356507268657938680039881580271622397445001275793164707536737844731783844757908121946462550169256840200432540484997471549539123391601936672296614712722237108269827300255357612655203433617376292108743643707210918985478459105909383858344468488222441662724717946888941862520543424947574624258511534411147971965641272534533513206543094295807917433619865501492621670027525966142537597321896360157282160427828199487180890505201244433794634563864467930330391606443540574377095112159686778620704804694445030491899114584419444222248836570812781687394051509523275451659489946397407876201335794030203174765392351432289011806633096813868283717134341558892967748059583520512821632976015852307680118092150917021494205140111642404748751895548075342195581228081004826795243535164338809640676534793478234227509319643814684523282008302248763883170208493672747609811370217853179098938048466873064156041118261274217936860887494707072286556733801062550519391484036688834361057296905208782523617778637710219242754776638213816382415716690041922560023223163257569666479377844166348946770125367526144934165004103506277414850541516086020892445347768932175467184768165421911651060506659246839516770618849761384526710811756986789403268198670491215707962147499918300740145391076316769005295327191945914192927522212691577822348218552800006060683208136770736773283522480533562953139967852523184879434796473446555098953486141710814861331704245665891622561285324333033727618727057449133538317947835852436661175759800198731247158634009186383101360710199995254523922899591404180372188385084741581927484689178313721820721486784954458154729041395735012563718711654490965173682019062798117573913036779615771533269429806505625095965353701231421161263230691467767440829464115582014664934830502131159538451021947107384992079906347932401557642433892760006125730617716204843206489997831715245723554788911379063533078202150437099486266549376626979018587170174755638134061703054306930061633787542748651903049122853323361411149539703677468749385978475376287903700502288979558276601865499238675484295223340146280927302752961800413973825127935189874052143793674140913314813047773495876917233194362807939651575460204171501454514659955222193227744639353185997040957818776585628241748880712011933711063436288836770420493076923238549582672832104978412146632712064714328633411924696460988653235390261162073291798932622832963754360322227869851172930235853748710290690605484385248355213661146080708027152370860271582045112909240302921033746428566169305325253519163306313303060697774436691606374893895254556268430584046389222331163039795061831257685658286747279076483594033471939389987867927785902478167859783417040600127571204232653168986619544600501839270770487265384209092392586283221094658436069281352553438804382880474738806144458354793862887175609228605206468700390459325822019191263008938307997237220765469455221198649780179360057047000665019127586575779919811628872319011242424116752370573105614625942378376844220279006265792929004179341805940003434612707657618169855647331902527606547356473940021255150904691519462627337192479624928772269260467828621729586470423347161006641286775401712262119161056361771856216490926922355116579800125385037789859453247526215510764313376314838007243611585494336630188977880365688079246245955537932167945556515884353147503298518421340877241743398133557724792590580267256645355285887281892856661042090703005617655770464980558026613881938964436740991074933456580600140058158803830575552326302542", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n300000", "expectedOutput": "317992273202059653060118838324606262024594795750033347113937289136033095123789082729185977723118224526442294182961635167744790530736523343742400312593923504138394549347731334678578669542555886115550069202714943313990719196141324214230402100176343294266169927564343753841872947094985124165567933784917746853510969616193889321652111610558138988870928475200617234787660602014315882716887596782962341314550407225120940794734094801240696736482279003570352152863102322763087222997738670646157580972200208916602362923555084261335640188315480508447141880427985628883110881599867397698467119110058173418202731560790941643678562282959605652562469516707132419086995558391192434968029737824399896895569014356908838990087559507049892060219146447135766628483063241587321822256474972037408736290654170137868582506696182364624796735651474889997796367700872786695751069389478784888457561441154636963751340509108792668680536546689588851742125817381182950698716656675835618767771948798851651360048085142121570846092992375971164205626725429363294211411692665667741664037157266672458104955680070585589328611612980098424257050313634602433120108283402734648986536453637760843788132127329898229931851237110135563539677728866798807291575996597807659645000245605315410653536554854227299075029900893535595636701673202913063423039101742641700276220103380448341702561325456796007708851019030510933605349227645964455216967226067570088849501273633096272093235188993418342002934831915621347680994222894082647307865914381846675595315597255080370961837515325424383844364368167309935833413691661490171645904776606189994883258824263772708117533091040572885327490757940730505892182381766168417832065823838063481900791825922141822657981677478795000519242774178239173976583934011679203649935228095516926034508649966184784076376131851720410227463682511471060240852704034196018482110180018065170527510439685204915886349409694931140038050760039279703891564280685906431701364840350052584826574209624086692381117529345072968211369550217002126717456649230119003813111209343665166569355747473827153158787422640334238840486368538610200637078662019121613491634833550744639663552668818300607779387281798574662646829118498219509088709664660752734119317516989166477659079174530379539470710172242050699851956327924811633739281104105363349819469560409198160344041272661481516613845953937418829114287097347191358438255775506443079667708477692570208240894744594127049748563012889187914772825485733244125556800443002705900667418103386335819550430145916460105237362881577086087093786630668150175935077501195119505871545123790979713492977635728405517683449763416308188852141325361432624082231288791442064459044160611656877341412618857922758325651106368033655695970914572865792767768221860569463548772455252597372968753733520009745600576974095247865132471078848173533421628101457228155702991581589460403730753718883210438616762508067534611159930057390194618969584640946720354718727117846441790415565077252345424196176492439805924856328246229058181393733028461971844719536794304682594633929912479758864409875796298599799546554596555377002577060216085874718614291113542645121223984451553351045296862719635564290893223134620723051393204193554048074215787892372777959670379351203892165677901637717177028832733181589249826549087712597137180831499361577390020836188874240245078773965398711616792586852070861825336009758082169950238585296148055460060037739853978363483590634390685227536238205983249312459313172444284250254489523547516571673778144223945282187147552745758763696489140162681203945938862324650712408739837899663505033253176224863218759405881972157292236435868304079585952232759512569143456230788619838524704045220639263319864170356063192698208245897562061621044883381124157649404078024949075434222766649486531063846271755605305643208259822710442979784797165731810040916667604679202046155539972099618489735915099283915548308397416065703182581800268435271035399043965983945722320896006266208502424949904523451253338156308710781595313749378717575540314968476089575845179088127753109516057156038793531878421140843339474679890878763268967001361672587846237467396644918707781421488168450035209883181908021957442756365525930654496170861850239791108887570207615928057127815803077181724747160721397753533494870292688707175756229633035556281170563618477443649437791886620390593641543608837835254721992983047978403932303471164256502718604739560225569516634976290040517297068063606405440504413734925161558532875138613331693988381090344871321450864237971954677185684849504986076426282252298105955825099840102921544023466104330309664145934278548408680098519183792739643360367819712553822175704777089814301824493529971056100011746842707010868511954036781764167292499682174747202716302636850337621636945234386051132908032137708925024629713231798944687664302268803988938169832273654425081858644753352827959820306410142021455634267929200020472194952791344902298452324305232180977508555968166183628972880647682642972573375938658834477574465077800912513795488199949632948058465952315671875332061451319505120240080076681825143890872177362437199257207799139092988297036524989898104196483720091116285725283985661090322475827737898761058210950746384251445632223005493943514895756380048434173145397398015574861904208680851491165094355030131993114833573796260331888448618450076822531559055859897869920841517925051841665913639010349383312061685567165847667151032154688438090264851714731679542499955025854476536901298991951286336231136746783100329675076879186503543476401721703720527598884068809933614870491937397095647517550310999971611675105957595759851300802441573262280234784908872180114845763205410528622491816713460760006787216394374592919878438796426383672554843928347869278879564237566044494220260341615997086089733293405918166650732318909964589656600970840929580013634035904116281987067675922868494299906324423604437683530364336315558843852055312099430118577252239885120157467336269839315677330249262524549665258105675331749159312276253199617847431045463922415331255203256024694182095945546801868151998792814833968694988278383529135494596600114870133467837810764134980701750413954599960045846762396479478591942788129278971340222286382049239594420451428016035468958845542443461774144402552727426044766983862614873169199233335017347258480312041307836918263832901310134625078254081843313426051800808960055283762226452942211660216525112689550300355988011280746829391449001002393349788104038409158311054149047625625010056211188778790334557337012774765848084675461526641553346072821238502474180348467141181805482208341108686357793596232190780293531874758577841709148822123836335140231226229971704830469223238821057010324526077466892226096036662539844779501470212056919689522744756842893507709326637557947659799794787289826718718689208511193680134126425558664228773251901587157933928937835204108446984188580171113531309225174008770340802438375048505790202959282683535701347569860752679160415885245049445547982986331436953194008812117891293743228108523464269585082405088773352695632289262589602730127429074597429710709429915883376418015403791644947042305445202608228862115763933368470498730973972247653537134416139380542157441715260457258273231835966811376457036176829542448987957841728379043341102370816019969581089492904341462620994421920232541829971795255484327760204823760998692994391006409168512616431037092472518147574590688746494701970587526785093804712420810373682003361523768226207062720528413307298131123682011238194516092710295647442577598120358060051910992326172012081759210137348409520071451585859769945357777786932187836270762403590321556991781243114580096572930123666084921860829355514313969271552308849724592113896589808472710461556251505551764082013277345473465601989135142558783326942324125790105829979712970320658718431665613759139032765236243851994784462931178089165896944355050140825322388928340759078161688168873172699088977178955852062787175572449665507872012317337482678708977618932738263587847206915775774072694731991998250796087438082323143247437979269252143409700974637910268245691517812353693904522160212475045194785344034079300703431928427954887035548845201479869799871588203311006549480995448577341098794501345362312551431645121403075782062630665505082372498130482436254178877962339462686111720928869415440660164674482457761708205769130474981039429251432564921924312684551151570470761498529387267409538423240825947632567750201096245053054706645488378884585983178738530668563803137595294684909577170927500582189922151830374308694389755751459940092242602964912637562834555752913370968126067806916858987736622070992762605730110597390931314696753889738974190297280904529744117111735329375554315838185431165796516049273955203991026458959876327258740161322098274999832359695060731103221614043888967761694881577593784026187374492739147592727174770404021172872863425947090415830625133992842050392941385304566751182147449047555795751832967868625028925980827238655499691592336641742540569752322435377554608432171374715169254183989744682943678708074868399090063628475664779307993158797131336480411023424142658549826734138404914390337163387865376223570042632122392820904947908940630193904531204874147140306222319789492650434434077422706270353196092193278524745409522476274893319948615780433542359234391014039267659081737827673601183548270186482240724022740852556921135916732858925941531823351926537738431608874858613037786032796502693822711632485435814450751525676881426986240734532675694170445300462375202611427626932578913078241451545614371363500267271935549429606469731989335644391689321685924243228336110190860882054109357141831278997884769217124650729852643635629014145720066301979265858177559472807813648110529529706967827672137528454686543427250307139672656777103258320431717052917777644301491741220514463569346875755813595490701613902909738657888282088761132930322046144681600268188971334533567137778788361787901523870950327541019837583033568365692330534747880065821438706457635170983971062570102914485006452508384145223705447746420106156365098593259111956284436629646684828242321778758011876569249127945798882394741275012440862583777691835096514431811720411374222816310073363510926007945159442859861736055016184680689316962870691033508323281825176573117126839376809997666920457033706266328855591197519330508215409043095726525087184896876515052390765690677648213621783216712224756775235403108583183691635613205252156776966938496103574895137739363138207637388927272002475122395357667637071425584979494149073298935067456628742088167390271668352851672193303554619674159178696307856581895162655106792117204506376288867305553611788495132733696172237807353746574432963829711731029185034791216512218072369298908311701593599922427570046717950331220724641926909342622464249820612900533278694032492685764293178636117339931544534738410456214484265551478849719504455617531666466284333651228562695412707192232969330660153409667810483738890576391061822723419215250296571015952042167135652477482073493358358893391677526878353698261292730357966608994577829225064538660401895076342107358366689857886127857724004561258235976136787373488577592838886263905547501200351230052307589488939229372419795570662920841694599936174157511597752220795897003522443133058420716141392985886889459240449488654574936358180160573644200216082159413417262571761429738406875660263062650257008459941451405562170055652012500070834168662735249266279416397988445859963607782371597538658592645350926331595413258084905077989235105223906083094826982131081199514018776209756527142820145109451906721010046457469961479340652890179817371871115803921336101780575265993982982859917108511729015400354876029386292029664725595703936229110939260491638895172179595355125194959788608240372520012269360782992328788728527839350014559675741921589624233017773169054820496375715622397411667491408716055079247094724322731554032573351751374739116549798322646449647283184997442392146279012842221161232536268247164108264804256446561224300489514649238134525800622218597770734200590864549679459044308417708716539688175597074112223284843726382904044750397809504771509353856755385502961154298107655118815881302914886697715194889999293418060355588396910537864224645710972931133701304336080367355658159410790924880917958297831641507246953919675109867556572964297164689237176151209492545688123318819779199406640013029120975651152453096547013879912410921834130190241489683710209262203950933989057866611061324640090011223416301280652111824692600328979079954600140195885173195638428076542627357004415970425831074486268138988422199830264409150470691289070490725982890174720397963092140296636352093211051661483221830007187872839088172724104709703996677532156875210325260821684219268122890538899635935848606927086576344692404133221496216886207378947924292271209276139999623363250426966789037339632310072589058144555419148163919392782228584436625564710957417844195171568933633450763297781255936088332727288721356701861708155306848169180315525246582068586093086601068978028173193101822501778827647195497227700596055295926734301795679431304356049092038871943343560851612876398717117528317388415200469922284458977224163887521847738417960024782493433149310525181368970992180004467003738569843066643588596223656425800003478091530481203754019438042377000395789071785928235443044119469837277433075412148490051941154549271104281799404055800430368445332326696464555630561062966273648848641872611978013181852057260391841626066758455442452108767517857006109253054732566511429031888349344657808262507172400184046897183395579752969552283400037972043718703633635531544914973167477614529132204885227323992366453864192491331375802003886517239842147477898600198657840044799925950765377764258459047394153232887041197975867357545368727401869593556478196298008005206289507315769234866931554103332387649301965871296032881448587877234548691553406183183485703106158316618691633496576467308789940653270398570234485108739659344370843140226496104403691974857796398262186190570806118872722162551676752910285317989355091724604839238233736064970974156823762181057333145729002015377929637526216792913153871776540584236528696110203777476020552720409511927431624941275210730701866101911531056524270665072004226997118775783374162080975883132541022449105209198471365393856115012556322236023824321309298738656762740090200052821536782473417112245438248472090278783721428520277719068493020411956052354319654105915617474550565513539893529523556611969013306115840422789107882316962454922696437936822361302302420396572694055762544632884741807979252491607326477610983743568620259022565658633041090730126596774568761435723520844748185175430188099644033532957679597639408483123481025377335307753295058208627082242019129337543290629418619001608821383103839441019415407703201798358453363047621932685786485052544216465080304602937005651986637813567190666798971772458875839841285959050839380669725172175080688169676926316143697418607093768433973643136621669506966946746624568548624718870705457425545606105982089665067224688214296005491352189888165085507046235404504067085395753314805504769989274823808262019563258753159743442520727802414261476140145313159323630669585766137749525972046509214457774632122136440487465157180278521820892743730401882606950656631721501752667460919242271451915703761822627758150747915222700218173020706902036353839647149662298505206009610475170186908103478205644620301949407686513747887869306783198235898494607919675046724072803580820379705289782223808847176751048587608177391006029483510271081118519362265804365778115099064043674589064055435242962003886587309815066189173109064447911077997940501470658080945305789653172360501791376238129468557882014023580561376206534156302650804484555171926078632255492811797492945974799549484249190027346248056764152616127412686447737336802793609143539525742219564518672891321865401190195440048827504700958408741047817338190776953133913869370986402444955428756731041269205460776390214816620027845817716900972908503335080810257502404001088726256653282347798661684514831851940944654175040755922773880196807728655636594630957366243762440858241577582094663569974234646404606434496338573763658320071467742294429065674841933040917143183782005384162049767008124255858554776990216610088333202265200082860442763650686817981116880974855086436338457656049991121333811547043647025307805706914748206563417298064359035596310702515798265390439009755228079639205793934004932385904154840556713566225301265277144195388114761821335362965222210855557285697993094518801300848908653374723834618880130209399444241984776199755707072921901259100561575448742130788440375699486051006639255129710442316709240833389005474652371671016374134211522928486572614138207570398150243702225666151122677247661416197982089127886171781803580690156075470136324408748441370203271016714455043257026907206299388926594463635710460257603129340460501842667539607375613630572927683249538868845579401102355708593295941784673325973356827936331754415814483323064683462988015926957991127868832698229375006113408060113671456412817459840250247657538063744032272009104965131354819967389541690542039195348501924772941419012676834439634575894747042036275901413734986386401047069064615565871933088704831299389353493317090948429422809716213011167241696383513751968258129630253786369564649303779346003610906439800892674208838873213943972780876391247258301973721202719579055490821029351101782715888510438968541814586441331132016229633203222980813171697979816952382920152923367850035260860426114842062868535865460841792982379015477434070816200145595737997064675782944032982188554905091461608493477555294625938277185370684661152846510859545763950889312521881006871760209531148732421667279821567270177716568162705813504040367658102724798365811749126409770974442522052331314346031655976219859254566622952162061649097888069252969146554123242031224884612235853873072316233621094193779772114114150649013536623361436410545576058894151989685308067361421148262097696823839808551159860828425298748200177519598333574843582956680785969759158534269939142866999322380176721603308360258183945084704690388903801259666764982433370306743895556798427587864444804765770215947548270398713094439137943741901958652917568309603208625768849928558511865192390616457473860432238114023292076649779444726261254384597525134727397717984525759562933015197858433644001805754912612240228126087849538366902147425248374587394361461821523006324915130701599627836066384788664040894198068756221362857911243962631466914694612049878961647936611355146868745378291725207823333915430992518954894000354465869841754457356632999269751458090930688951443928507703819759764062685147032765660506885875569711712003200251926837105033100694027585921474258255364360584519235252802206772257386524128666384676733532467682702318377873761553415054564231716417444230312579861019396649871768189433801760537292963408214282238314718178563229327861230351654320777773255909784199672231625750290470729078102109287847626240506647112459504102693391955733230505053356532795464338416973043298887986504989245510208708154708976770184150088627798020171646942879246028864918878530983247348167097847095492276939746188375267151546249418667927105458919778175779332858801360153327181943887502933602497926541531346093587340479053908964757424033328001209581076084746357138400305636999808442352543257226166841851715781187321723197105852922853934847520019360604130036767938219745391234000287777398624188017209858837225407702304276637215939515881525211112676166659227637143552928684604611561990473229269195878370440819885024342020440621205299931042695361372510757195143826754913788316580666291365600644592286006422012190695373774281515353411337622421077792962532482117398850384324894770504714570425484234060229554463926954697987606127496592130727774644344076447903551114645367304453650203164753224476684159503038781298431506145458407621332574690791845829883439162015628898651332766423342365404731465172723779021025237428281003638322323695234708776983633063014491478579695304378671084564255553418671449234827566477984445306091396492760484042040783623106766225425979868088076596374767933126508698920012733302147212996608230069895712788566920963766582936575126272738272068547349283671292393267397358464473008895799229648958908685786378925928916269263160177204229769901452126077244850613397979729389313271780511086182359106956797109879973716016359551892236858118208985789195913686807382151084534632081581438830718185307343756784591582495324210916149502732451278060543520328035512888659589641644368975772445219121590062251058975024616176438905320142034216479252789857032585644210512835263640693880291009521568786924580233191930899756090081572487666066830366544023524616864760287954511049663556960988380442502546646392041272743207275290623166895293387845173074081686572385521351617284145810565199369221992676178677704886272571215170037007201146068596059704162817905117525044228907869440845033390986467416824579938562549949333829953771240000746658909989443355267986088100505040436598963395652329520334750836611858345277927557977925106486266855460511395654290182094628010938073486102016205686696308367276146037741605662584718116968544375113575820657778013587952366654159502283096584221814022436759945412554907618208025711336611420312393131275094406311919374159798478468575418905123112185203277047313906643735911579310855810845766007067180257265408293178350556963035995805566421523880361378006530433029343100090656587483412515011606588384856431986574899289258046858037402287188911419218486575158986082142469495732321974575964215355408995757664854336975582426398345453203632112844751758494614043103598769444024828875903796489455277092935861676795439684493398867104945466934577789507371819924842919567544060081510698593737747774642308685320394981748437548219431027465837149153808680351963562968629214870422369755859881046566267989072995152213879936085270129235022205714301398923913997318190424561004439195957928777824897353603767036343193379188600005281572641395396406233469075715136256871908661575226461989363967750564688644357597894223667391656978704096037104074767530481936153811222104318175958707101618486742451851514208665277830310592455154638541179627921787746870483452173319397266518736478759099615078137828797169061868025531509451597620319281027118528126307252440519219365902607889354931712486972105763765270049309316196298244252595630304963184505171615941568444612419387941614113016403117795235965298162148725859122455818131196439754381433780833245310529306362859541998149502962594995255101860058701246400023172026866995591582808541519648176285188034039154682691424491244150009806992622301690584641476875997403481421978410631133746721533077097163908977630074567307422112455021910174247833113107730620411527957310152692791827323454135877409843015981445811090197520180644993561777256829716074322445734619649330524958556525665727531015446754924009291440637329996029618149637422215795836638472403318395095986681243950100610296955700964633775630131800250667868750004817638795823352250008389276915891981186866938152082044519485842324193960410530504171124289546551967317309023736574290526845733365164366463201248082854710371347524413930872691582280067541345463957584507816801182918428426468506641891049621199151554101052476435606478434251787200640645816830069917991462788926222970105413233399917842948364401637108861925396402785641971743841937758639715705891254955468233959647085411723229086807436565000933166969221251331916300306020337552903083105832362723345607659138945248766643534619123706220630578909075397316115637300207411717381430626626185624262501378196446079470134333740361101132653197466466609062039856404735362511510172719863609890432767968913358642838433780587160092059491783381664050637576880822633290827810582686469435738434327286987245013681390027549615481943045011303922977443850937026492864392503150499327625047913610330850539692068612816940819304467969127413042033374383002252973582988787613192797396574230685928476132570269020265357674678607370813067255057212282277264781641466606626149363035022606319674090505059047820264211800831109908083697902536718686012762074673983720478848297787467976638137127091746783373259942954859366737435962970896035052983742272665893731288033657750975182085288463309668370847889059198245970540261827111448339777757767536014770759262615836590558937192368116050816926899781162249660857478716295429617251642748354401627167805088806310823410716945451107658090799682151914682600705009603593115844340737560497623437156200631716508381439305669980228882811705429550283709419743609367497865304317868147795017401232383039012614388489993491465336169718996909074972617296244923709830101369677911522872532544658744229177442255057260252212007914980854131787696819605418765609594060520619263364472165269120956994638240648478357389480846331375950274293689566989507924080913573473477196880830472004351070113646824315133920853321238597440970308467761612383878356720343763774832207837837879556872210256550128208219728912900748896180672026145033850701698035182131703537595253574055442228019247606998110268334077209137919422088082482186184082253081978206616801926179192236034487628836403783379797873417550843311872570671132103507690402754113577002598370785538396954256279125899868784754575235391597900096736154231984594661037600470712799529855006176969080967672767297384521397568854639543595991787100629361769541113757616707169104771757384105927078296662378850148206733878526145735367737233815541840976422114333509037334333411383311028067121003797117719442930572417221314635891028051663838805090461795807847605909777702608990531266518390831801072968921724995431453778080908276582652042835652762776025273734597387817524788304579088565503497361744671970067987409805087842061949053295664542992003676898168789066566322811946977060292585196926716794591347870578086908807369213534664911605407139915080741792454946981273322673777520043118771981515805537184166233214885728619664894503741039189279231017106000161720172301120014639762909679134516971525775270102104219016143364925895807517576458902078639147600082503432310232114127653604813411881968778991240694952937845321012754169198269326788642410804173215969373906044487610502304558416047460898849645662384943906108969712221609175627996937943949938991037540012110877677790192024494482174255223030539625089706713673155330572435164102081299274985060215724161767599133095895123342404276751787177345108302449825286695509546769215388265010254669575236947631989812681508043552444739004995334943740056182587138544088086222862201946140286686369410428268760182689081913208491469045965997069705180433042417473256022342062248687702701733983805779186128226200660015159673123276106499919095424614547934822881273073796457375489009717653232273263324789743852158514274497892616498416786106246316271291940770777041615900273714558988385964128078794293306323026859568071049298693444261652407621710429521697580887874668360871684411184056707846084195843815534493965546871205269082591744699071989184572475693047814273088516165410207456062392609586346360675103907049488093059984823666424048738888597476463365486175225450355979681848011821749452433344614259802105189123574494776066547724957222653881880825444021527517030318376237003791968321658552910675387673200834219668068725417427288377742314203604605951597456504555673819081384009530179409019793132106166020942671887524155546666219123785971229898186174792369206031744127267032884825783420141817466471357321898754735551508856148477406185713073479655776530675339457147778083809698815399625644730586833953537763803684473555655818063295374027628427952736963191895152655984419081958605376813791813841521127761862952206239964090060266372652154927601869612972693613254663998098928306700100566502118932153441912399074403128566194259129132194880877109766299170714857775877335165000716456787415712578919333641049531497757815727646641187501158744086975169890327944622140721705118166452688747644381142199347257663268135063991233373625465600094582019430713945394149925190576934981515382486372149566631076296970344636447791018150751211437917638059300901634453047785673446294164398490155758218293029882476810798482175024125498447821544529962838971785609646970285571126410417463397195428792511256338729724445988438894009074622387434084139911868892664697459335646342257458290653440512112180280758016813385855070213489513697859471633926609669634775910032047001733128980112449199468475254124843502555986340075879186418416691964178901765893724832383829607296409027694769861609782820093133930019362700445182995511979081029553708076830306989324900351219772973903527741558483944690372652578899439750507029527590661201025149705937437946394857878969816020562090898286027031878815716414043765298444204406064840046426654263868491935668051998622726771084069891674007881859067043302809655279657510793112963013445175992115191924699793351432730474928380003872268749140545634577176651579543567451329949441546834467874785438143438232598678749826003283448641410395426241337615500745794586183562532804058833042681627006062742058311616653569210214426940051588933936068820069647047014666448314109106140262333815348954169163385915371850107873123498535650201813097108306196396070644416195520137459873207654044312041246862936297995932375709162671518625232826945750176975254229275766230589667907453794271000867833208442201260257794401882712094991589131371530937564149299198957194393897850082124852276847244150590978993548481014297604630688041843649312884429215326804923564456047562040272039538051423429181126407235206526184597963516727184972094612076951152586859308343622572414122236406538045968419861908182931164501332813141767435078162374935355602226023391544914638169040265565412739188288844736656665488476364298258767310622536307171128182069778267969196380383906691769083909793341070888311639716043857225210459162561631479768427492032006499448074240425493569064232633170993948038034314594078253894252899199979777058182651065453059491028831020231903356086143950402116309374157278496652965981959893784062406601012974289458813943416275957239496377627584736776136191540838318573152761021304519824407777464814067132789768729744737508265741296659806210780829703164498643757150168044541673058145131546225460580494267744883887896575645960568652989247542229112746810871837667130450670128530686856343322515618503316788192690423612816828247330022022207917726657897191698868929091216677784346510000322885952691835031062659093005790871854793403499473987535860860343286553169586161661038577950474575005451980975379332580342331949119844949077344387616382516349989378883076414404745851288422193722399025165692603355309844222934192499585004574820086225344133671954007277104942817946544383556761418430834527122359015779842975013436636232714321938029562682182055102022352850592311209694823499944145307188815188727443734931319660536092845390213951588168329800187952360718416868620101993906532040873997688531512492126419200921094407140348610665028458025268977114735855349571089926512761980445936243563846145286529585446909253771431103448639116077781987231861412523644813993425819251663698282380507683992918670561938277717944095431859206900591395739975235067180495211092149674741313918399438308286782417197064642253884813690417092258637319815079931967999649424588056659001676441790136471099022672101165760992062691375316016077368986696013024380022080485070466853780737224844973767973191934022090069588541472939439532469985136150067270495360683408956541491144173883267343624248227022824380588807991661870113774905032745197883303684285807787756831050208660786016146425719052010350814398344137995483300419302586710999436555779287972257829273389906773767513324694709701273339609560779512694990116137510453840860835025050719670450324520258906588302336248388979826882307907194027816892314659156712773309992000985352004014208921136232050545929180004387421181461053203685002355101665934050891170877721317567107138902510294535723155995172989396445386113876544673781726101281908800900135882117584546743463689569680287923064053565797757335894814786337248086260868209086816539881900442060345719911242699234302759034814683360858106824330323181320071521393328831745720069910909790596196450066998116254002008238036853209034606762732021571813238349093499806883054581550722237887797096917397397359794864113592636727358213761299492195654318530836133661815867037186110861554034553209911145049674437014676279830674499304013036774160929854183222336112711799114687509010237068374319980970979014844180549917131560428085314296293672468978451048962560472375730538527761183937644356361862314346083217290521789164508025120083960000132485326777840744903915157618693158908636891285926530135292711479625420402071187012523485670801164305660646466166432608536916766782526445802645820834899458883712011504757458808972234982395530775265883536910910929489720420043273815341150185920400224106145267963305118039998267339338320600760233151265787883726378472367726685832532532201752608252644797771104228006208427154964014578804018515044169252652027969038865687715510139247723869636899172014418490847451273505061630847042738031208753680545784138059016758694649435519047076322911133589869781510144271074630623998540975124880388184915261406944151496954643855129536863896338416286477845464472302636461046025286255661946043881052721894924389803128399679315032308370512907286316946692875343908577368126363950369980712173350768262802089472776929243228587193436001727022258717311169482108337385111614974294290511180134286984312930904288946331034594309886318279365522621484567655802794088091499156047767662896583013584038580165995030720947501654481462948529895681705751140818260261144334962779777629229434918072326354611021030323850808166172681324178340373129714766569656245085242462808072560276517015040216948807523966458607540295037174771887921644776287723427510037066263373470933335815393477135445865380360083254493557761605518812987505825616153099878578773333365418206834941352269385815018293372799425154310473627300601031708382587262142595759425677285816295830105226557149784750684439182053743142750351634842908000402490632368800380796303064447156267800800113708939837201312197902942460052562342617356086247992189596384189329318372620077852001972044914662072320243677794826913494766089053082278439986546936604643846272549632118769822412052273747754136191074670300785631498504496658562777291441161258833012676842258986044859626881746751886035554314561415928351920506819476212530359982195438370374824216939996656266130745264870554236996203528153118314338617206971132720529383596501369806719512350441451019468709556648534096195142841411481242152440144780326488652567637170640379987888769443431127109694797870098888745779936745519878633968390966856946094658453739860423237628023459689325842317034880726852923695421964742684849673535607230697329276835836406612743329898589456445429952407219237950775337615211080142565982827488277513408588113672567133629263567935838751176883729734816056382979056188337824213512686997574019494158970412746939951968756802024341158648508767867642371661800393810454568185353575289163414129271232551592607404184068121194794204568328517281974120917450500071995265949132302371736589432091955004289610774439097294223428634396133128325547763866054820133853037928756174506912534064766730045438403936757783518747159728329357823875857197862923963174778841458030774358513844441480662903352173403160325940206738459049472111691599630631338678014559200379801199023465027556011091120839105406914410110423322395734576495108473638986562988129778500418099180396239705218904481760300108611841071886203690554154963393589990341112203794121390155147345571623970750287070445245932580055360049522625247732811439114667686452366819790608176299573641689587378454196140368899185843880471392995739142759687225325255245405236365822434749534224387598312472784164755686266373651090999792480693494510942591807374536794319581125292271125484450263690965925745221429344728520920288443540250973340252955560167303928328499987565504511709901184894598996946406772901414305568393981989901288457961315254545837965792590458927276622980261106784566841345193203042979065534731535611930611749955126534529399739699782693713801324805092247381247836298023428070836486803018056234645004138567143819656811902705991124435290903674147884743368125759426090161741361794116475985652263918122012721087788249701027867912643779930855055248331876122762987010803718914495044853470778520454405048654519086827351249205744342541703309762710491375254541061878151162111653696802951311761523432918063701129356710447085349852025831111343615734892985187080303566332783278231943189732665080424646034937619708169397483171386063852497386753418534446139601849372180358204969109684432664948789527706196713315104610872456187965585489444214023722497406610093650394514715966685088558848417819729786984524195390115714781764351948216706495623519722600644022395846562170398582744560570340297009633054563208142021678924849755732043584870828979945885705744287552849603635096523618852777332135418230769474697895459999920551004483792380076060280668683195140173703282891688036086381528611030559130491689548117833204985445087691044868645471194785728030113590460899616254982477838564864342400770207027540046061875407523443969598161766069062610598680745141718319420250250823014038724861552639227175769367224166652485971939084710604566911248727212325323740013271289802102103042500677052508937827750178006628670126933604789426409077132441862434479082893954152921205730628155680962039163366446361094641082989920422389862185985464207115582918531463814212481360705283279113080712406004545793667808501857699821369424403069669122196465564706363489081923696837856823962007480932235265597251667698181357265661113674989396200061859003401332886247911212200793913863692708065991863054902402008530134415097394982105241189799377952824839673130393110209580415744200430281581761015903478481121890344229699610792919019228362310652965207985719649889557589775134038482327513644470597557788674525503811344541967264976273666464781599586240090996562150386739099950144984313064839229368072629630595840155854025757710203558239265770883108205538997686676948717486257725246501480435636757953716713134952103966412306959372479409422887122650130986766103694131357568966798211707501657057346077113332399308174443492489161014651109687928649324473000834382639804416221113581627181477733657901896897882040625041827299542820659121062991092415134921570648225744516138164072707724947128225909235287391445652262038112573192618096441211615670950176469325437683810789856721897492802198313767241057929129031436704615965299109830984337050506590374886361151581226315797631259088948402168021313904192914466333496150618954223753530186319717980051265735782987564948094011038117839202783395510208806809533554447114353454174079258261833540591330777740950964675965351136689634629590480266638060998604628665138251183244454624796995172886839829608670929479762380742372247989815092025716049444938149591990599258400202833349065753922188909036891790404429822137681217565965759716734661775727272218192675440681934682684406114086377495995414850853136642545584497060094837821605795469167087778994866231992396404974490057325887235903285244087087288422068935460427666014833064699547278825038650488266710406053462655124077703768907738893519925098355151861943686170354061419483320236079810496096024938929053365642806326902156986490837591224343019633890668920506749637923246050194171884795275908724502979244720926291126837297303193766449871053325949237411319590562926271562177544048823328434636206850009496800505623370989595416518999151308040721422049139009341464929573689493583153670849249200993197142798648242759946809811367012080031949131329751000168638449048117698918224510796213753539227877028409132364467123719679057899628365641385953983233659572336126080360829423125592413762808448030346698915800314069125085548166730209245638461278947465534442931043415467428898229676047542742500367427844216581881177558644979571262758076333218574151856514339762488428643962617618343412850224503709544149982066792076615066780421449289267515068385894639366012859113844616302715414486896818560913218355501983090622444243862760360414664726717684519816042558943395568804425017751515878528456635642059722270561260471089205466230397342953076140792106315636985837021150792302776225789465671311154198912120407998866551491396334839450887497000406561523764883324321627373612232007887581226807087547087760010650061243339755614262943071571769884477776159929046899540761580574087313034402711997991949003825940912577134954208509456647126902177289119365926446441936629520354636508771565767551755991273185160476900514281579891478448173715871041080394083292270114449399197727555978236498086176927145200349363726828313455359312613110686431314457907183530721024282462102018113215693517437560669517211646651814831776995662312248906355152224453201283013930774533308503584340343818520625318563879424903677164455281837775121976616575764202497431659549257908903501536187411121746897620879326908949221336009180734192465748742471564479899581809416841827526476304793763306969029061048095889925169728363911530904804099726549252920648399009547081722519076665449873301691749566078939566969960765091474230942705761049336614366742567400326406859983354663465969289129703017849097635166297354102241385413667586875910974755599375424301418621174221864437120576344708049119554574930848022932075483595752589480434679310538706673842813024697544527928125726131984137982019254468137960466592236746242007760690840131129651623881425792078947562216961531217512278925952376400324358548926288587512616726577371773839368517115786105410917660912231786603567404868147813259043170281787137159307296488124780565062822951582274237406323171171185773803413209287079472270737392502911601215675998967388005116493874695005813293127145826324513669914382275031130221207267771024706790015771268266767259068333314033003984213146059878538381548872011768700279582696282198167958308667450651951588612095367978642695411088360503364491169413027116764700105733053656594521189013115629006094195637121586310304441272134829831228494633644475587372801399291106725988989122811978898218837032652668539682626608465419013119580035942224038070121029758822278080021717405111888662111115723378339076745837190487558176999447559818264867784460984927418537448703720239427147268526039370017204644401921403456996319329204464592080055450459751455160752643091950685357875082722186266894282583644044440779815089713521345888814445938834510398808563765161420463505818970696821400112533189378095582137038461475472658449708568959953157648466723310098658093581930873748884482849301306721678480255600389969779234275440202182422303248914613517006395910122270538189402472165759487580470037041902987196661861921466537234532716539316762828912021779723027161582547632319265194885897636852506096847157228704511317314906842454354810273849295595191507217798988729905367059098687241789933266253240411934716537771353404264713991880157202554704840060070581611472133827279258568792856665418632429517939788940062467479320554411225633464909444420674164862895800526478120985438133354767065678363589111902868648545500821334111998011442031733240652354532931179962993854546958270738083380025566207097093739813876380082606283817909106688047633123876623574793340149134261897552613112234068848143009924883053985769027986213905874029309148215628043328954644530806420465036356975434451506458761546835827581724328783669892105594996147018458382822509654130619633525913645677397913841054551954564862624508286968847396794573217098604409064355707671221231653606554629408126326329531670794702946814660815198112260225412596046427985432050124568290959243455549495192174178997091784490991606142511270511217612524807861097783926394036004419343529592113632045622292956785506358140844571685902874969961357443878315750215077493722543913575712275962283613056162809024844963403184117054274061513277803395559326430538277793286720690277132606988597249206737782716126086138053555598845205881293152242555621848432589511039680595061746925629246515110710646776313865821714362279278742154746783814824499177715905120947786751687510238193017664871133980174779829193824472618857172325119527012679281156453332754051971510339822074236127444204678933725349217649556552956803318430065049686706384985750225958080645131233718429193286374086707224404611518649919916586921056458192924690551982904146674208654115486506308537626222314574858081494031236178124464986870871807465034634809522006846751574963202822957204296325288731285072446408432544583193022253762726841064557247538761090615106582405049220103129755351810405690346148914939244190567581987232193379274445796388213119367483223404814766829609464068414826581898748692345219051203595171580982009629332367619177471632892819656584273030977024530339541223273496070620228979111941353142110366418312104936505821080911295017211524607119865266285947198303297691885843547809640797471590969719181851827394474836805061574372029779312306775518939905916695748036401728610948131510586059963187586970959170269446256468386685944580413910059078304217472764034794464366756897912445007925987378711052771721725730320987090941914440951026573591876076009684622121114484484384145410596921859418475335965428594298659370077328220801914445810472974458059990858543840543898163355091508456151018781941578052035468140399870466117860946421693417853391152099603810882106491830651909063577910256766271029463959716572797749596245244651631288110167702576153841786161295793395728546636705905499806213995588461466237127213082109708501250950515211613811502986237945480703119314471719715920803375346024074953361251259463031067391967815378982434196557377063536446480081125505010700498560338725072613928577878791558102332170373357776954272491736711491351067328150548330041811638682183733514323773977214997757437664722023655538641234654121780470283650203923755444500361164130087055206076243965601190707582281950311535026877320013984792760249108342992275061782456227691042944974163918697032489491747635222857497153742720792018201869431029501408939644712698151653262354807835993838716446508320414288573218521528915904395950798926027040146735492256657532423078886300849288392904672088491144125045898999716851713784954155751866753109184996831430626443558474374802252092622123754198781021323903004755394584440791944716345016362632977490209741048520371817480068645869390739018091215331985146547065671335946494105744396540826667019626742134266613099458759164115486917208490450545831945642636888467516474821883827115939695772318003431045546918663366251076886819628374578654399424890250962215037907133707886536131816365530633982070489593345191845817424134467027100162935862078847934309017039031655010656195944449700813031067972941344134042016784574958706574949142031022298481252710103362171071851721130779196352579710715002458586200634212878963818904109347363892093473462639298556102763151624848336966637595327319747101449046766884401092675071656173189492015972723421569131308416670671523793213593458555980935244260672130729623750416663003149547159294228748876552721457607093180371275958332965736292967028184824853520791716867286369414976703456906273778306764083359730792829715040679310790736127828940855552813265699716570682968604602848337899703174710155700586802880272350533046957499564720937627584662922003941252366260237288619247027707214459092888390230960437272909658761042739024095616234244755862044246094374973376079457278321344933551127115748772112760852101787501112178156112536196808393089110627330122149812762580317876209975537512693891985262646096555894820774464681572884069758950615840135872510196325163763740110129434906884052715478723928289340466737516832149044706892826642471042009612687203791389972695327144413675047138335133579440655672179358185651931637280312679505029151156292291522838269646358006224053312440569644976263174851981322817359943074905465038209172467254384678960115270228867513504055405365402881925867255188270452335515025200768014081471720284303254256351852386686757877721408255624991257566380058643143294216804058777854965284356080635579670836855753886733291000461383207902579801452489317873155275451893511108959355262977573092620269268541060160964331932610298312135430700666546171359195166219171519551881001788250214363139538636027145224149275186339293888472369458874443255249940816350135741811929562181183853782798500399607642630096504142036634736322433328348393847360624361630083274915657513568095359546854348640650963051043820986512828233094880182123454416197637213260989303700445205252298357111085123457701547181893589573143381049624537550522682722998428382160861674711403794040961125674593886926558033910783282513529647088631314348344181512653096690197492265085142574042367791662935995561329885247079742897063310007570698380720379272274220536186000316629023449275583414231780529770383378124288905184248812023459132936258223966732876085695507909285051886777595861789856718973853915900378076084894559541051102531186866701994798592088578385664779557179621623754552692922088799218989894951063017038095519257918575860596435241356740872693783074717410566181305524960075227714741713914308754385218898689732215522165820990949302935079985720662739068088093473524687759941540479983188760644041268364784820670275956708829038091838787583684059957006399136568533338585835207411899679047684819632691707729033034316956478714701903178056809628142469028961420722066162905517516882056952002916961813836143690000808970404226481688327586797041124681859019962367945636128568599266102292578992333875428342683762982287622931505261213902873106742317238830194790652649124683790119525096226831209656969477926268374627431257512587514933200520900232790074633560701512339643234712833470528363233429318430091857303120735785808505597041911726299947231988470445033858467425221941631961389254224447952556189708784438231001621381536135975818620112472731790451442100048780201594160984416682897296779161190906871826682095305015986663234161238046915742766692042250247878855405902538135938594369054416378901684731524667296358228019815547889725550025331217034169553688787570031596375709136639488109777478753948663995474898233216100127399332274812082459675870687412716134661481394422053536286974884398083145169523171128401400016914451946051684697458059694267269453881100044676338029983845945681743382308289812598760999206516533439883873966154551232278640581007459315552179121388358555587913788321904934323013637404234429965206335482084389318205420116049544800836967528492039260126346960866999770900806428260702153427838685525915584898583934817541429601599741599155288203160804684254218694486488861978234098534655190710241119428744156163122532268864586862374531274859006624184638807136476618234997172029069400196736484906752306044041760894835067205369713046622855123039858116726562745904420748086743551131860598990045379621746761372650321389460310996916045578683052737401856490129698136456165207329484579154373798175923250385949145860558004199858533133806134003515330793293753151829043105603382013249005314852617474867999629825415782215472803016834298648463783778305815021072551420390289936771828262249188973058339410033538528654405144878680014559548083631233522091506834652368136551343051201642569442705713819015950567699079661363803558429867399465094457299787793403733735377577729646274385302079630644925454130400447430592402482121178277975377530889694627705771102172864831888834378384282451792535522823617176363355751855346812621430791493155997040177484405161464432474067338369248731498185362974861292326234952543566793932356083671082573031358291434431961196997084124496651063066767622517842967463984357941258694738160785107429742175519539942955620627434790529854072882561103077265267405684553724279899874740543877383416565805067338640968761101862439380723154489350403640597890604773276515244603908912056279799828413361713814614512663322636901467542788494059981844825457610927018152781445460941784128675497099078173765862267429794392467087057976654913447693132578988283438860130521183525471519430891750859808962692468302878938673781452261009243354055287936578458658721304426343679895117313509645458416643276455404660253251718054918987920306268012801214100814200604559790488271902310226933732720354822458996264621813425788783890062427642854126252343894353686744765631270301829457571061818845488495941226320616216032609039216396461654883549778580056759219662201644740832729861300018372661395596421060728267701700638903445149821491803624766540642363622382487568262224629253095486891393128215590700158622658799875660033917773867558282489914034541800353956995073450482302109896651077037270117569873340763810447927909427011802489897732388118747449662954691646333862552327598006009879566623518014415029815805197659108682183554044607087647780043214855482953839111512086309608952872835715407604734548855959908157354682808398387733413130516088208563246928525791816041018630579061476723722519823749242008542833146523457554345287168987904149182881965729684287844542679780124695550569006248148106580186053684655681185629448804693014531410023658132460043911424015841826927978487877305102844780740473351471962150786882208971397279499143950987595649492383808950996012710901800853509508500857951604992343395923909537343119675401842151717484239235436554182574319524238416169450126693307334909245249073674284509791185457103799381472852353920984644815499732233531502499140344790230316398951966107646700659294028447374385286222057854841204124898613080937349835424902373703142875405718204576818444784376226715601248813288514316880127784119839688751340317672827950360032480651201310120418096989514878076334811925217572417699684472945900073651217502803396848797205968097183353069949873001244115241141429922293312066886001004747101651900808637632652661526170790077962767203213344589941458616942246863630012788300345687419825317180953383865281036002171394310489034917643260299337998499963497777141690299640649839165555370295319797127836080833324886476518477988026652997563140896839449400548388168581494290388124229846595003751902334829537066261816842449489649596207393640616316450427216310905217882192375145172267931610789558920717161617590948313026733951532782069834708726668078261683755695068332517825669086793376298311721190720609593855925798687027529721007471068836849452266911743588632817258771296946897833526760338185316297541482814209605611253469558349622339711140925218544075291906980677265844236860915933123771840200237729136521124974717616509829428432921463774160979947389069494780578788618841355208011022561474166915468490218312132755713333297562942932507040482012234623811245876361269686074534938795660198142045623455057580800053918596225460929893395204117209901904600397251050513211603220683280841152990542721776317862114458747573796733029416558227569681751720380193075610445429943755147120051218933122324600378201872320021742528448275252913206232497709288581811681847233936317466146859666962823218714517632413546450670022677493410291095386330485004128794039533793355628619974317451748732981600098233686706141845537808962227809741568184213595436328639973017256816251750908946110033276321488886025646488482802205557863195211485528051054938455347215296105978109144923036877957315698505977501180852695418341226927311293545839455826542777609439625767786777834215362560878290087729386338189638460170840395441672657417382030194449163789503257156455835395325066415520814325685138161088456871443338583505990921690636011561591532491895846473296061565438068194694555982610349905051628932806542877357356463594634148377692783797135685009000171731922766348963116103581518151655941942700168568982009222945275996086103851177356269663733382392645592171276506577344546786477469603398965933725716096735190914489660349462368784859067558538097665974619145504481789633429491292710328229567844873348383956992354444124979501060088116198249306008902623816982608610457796182945048294609357019942812338275745273505771899100273371930107986914391598150607620307956783014547085457366837829687098357749378350563792920483896226366729949617709092289339550100698502931785921723667980133097392793062081823966077032285450135982778184517484636021026767522159846019709919991706093265852545178738798230086052362345137598176711482933741609580055516099321373278434176322235080209676028952279748747375589538122672368036677084388639213072179353319733631996056154523258021006497695388477038880141353011672688204672385012505694479350649829407587173795119013961745543575874290528311662932202056337330980165030601220699149557710263243858543054810093936288325247950866132343389441260915340000674414159546257400843816217485269573902449419166101927262324167962868146138002696767403939026363930693810685418194143690981458754719976731280600642015048512095290079497731417769417964341170830650204062072440637048003376755521362066977997460730732528145692138082677140862759379922106791556180869005550607864048899394237060572801901755959144440548480726199248619894559946459808384025558069597664096637068363236281493721272162929607429407229537972618256340808823805109647616353015205262376342677725207380379373271702229478298380003378674331622226266330317390135001098318859834812988234736359696338672539521906735702044806972664209656094334455661580021139509305744838732587306148037358114033977844882270547673201957107823814896510454028626829540470175872614694041361289994238287989974713744492213216329592927277848857219294851692649680436956186612809121036208611781328426944788559368673880998899494170403508363439473304134144263661550324246882515120983852567716668444261400178812000847986144047361864416402251979542793415961531423811323209767105228142614640698152519262508840192738677715211658591304880513780347778799559764313477805268097724792025355342402770979464680736142626092347273080039061998484729257118250807026008448658464706971040830494800981643284987350807027949881536548512824486863010234589898864682184176917905092271111286123227330254265011739477317824372640051612234999137110236004981061231449352967358407848617289598911019263053341371020684325246819216079371239211583618988618336806916309567369546604467140908384618956833149443525072689999797078599982932813426410611166004138779787246527519317655539209553352241959826452970314499890957119607546984526590108321377304154682632570619609484498992048875475086099541456418142810469850571970075548529091142006456904178808050431809293132191271999867242834657728381265984977747888553023814218659828674121176581313489214890837665577211139556601332546114761927104058113699348818686241627067441565641146438000636783609313885876414880160294892310652144535792537837717797306282799971082944115452641081052557831187910193259899028177734063561554872429733111422945168315175227783134368848667155855734791342888009745256024524542850050155082658667423486502674440827098170985427738841674671828884321512481939108254982028830396057869524190428029601115651105629073158936476343500984513408161517639862080545053091971615727228894170594107334183575482729514530630406695968857299120377631100045068682057022087784839514819957703949560988322405427008021847356358528723338132864605768174854104456315786159796658758905082348046611222267626898812590747448906280403454954198955723381224054459542168471364859896116668315700296527629011251713404201968581029204818754100838257211803394871545966979079192981664640715555076932522361075342198639768808107105130424526121110212423714754356463680006692768809253369270996480050671632432607933328888265478499892933201862766029166683681853257305802833016307326015805898354845917808255493393845274856667463066883303493709199105202021849856361947194094796157311039208722985436498287139715961301355414089579899534806016436453800085722160805061292533316020782778289568597898717210409924382268333870574227290976975742703891875257996674524297347044739151001632779501193685055814731872411728915578481004808523742682985028163782666530580621574223752076388236864517766303437627828503302116035703438529737735476746860143751112724368453124017430779328035266488161730529651800430193440978571445748302004055917404384468478405990738577948067170221806410656885685324556210446879940404406452226801476148651586161256693681873081478849341130665424420897932644433606662529363386807657050055808912787526796254879079535307918926990638365066059084896298801054693002861093752598383478795221961365748837460174247517574497709989539865891672974478659911358479426857731385164635728581109483706757399442610118993651049572201150753141375148869188139724343533384143856210442177379972319531641779259400645318961941393690424242726396405919005094382551118410267884342032919745878876962027598688835004399223623517578120949605343740872535895055715657005097219286726730354669576637246581404499918284212247089633554560456108109942598048528314590808271689273235537272630348141753799418901534477848885886752283277007194752324617662896688661363026950065114983449124720419752318610658553934241460755037710202419246411194863949991528786093806016018579492890322690904634188378753557964920285700794546484657574214286677732564669202389996274865232464561655175463405020506122661550535942752477850522598464755808569942697816978708702636463076336643545670804367772350958077011852436951212689997662589634680808491864144507670919693226803473988199164621853670898679532955224144095840046393416497488202984489056704193121167882100584360891906988441414625284696381252215832876594611895734449780771308919085329188660886663665344803629354234824990003054642889052786138628613764513497769991737701721763008459854933810570910335188425362953278739567204708657396450338334122809699607610882834897243273866618804165963623861211445034111052720608420146194138424736336412121836162465043366049980242872469220141652390421704209996568405373091808862801816533859619375007406547631621599400711519488901016394746393008517428661219251005418566701122191262496723944120630827553532780284901774300950693956591344817000046061848485970934740267973333412911123468775349286109139118146741314509673600706833034259924093889084173952299494099018033315137121138954694712213865107141977131972829821474566693243560652052192903496329937570343185222791859665419733183737632276390505413188572276623884687684880325218807671859529203752994612378305389197499649271416134661195195846324269272801593410898139537791911551602991374496245394891530763019007531042625028926778914462089195731298171050767033962796550358444168825575589858844561733058498051761792914611326290112734602584579203923759247040953336958710804968162602959440513185275280428141681871959672969746382592870685739112721697012313886919448161031602588196693640964299729848366375439729622432899243679632250591120076293850092026591130361741412527771658027677746759400067717188103635653742258277705350830856754016653318314669554205895872923069772875097707204617652531306668428135538637308799147466191743967015497560796449654449045794463369307584251089263092151499847716880292364480593813353752143596030783709670947005705882741991632555022331591533025514791853329557393228995956672260216725245873262101791879184707682370988229002913813081795036468148090122680751553554218235522804400931628284872739268050986521350295895405817403054413079766099234545937382719860501701415347770093375122321709920443403165203445402737223325337282147133757547726801729262137973123143966499358577402803167951487358479847711070675540791833014040644577689075293406541171112892114292138462372315299922080375986670820224631132132695055488663712036749217336424140577457605781406128071588315363716730249427301872118164382572061070024867806012803068891336809277562450805873371261900887882419679716254958778521242664199750671022804971854041576160797327635677815516675757654439249651638197022996734743469297164796796806921116796794362529671584775880742706347269805956087600947261624296538981937451698486426939190645952352173853856270266955645468835290982524354299424533110153700722600090917327106932447012904187936009126751313875922843975307468172791006776684193147239850228652560797450570158698481284469057973032717282984017103448855260232337406249592323616951679709324586276668577356765431012855218206278789820909262800173831420883469364307398996618479226267629275276996757740552970329438622879887297659170888987242717026450461366935434164720056546249874936782967763515949535770405677497890404094266057192514759333640313696472192153261046299972312533449263276313538196130815394275536000842464109566093646745525254186161539002540070844261772645308563297890545392975120467779952909602308986051406955014601462026339041608744208554778942978636408237303018956956324709894568857061570996241998228058969636580183814482299013186040404808079884281910911050753450456077733582223471689513447384460774745748846422819916811170059276904769890871413979180264733817439329126968531194311585883588578148863293501648371947562185209484374870832644854968284699943863772777187075622188729283523759052927357885116331197791201086116941946071069029686312621288079107008387574014978565585633530957177240326871627526188084086215473778268126200971170511767150771745071186098168312469189224461581013708123879819847378387296597982160618208905381509447111412598955548913348330220446466545694673585651603315738681536735377774342398264368941172621104445811969314976144809457801464968284059424570925397178816424178500534730908934917517033751251362692113505118299769956943154647899441448870541133181759589676513918703151971415991237156124909065420306707103597604208382934978117466551304223800638131890263247901319809658942481328164623216419995433597799922644121122026854252926311636274420614498990732376642200384995835265538066161750876106941291340015321629990776075675763740737226378356794779499710442540676556505940350185848734486079124470493298801695465409837552381877093356315673409518235831582144910417270076385012042957523393626320034391715045909388613382900841580275648206343004906787001187485298641051701400970700262239121609150805408611505912099956435840775839506178478129555099787652130416723580671429182341755472579607189378037344250338332836679378829466932640607469203945243237921132408440721255926755153227385119463061059090164149510032589799601742489112712024668860316471777026769297074762457409620799359363999993615347097226730628964930940168749064909054736180630011913741379328949320101361360816949288843830565117986014372134204569428742621508045911783977139208138711381351642601660719739797734632099958552033529232096329539107453193061533276619068966262478400907008029118948208109436910659377499453974439746763233638249669923578579718774559018710400344196162682504053129766295412014693641742615713645249571412405733261908226056530514827480002674182563190306089044571097523434983455323549276404697713192549270129025513312496498320447570548471473337343459695195125892082732892724919711133695186446235856345374238003644065203785912847171797238040252504888971767405017835302962508666617726739323500238538042925563102050134917421705308306390656054254121759059026788358816328959851254309666043224211948274620714471468589908007634779840936571454493608763502257332231435833175385962016452552464608766020713425819229375776314404229273209099795907127348413951739225913206325726393665923645524299507179858076438952515420600031762711874825743408036904808285038789053736127716954206115045686100132369431050132581182581102178420220228694292008848761175430438227633141907491153938956518237247933737693921154050893154316516202557795149869594289387703732125622057135797012684564917782933362483058192383673390521145509555688498656820986644038383396453521471467553683432126340169298936360173644690321042144402979760079541636325471322321662962503458974946390095428552181100736358916831665511007514642357404516148043568259626059847992855224814791697062679364381433290146355363884104613735362135911252369742004241288179270410473865792605024911506538416237642761991456945650525222808827611898437380186770632717884587682209742653858399253618624532691600973118634593705916052972687325109352752968843414382730620039782571979367480999184767159284041981592995158508570766261226994666883502455759760574154277062042535518322459151207374562734256289815071349603213504580132950861923858460280730426328057912386277726365062925086992850821927827419394706762438503971192055437312866338354379044311223397133141731694904800517440178175669356660808131102576213992180311510359280865787578028439309971506590331342205694835814307995020459345213066136254891000739749485467337587460627364482548657097250152548424098466439239993208271885602145845513032466892680710287408504401238614334498267889978627184016803709612837305902257421000084340109565528283744388732469744550659725106436872314379157622364001786251419358904948507200821030519876846555219045034872151391805951331342552052216258806370340022327021512307385391351104788620710537254988068989874588848057984214902850558866748879597463012538030783215053404876490811153032077842474173851332555402058969250191130233609563436734343694597034821605804024683943559955393076916490906109391792942997288189992026806779994312558940940715450735319166179128885386618142261331136492997678022593760140513316931001139968672807449397309512901207254129832358423334627368359955175834764427721114767744553046816203859276992138722393427691116167991530480086349509433334623780016001674530528573869554854906348855057035385692936090312593422391669283582390908725344502610688337668194854016859365417675147844533513691917441661127686409248583220857420920620274656752817337893711776543477437182050979736737073960455757097261402529025002536298105161365044620594911896283917341350952975314928416332092743124814026453798816220200358016838673082274103668725658561874657293897895137458407386670386615024241069021783558286889476720811958875319414630034772818989541139707204687851329410789660360932946121971170854168525027664540606481832780003232041062869467364559617538335429329250272118077036278986923192283484549156281483494902330550356941898704835598838482064743785373403741773359280568755775506472299608838675912791650930441311338811186318422852599521090910777701121527873838171635376007472023842610105024697238090009685425318179281725562665400893950021900511566529401309124295725048788364270286298711503228283078588003328396147000827998332838796485189012215618502612850542088056571353299435072866485227480424390740493120511765232328199594059668997081161426909053172481294701859663493071342017548171603981339514188983467358347212830858495929871358578667643715904436006613394343422586182929035217958728223826624766106658142609066847009795730670284815729578626504140183696596619119817238035742302820054799233841106828406245631029917526989434341051442212042812168182258671275714208550069924589560316926378790805408708279963676030395258528285766926674832888669444476647773461589449988441387681765479782543045469408590843385336364016584526603463245269061910452273980766077522228813782067422358004718590012867029353923366713654766191654915542453309384329017853464970714621634576766615014864566200671065790017070157031576774045900609894971088756726488764821598231120489968958773460152223655225388637449179632865510485134879994323907970959464220190391263160247054267537454193514945591819042129279916009832632720307591298891860937554667743703441293331395002222313270682644815494341003904153573057350388813101760416800449838180774262780219829373884129166171097384526171601886615962043519020490986528132100511432100572488406488004495258981724508022046006774276491347093026068687361245345312601829718788714685289418224030321118763901003165432320119244069903845632644434541255386121689844105991362836462367930976174738621879646310714463291615938293538954588576562245196342866609066614853320205452925260619250529857932503152139144181610545395102648197696492680086469700301852208495582119984503175612224308669396426883627799223906520162758909241275901023087776605876333413648903145818709402933260935528125532493912944078503532951541603754101312842656364776016305113830482883128872715530201998606739234818690067251001627052652034695069746951277639750302548118755053224056402743565452743581373639782300081544672763767369883828624445869319705955874080374889385883387902029861418054399393217837815717401127144229675510697690342948264908390038629805245341655170202280438372112197454511383974043800505044504058218924049261913885525932174060556000244070100205590589472323983670410370440257532988437065771310164689007670268189291986638885520271059384474334244964564019483175556938946915753272476265493582270124125635100885284338948040647112798137686514093675600824425227359264607982411665904206873078221414538233767557422707307657246269082551791831258773382906099768182954146925803055268601886363751636072998073359669375077696862733701306968504184323427325495012044953061756714274210853857584930990670946915238973867938788656607833522084613676219959947028713127728062860123627261313168292057045268379864144597809782927581670414126824245147491034828665191987832574243269504874819546556818949155703989715071796653629511600256621852283291736332038628756227253720960318751375215622195398341686273388399284050865653237841705845203949494247060097329217505304712722477273412592503029290169676030353762749661341074872731092831900063490626079695913669998101344437298668141651162372881166600379971037720533997060024694645182102791283292744089859896530938729089949593287158966812713217625870662601079087469324403506269865638204652487896505926222888841245583654665512387309713527467588007010658499577952471314540017715867465991227828451511312887870486334243652671882054693335294195267123977251326204122894665336375895583512260777884738788003034455495742512190523055185967612893140378652499749271537041422348899516643666105142135840296018107172929310417938966564783904302366308907660880426517439246922445297103956435170315302676885545470054057147061842860405735626473095929215440491634729330373486801345009168057105405777416307465732808511739183533112842577043725891748038378893859403129209918865169026922198394066896094952331028914053518734002094151899222868754748386371038822092855800006700295870266557227420685277063643500041933074563444258193980411663291186226660172610766839950626005386862649728981253333571276761013463463355285106458334482533296879428496594125922212284571117847867669380257348296138746621608227408417385846333692895182596552103472055303501413883961161932689980875267748502189155030926038193691096596641665863649909507459863822211887174869652658339336669196305747280290425904633010628264175614783822832337959358146766930373650776104009008125507701756221575536621073217533687695534621557535229801538231307182899213352009366893543913262900012488898742660649479668508227692102805379574911738587486246456295886626566058650563288891955891442631457979594278902647577661688134251545394170291066778890591231154717836300963807028826823142175407589387384538261215874842083075727929706114644718875786141834353609260601595610754874517176782761658012845914248248301835163576193409484657328681695299983896617402234563717598932570157781958719189106670077691487907699747756547588392769150434260458251207787908510068732705197324409674199735058950115828529479699931477462666943867173350722794093616339373201752409859782451110480371733819932683455316589736353812466620209741806983926569230448526464992162247596742400909275123804122349588941053612183439167430912518172642435699191822371572093415544041617896508064978015837546980037084383828903931976138096660817119024693439581936623700430535344051268369525053656989568231188718839195931394681661623813175756009066234710485637131482230835407032378162128946676461314477264469139809856548695998475472107899744897896265420252354111096670029245251046506744596301124732534407638808709738072927524063831562262430922512462497397922235120027513160389908066170731744177380500749617236764710960273653402278940555712869639903400125551868184125345043574398107566630941542695180410687472311543184212620784376756248269683103712277344301872565474900196873270172479765016570950360900421921482329259309178165853430598239822660840165060213533769293202143659536713962072296523536816474233248691982392932210164612877172086690904983636497366306523541389562695934502061576265425970384417684512822676568487199509942128348348826858039302361385342873360018590402824569794952834341163023329834404442945431004670152836447105844318633131550983088337078154786971699730765276962171247290709154491666320130813716173192330289463992167049984844376122913492843163814559594939761630433941383392414667341186842176930699296751658355294291990548500952781179794929055103125393983493099096668598514235229204658273563393988181641589138185777813949691521627530481561720334769163435635309714694667517897823576740340974065272441957322198582385391416219973173336845248616747661738778174909846398511887497310562696846485626893864244748058030470029590718779625462817501596425935023014868710181063642216578304168680526579952579152848082543822124215459468138891070454198351925340837703674050606735336308514119720188414329225471478721307760301621872500947301773164068974309047845567111346259048736692549972734134238951095596013120422094334319412044167264884462851529629682118160768708449550113324854387429174262377891906266770591540842773414217285659002547176416650590136805274875933441768360957953904475936025155131408146451396431449397023731924972501122834288370178966055081198682230436005217128191387428728726816406676221640882366105338682847241169781363107083577244672674160853767587999599101145902675166419952058901096321747854317391881177640843689132163309301900861587781255659296909663558765279022811308910303013197457135287311696781247091940448105626464720434440118902255399174009696580191413914636568179370618364904529467953238830315181095457867867292931752071375275388059269453973616349381463778376321004206703461591467346019978505900806185925281288118837906597692565819578189108241539946501330514249030157948145138663238725301462879825522404180362840025973194031840324233121722476627324546362590542956365355675739630311515160071227533464805006794673967860756878032873403617705958496121969471201044030832119910202143951842743312536457688498349627424869475424391500333305599830232386950601639647316197224889437087339000808385814048722663937770130359001707036521560492916958447719704836124513750266002599418936651352764490375915537431755257042639595034083739958626427417829913662155778439936265788835923165765612436199880736577717181029575438200672156803580894698194595040281627791999465566230567837253122839472836438193276057633270065015843471114020656864229980415895505902184712606312891170337928168336709992052909480483766484436936243221044412404766207669654375373736000299339111209628329545330828275660772921215990524251122060163641553299255866282214875074604752813660316382405287716962150955739943160351309715182922534282809950799094678513016192392368223291441745487467650713524583308611224133740836872988321674311790182482459507888959912937607657264617744239686536511438176777309610793154720326795542104117474390834125250877798589031014398558533611055370316400362504934060827276231904748491456522205722122432720378319407900016396784346195508068113416804745974334186072221250757924825248557662487765840612767802605654606315854608102486829061338064671069398880268336931318042263565180434836746414837775002910233271650902572375956621521124297285076668606366556733715210897963491048856834369178102521667079984420085827041838612792115086122256897749276888561552858403266741457929584839994152407166777127516539799777034425337718007655711010973397170002950678463450870580343153417863574701397259395532546453578377582071358914402901876114617022130138147698382168232651705030822606109661687218161279179207900306922209954530831773868217201739301178053717045497829116902576129007022596764966082542044140869315244525361499133220288157147604442008281168253989427519626700879817223955115408729680901216367819801877391878026019288131853220470235738393179503173053087924614462546551176148799509495351306226879862643972427535944798060884787752901047933960490472652614370982643798954300625939080561314097454519651368583881470649319196921209812991028599734683587677721082060822935838432069257933882660110915693401021671955386377912009947703546816460976769594298064795502222960723940524935347441743709125715154889598848234395796101648065940752521524295389966392465639793086636038983641555106670819286127437871505216066501271688233710417134302398223484084405882410357375613380548956364345591665673434901471472815448700545580933867355529110463461933908760783359154988789167667686314210825758871672861935060368132891652469822728120550425280371355470966316736159144098366970002064162192314055027370779593990807077371063886354648554641814579278602008149898765984046282974298925357025679504122229043240315932967075875888919705375970214440470199727223899623042553016727785214260661861537766765448892912230779497509755459083891232910013703863869495831064288586043050412099713763524845260411449609095543739810213671346797802702606106881120963126737976547221036623397332633169418921231393872401539611671630836212063334433750371609142042881349350704095530862830903542234503973710271211506866684478193418902273009251205697169367489111107588361496043752839871329048145944571641756941968121368549881861035392230637516274819092599843137350531407324868654078094975232507124417298916422737254423692152605090555613274230354572566705333212068716383565731994406339457087616004636129862752970962479697410176475419017354875706040232924337257071706295692449109032762612016128006651017211598558862054828569988439423543312662209554889118888132558714125555360904448245309879473476744449251412856732573534726214594932815324386133892298763024537475198196132394767120319586972711682288768983796622875814700976202390308701814756556909763065256056800892811710694652392752593324886018326635246739655928265571467056020885102659904834916085317235227926129774293096103224275928989703030894865371406464757416227028189466100034837046219705902497796992227229058483880546981484144948360954721421295555107141993865150353946780903678659840924072841949913939404831460841307560173379392041525805414256170901628132413278482603362469242740577445151657159433357631213897523544429665168196972944329304628104808749598668490949367114817288993739512582657627519055097101650108004494310808915724129215596634595602550978185840393448023833660432883608613667616119781722273048546500048799561894540712128482068235578770360035664993692881216090649780587848417236715780157422127983017015090150463102249974839936766078461321631690266916880834978012335680170006440477228790498197634853568999478902088974408830912730728953363051654589265794251636329352844718713652929830842866345096490400361220014470180467287507182997712068464639253600636010463375029849339821753752925062898328452256776016725697481939360159911043535474662880992747764781469447950655792268141593040131947450327002686506062718619007419282846325935915085421888949333250210979495490603632915900977292808043538299232251326116502220856003944023826902689547665435627651520205250092742900047300603650428119946982436128866031030346221983118920896429363101176893718874175324871752939445083041480454900161536158611707204200792969524528754866047097352564527923394468563683816067392511538563692319246371813045905545789287273540165029941235825774578589114826797567751499317543816728792012747885694490903610467219119958903951898555756796791672319554084089871258013860162508052155767103859595063160913185605892482423420041287433238824705276078631667540601309545973712058017285143374139662874518214344927421814672294498971780051331521902314301300579513319208021567424069502630286429068942005872671299615014464052139051760259973595198607375101521704513135045649326810301469150187691588820540173018290057514338432847003893005366676804830365037284867741564334422353982976537163477323216542848251213466274658963533816847053332606332215898526201996841966430695553282919127484257775040258159137737057574568423549397168420494431313676778600973329881579943854129714977055367464087946976333285193139301039677169865960995396205388588353533530131364001444823350527603466174538801424087649933587750474873094385271627984482786120932755260436504392388666053372629231547841205225843459613616226616921679799475534977947818308170990797692859317561207609181452226609984379449302799895780300576400158902648916870093606078080484924904266220602571872957722904059563276031545280190475439303680010007199208797938038372213681394228168900410770249697909719105365263231959745804783125279630777764198268481891870113872602725458868375133140903210665370383876891725989243273966484880394584972170973049587142251342187637468833716051404659009737950570090711396474889931190054053340355380479502149857799440389167600590639936499754389005171571636723290209770962467988588455089370455368614123398332890953004157146313778018942569474767535307637969938691585426631265257776779002716364533580443237673917891708229469995186943168197862359408515654583781936434335955024065415836087760151430587430455524445219021300430012387073677363994651822772147473751857688402964971905643827898298809652911192050106131810589779131433714168483022434741320717503331110426312431186315302125744457242129659441169074240795545891072911362194451626560098238321641743691848465041502093106227282820961231299658482284401150439281710343087358529450955990507339067515338628448955626743130392937141522790659450108524236384828528534587462362567107517432786068171374293746108221105118421584571531771928915460785540169771786219166332407664874852880901611046370300063101555331079838559537588492751363444637459286758551282685121747864664361183534422468908569114981228820082449344502435215476606005739242868294616991175701423407905165787367348060682304019799868132994961944888077962580306175512196105547794133324977164879896365219641819162619574254349259371917985818987516401053234125600150917505389116940445999982263411922472004736088195708102441702034989298480273806660712267654651133340318447389758886551150899148658400773830689889759595807757541063034967409072580179997832986278502660592420593595539299759675634843826390244563097892667484349735911917692555316738856721677997694126714662499672913184424935949290011052811697027904277627470158888085048867991442747767126385339455270424015347454851420194479146119251013140527412156943173553004241067274862170893797370024045897171494617094466697857852126180162480262046847013536236372249951487998030627637203038188998268187095144364779409017363490670413222878686676223363384445940219041218005964510866983639539705912819236186796661458059645560423193675346043454600092684582902560523885597646631608307631107649541027097849994726158945578559272632174240154784516231879546496543391047889926255529984077888812178782124683633879022108358177341917353418231254877413162917947033678130601084593767794807607847058138081163029889443308903235981555708780595318885959184031770431777033637704215245400953853701183689145423231428016315314488869707988283818650931744085542615276262027748471716551449174976924793617374669907639819115440265196391349418225181012300979345962230921117576696930322586748109705232618742422274590421257055499784376905211495538698497107025632106757500124703611883114336314475892036729619377143188666712861333232837937190477761053100334380150172538997586419518337297746755432438288506032507094368730354308488358720773739057019290477406639587983399298344027861231717141077356989330110443861665773000417524936731643207547440290039964529793706131823092055402596568081214018347269629939364691562592475752623303007093750363420009766204346771802440460451819687942943716292881361160907019818249159524612453421917294652646056099847633937039784523766138447313394487817010176959492311041240716620072897568317759595462744054717377870595589808277100391021812201858634816161409325695634399653291294410258359021321488833800174913980008034029421790047041915095641806834037505379625261968599465679230301157275338130440017895654495234575757649659174861725386142379039954671175900512545212946745718174081405507867633239253085207925371590618561689800424320263085762202093614111947934999988441971556432527212540924626260568536910344402858011586312344047392599153562754728332984464522684337105330758667949631640846397366723042442082383821798433640568080723705259754176723132427133671785796920213874469195014705946277923758574866656589163520944978079109328137733919927728459531419653873998125590552788043718779692745504481669605672859861477477739587116065757064362469080651185378829993939432479761089920764218827997245093645618556991893286869169165056704927950658657761131390148608119126136156039893930118588438252793631146048643439553837868149953526654203973870950494350589211034920170273340262528788496634973344319585219455892663548590303631994155886733056166105709496785487679908435149916910983987243458507767832430535342584503443826685617920634968606198462032999193883181637649473986984528697697069423773702096443157456047953832021855123887523001223353457385418904296155563020077430244301103583528489950440459119298512362375743523851832039216582031615734364687021483550975312568480381910496892657012161327881123584498186870153026391095500665283619242648326746257525887701086251321026410400087309744973428311035851840207652061813541778400682456502601939588911810519896524794684508593782289535819156758204442721932127001741937589024134539464365704358378815628290722423940941667379915559659729044634567655090852872002604469361780534659648896576834104573546451167288751879558205896480456538740954595174936679833603638685599586542156713492077503296183378050045890679094359615084141129967444275072584793267424967970435063686359015179090495040604115946171544614692756912811425405472005230817135185763760723140726379971451727984738450863105882702391879364042583781481436058014632877037878012582546183625556807678803531444093410338026166757769844922476444905225851990073851353148801217669831411857061022240663350543980013275602570995557010047726728818515688292372402170412291878196609520801129565907164482067978008153190384630207748507237513091219317856285481538586932076698104004169669214270249265338658679203631272312402327660958275748046521234288185701612547191794601568471652635032184851233586963688520733566780054047087605972816126547699205285508404366268486462609231163223930041613949406969499110859756156923123749459376641603924030423658458902652088475373472839019525871024402403758948069694210801134776511552744094983915123142556689967801125458893139998354574408355741463444733978732162221702748450769144970769893728205131125038383144692219108413256523048717603424469481668765082634553656721715489538992307829522439539259328730682605267409174792833348500939601028411901002745829629852999580227153864539211855418954605377922204942239085614521236375047303516916019170659916752869380013313677360272549676251413289558661327168512158857050730505846242038000462103495012643837201977617763163453953374565458294617024214970671920107890216301057426653561896751697243736759301833768292135066052038749417513384400966157420074930541112037680284018566187522497540154754838090676315136228058393674232533250846545574344070096610256618155853407603301331581017409566362835968777854781894131892327080522436093029368264313113572910796556839244375689939270014437441020034166977592085497215607948198318366128703844906338092382855296387220717851369390058441779642087076729246065549947125119003633364185470014572595948325017211959929874719699569070262737529247834551626834751881318513070518421928649505523221799525725327391691379826127384666146900150126022931169017090251282631731755222980623780264018840491017463529988311731114821060956105970695711374519992966032898666501183543161545716530420522483818958124339232850998595947231781712688294802956723164749177514232772125727660573205704368870237491375654318957060830074981095955274076986605983840186978738808766344076494754303028736110735451146302572588711975925686351665441701142920477805964764943946794795210532438558511466608018470609391010972223061154803809233080914999658343153994398259174423327022238184258737664431192864115105216420493271440076890798439031019946554221605267602058294036841291878033768552030658982729129686679591099252186775000620257887956395837768090330462777739197066557368345319416851417784331510688941075975768050575681129761404773351784157343572606372457801400385394096331907298510915271580519512104759562451701385718067458129416552149596227250166103112401296937323094983525749534804626144736289819063179413635183731502815856181572155088472787203116034070839980938186702483791339446002123101214962058097873655807509461740286069536818185207195209968664105186192086879788255165027446419275027953870301087748488457257508620737216390048769556226315390034063858124980728645978641154476377351203700804563592811276186621133064085345986126962125471853713950326986389634454365107944368003926703878631802990594333085902598819570213372046217637042994402701411070921950097937054882454074709207283242934596836764931877765288746872471374705459380319698255876638281969468263371665780400697290121845431206472292023939280488963822001760286262955326783769501652338963744291153728762543200078407708997931454318236077252194800539427926859955031697137809929410642612617708872666647616324114163569546141933860910378137644299077259643838153681279866636552048084581478252470725467890783214479885078059042357900323978023499296809274395406647211984225999084222414308060338226546185005771301287270308642426460968266042991832829290507007931590448945807721969934270977785406746148927179553567304744990737003057068632615176069454227651010931606471972765300214986570786749608706079190862983853690615614354728254602522787298306223864893054183531076827896417155308969824150210213218779882719868597218728921499492620771090793428758455301901769300287698491427572687733749101510163543275601303303207892652875003371267981395548841188740598180661137703703857990232114891515372097479523744239847685075458902922553091465992451875166652523667792791513709193640644875465331355067992245724060513778955328548513231807186891303280303438844890614883941606057450443243241285927298207528406115579120234881507093300263367140707055272830992006826767173011778103205699545338058970480552424720010290307500113709143461972213473536612974072399944746789799690171607543606532874441082736869703555168888997126313739255351728415015126872853157201390039411866241851126579608506083559302864096549828530854214109884562549193363190690588138528475267203014000326299157082608654274736495827099962696313768071301070844110970635173074229660256436614791377400622420680747917117118939979362601378058486379262270367043007805186372660139162949934186788815859195572992697628207694411148328880153628444531277758515311549468828233725655497316283786432506434175647902499509482983590747066671953298242487804413591323853708166512719706359488365033117082957671534541632270854641888683836339291812031166631547188951028701615050510104723557845625931105609844465794789646788957055379065691564596675245717357042452989417275449543070240197636483059633546884627753727538456744653442934847455118758977861755682761542715439620738542418391591224312043636784597149946633191780204945069764434499400539288270882599222102012159620097064592388647077561889358187378143516404572245842948573474027777175819726991680631110424492346092489211610992465806307373094515949696855122551763470754528039569023281291761332566107417629387464851681510564064507427731795584244741244785265334477445153117585613992764640142825915543006013076289943821173725359653765755765964162570227002960189842452895540349775175621375589057716019637744438633039927999521988589746444986379402483342933522898684051632785011229410119737544784077487297328058088678385222512740316653319110080244874727380537310242184599876122851332220565609022353352548873328978117812856596871241829359917409183783359632349196640338310700029506529716006739511844726678905031302209225054422985217800609499108316295488207368551460145506184215120781583455473623528148019156721101811696393459193533629796710077244023385141220444752915480886045941081816565980211230070135147654113180939123667258028096396455757451522263047072034632144649489337095319261580638919280032369580503525767706426534484211107111701082261405776460997017968634337147355294404826964999258778251832765047404465778728807554895254397245316748398514702400277156490209905343719949682459469799004683918277509107975593256433305496468732154356716274621334178346900728497126460805125843444396046992127273571739890440691056243668798714341959564542193023941685037018348905040602499552095418688143802900142883556562446335523389240039916001970994863421958452287032022293525190215846115736683119633126229502061961924508412187802970236716857135403020505486324863570915892077932790461402088741061767152943862713292271805156887820900872236554722767431751572236912890062853100747660958056132269064562529207223033151738410250493303536056607494474576113408269901569280024097508650787314346388290300487469432885780925004645310440876740705303508430946821494033609446127834302685923538885722042814665356324307988259753583084011660937892412172819029927212572674182015507646626058642063757493832278047330412359736763883096822313747861073620992984029548690050160922591872750709199183478436010615691129832410492544634901853944560913977953062668628444709087146115771365824908815608986056439371338371231265793584356665004602954476633427403094455160842580045561443990762661039581950404206960606895285396223982410219036363886543721759340710943798006435378106653220353918639563064504483080089630610890668783332109294364583059990334878516743238044146758092002434243780404090145358165066952049683734638181576985348323216254959919523540775294846078498770612092312575913793432599948674479519599961918942300132419657217638699487590098052141247926381789834181793966747583946824575223740295106941172501766962592367854174566125342844554231895583750654981449548989639445655405045899708103184520366877920933488127417183478783868095980378332963189573709521908873454591718987879442789987476175071979373353903182764516874609561340585967625876561746658588458492664585777579808353064458517219123541141249929052395520463508423990412766431063776167818566886601649229598294499763297469806249313501100898199446251124689763217153339815150584360857212274680019270612963112710834250102587369185270705424120661357524986470148631979567693274435124506110743419259848369601520017974473387132528007708499195994598743500840931780449336371862207733993105350071863262267694032266405406264061769851127147386099931842279918295114501028690701449933586939880820983304520896723784961532732041925909450734651079164267969551217467815618419830422107367668105400991399054990441610999274018930854656207477937523277096173690844928004152475460322648638295004850841096185859573455257256354919604136081682417283803859309715583341084200333196205279250166764568764847586970599744390984921430005075690257110650047929767724001108091936859416662521636374101184579158822530115750195535116587164490421954565227937006560397683778914357762166242906597412892307571838621491055743446697378971766868705396802469267542755599017391662153685516673048620329820002114630206016732359833772243514535636207826909518969768466108795268169501744612585336752295006282634064374931670179995606356311363978207594558347559828260613032610697963748041448308651783418240176745681147045965885822389881658629660017289029046855664827336890388693245880474345652308569392436478823644427341556126573550365765964133596369222122061441495444656921647425412928891484148053768370054737939154580080910464150656836733456992697107794986404464801250588331896193479001161514168584779531089653838046251157692750314089275944076410294277116851872486008480254045846871693388647255065614599921220942805964455932465280320184802829328930201970753380355227551334319584379070572678439102165756088364765411439195159200039304007979607064939500650107995387242038046759747354941849235385873435797531829171901862911957509116150138260036388405969421524577493576627375650216680649674518834635279167030050596922601663185933811499043049271814859322739247301177049325549643957577325796043129752140349840152181644217822804709981049558366170893787059687222837603889416540735960467711596603870489910145343328100703349714528620693691294215360641282854359774119227090682842394373268978848301213430158991672977285976392775998157939703875382541095195566427674205954117197126487001015999600254715244002022361792911501025794090136912854449863009673719611916042043902685933625299386989268930974688539893294464970935138022925829757987517455849511197244094303340890448187297755002315126563716812545755834693055615109023232658337549149415891572980714541519797102404893499790472987099305070612814864831407341056121538035191229345317469906232011528254680851633089384613717168814090744253410882270500191504039403104819877250166860040062644872484458144240050871441789595368733072900967148234552110882877153341844477196601875740005578021638543587465245572009818015371175860382325653936999810514463369518784481300341117443119386139949427362724003444653128148710685188584901714009266586300415761303507652010679809485666821371200422129823387498908027690085304151959802704946643215448766429625910301650452862367962850393945348785610118334541756530846834020833273211577242208884764073691605659090650508546576059118937731138538574425145623428798529681217340198998454061496962346661165921584682788580169414927419559608623590309352710873540936102225196695930210044816399595329414541357255686678774305459329298972895325188268567329257636616125726132508357651701752773356992751877360234087062860974345889257384118020599384149424004270747804991990513494348841410278169722278103325514623273083018672925638813337455999466405973762006387802282880386470111576475047522372052985637448944114694967180873174406683959659909087288155313300743951520124650494986924330794691574844405635929359971600986419530070516245966611528793759628398142009813946260461475388797824356234902189935584266627387702185675707976326390867098071761352922407494940267256560046505819430014398632192925369573955669842398219903282519864854037776490866130975271330633643979621149089301935275658757105596654925464348771506364535141698508518360343572191184112188380794126964232154397597336256182597458749318732768394095015693415916989884797845938362242550969493576809174275797310746551986284325351427008361691832589343495165008621997525579402732740822186393579590002731228814598049922136519554086570084192541816144094230385156426609249840344267112507670062257071134247061021638226340078853718372976741535397853398922878627159181043873932589865585318783678358333098214447216460895378809002631908480009059231177183389805516580224823693713669644928280403136115737808160333559394959072557749938758116633201805105140466096056220721372147521509817857975150325266504094971203208387252811953210664951227044574423950141774251802124348516164956662473102905812790842928515206129675668786041363686726582166917822515844003013785389617734637300101938033197736275395762948044456504379900114321209679472500006042845653256306593830290093360676299097240125094494104885673437693606193419817443792200803116542766563472945092425643725825138824585674556013104975810735137576049407987611260032736714961965040319172763501534758614602136678473600350501524924600458782122495701914705455991793301984564340429545882396349966329421208700659696749368593349150343874031571463739973116628134502331793364019599371942933468556858366637192072239184025872853637916015390962093454160850815867536241555800905659208219855625929715071846345269970628640189116707871837582564605355537151328019987397218635129153059693215364481629937506704035783296016821324346870938552535430708382230275839522662833729237904613199237078636749885646353053110918297220389235707012698201481357312650330763411075550990859839071446045726618519207221902839977846400534268255693081773360801167252369883437237127390234609878422120396127598846826532351328062618758926642339169814586605542953748942687602057031467804475780205334402108697917567573837129322680174832869507508425108812977998165570434615223130980300804137331402330001990478963516085778994327438654463155084384552124079125660543581632494446929862491197851415676201788097044544516382632997816972118499932896887794737060984874682964463252276345304587692249647805041524404218292189683132922445968245050855833927888558837871920725486546108024300727505734017620314608109220743435329144628146760367853120344596588412296947931668418437101569406172584696584897156573785403639550342314589469232509192067669450518712831506250784246217346412573675162669674357387661072991888135449792822071533820032934829588700183494388912837265404193742837005574514817274603453394017929794397820983242073663480072515565055000343131477174786360092811383206488035241375644351461947152146599211875016921848938445331918867563339505595708853201718205972141749767716808341735011259717019609845398621558968751063726541874368276388383011910614318523266760820014025782756864533109670256861720090753935346289175880571738901711623576669560452426612252607420206157013643886692640601456515904062096781874171488499076423259848300537844899169424724149775997836874352522932870650235862967262495607449348427446740249886837565282899690548893738268527764295510777075803169438577478709010665216644512029151766428401143234493697849371650173753844012237292543194746427261252011703150811437056130883349012744777536389735643972629362537869676819064513922393831377750673641724500015836753154258668684410020457126530599872507157474051465227969473514417354787650703749881172136007620579523352701441428957022136116496883828696904199579137036503404268191533419316784267726333159409434654922486311647142278261221074999998897418327744926033052431657750468984763371343763533918190804307684349924796161516948491578624181261893319964015807727209787095312712424313972673180655704757697098979278156359965089825849959824057858810774391664413598722199082258297087098559266272575000650902665409139576651140495544127959373609514045754523315418790982878016308576842844661105711097992115899287160274213224075690876244786947380572554242175276105726416288120009635173854791493639391791080594478295657642510579076706200756490327545361644082495344553584234381683414854126931352824317424973006026597057036143033725006746680249492557873595996665028534723641550947459736310675995256274319343299630902630158785465056803491194487402864591703819101976185263439329129787116349469780365266861335761386115644496508129175245518093500067838848065202370761272783843758242051498561288781071620535260912711364740766406729021608592186267411576717993276358328125724420887605546695361559902534833712684360554999527969904702821401712560055682526940015939162716525895624795156793457993712332005122985710022649745796635298366452263678274951231955148097082148180135605705998861503205988615231648388034999880267215589691842279242366421794975047338225219341067929677547259892835003159028949420738103087686651178454797765962000615817977268202220186953333460627815588315092979474934586387489291610477734604979861982538250646734741967125531608466615522659020566691587447520536610622640533671713549501159612960972104892542350940678744111632026709398436410464162828811664095473367730654626416539097340841490329234712326458396288346545461890429065816833207817275430573786724352287431251358558545557272023265936249665741522791483919295236272012897468578496009097657006912492900465494979746976916186247930121326700751725131070480876096915198985171633098505420995450841896300681542842298073564062886953384020083297544710972770123300518036769819937890539847022086794951131061345308669664977630575325133926670434404559426519667349178324356380187410481780336774994747947484396588583214186273062380527019797172487910075029236886275792293772954406679876043532352093677431119363034172892998062880495926545126327300573227556593878578403917497092621132344027476851366893274675928870033382202131941788486802475606104452019593589815520530561265113437852216426782373001557720593257362451473105322324852031444798326298797391570013874288560246108334534450584086770002020813270684062307172205395364433472792460134071839240908517564310678265550960479776878229760068989181513765082106275494732676530034969292638104692473959632399038648876972997046961525917008627478932221526828001951082129934209673339050988020582005168075935255150273811921669146038960655999009446317466598836874781552587372244457200320970018924250161426419291541627073495131765445922706213908743839984942832883346014042764196176160243986545728263479998285532500830222838630356188590310933304055423658695349075953986657216601607084518391496055752057627167613152680487416788111320180974652173865629736079051031606162296005513896993305124389099850305597741787522439452442780404086111176463017603080940547697479593715652703103892886747082221851875203462581409705269472600936822386692997437356766490221323950665110169546153651917091104039052401271626858894323603564871961319738642909396769378670194734838199683508294987133062354298069827103333641211099030726211116611505449133370095923861590045985916433439951712004463172490653293811336927764522730368531966677853668118373990581998359387288774373313971891183497459481566200016002224063503502441628546534765740664717717636163358085031653678520210602522850849774815213798135005013067900851643283561829419897108610329118169858085081762456445587063335923693008224535758938209014742784093746922699453838511505155414688512229855435648681767410631744467294172218772876492372312925550900744245672538103932076212945956052570740418118647671958512549472579368456953014238533740778805827613553548088863154942723196110928107637235869425600418845079064401356351008712407993782828171811007356784250544761183959701238402455249551386740566071007296553963886862269537807895108029375775779292012719307730644091685753746137923738697713183073302154240734494887904165895013300716960621873721624374593775490730774308149864984496157641973262784283380430969801070408933330068225465015769954763559711000945087680259447276956818173829633451029512615441470291345930799849742914834248828296013344568525400877863175059640834958350636957516671545594703984908376028598498572914255444844549220225382179010655203180900035204966129203764406891092209478988652159610062458998856867598528639815979836513388566212770766557611268668844743485928610903137341634887318513624108146469800790048318297350395975385026443566128811062248280174233186845726654169524215103208602501193757057615640468713250318982055042992887433928567501186975142717197454147084795961332053574981573733410214562132464932487843382823492181340075233654414472661329987069537864305767066715025914822847002690873368507640490751794559459226745568731655382837258046590496915059912112365063775853204773411332380144831884491555563756918827093706213677678476872916007269932459842642301339126547121851188333354301300798326781329910085663873976445287445603662707893689453588807187576024707704877117468535176085550829704020935923867979725079242789836403753994888347251960431442407690430673643759052517817298473742244356425806136288636872605434670655941950182441310725200760639410744258614798723090466433203797813930575369852940927993454509103194953667660947024551860955082120347251218468328165602280321743122153804753177699706506442653143576381102835157232227094208105942992530169316276875843736466297051644786216682384564269681786266070249568168650088663705196997286229219405725964251899305408301681246648767419604105247385030596855029285997808264431915686178967260233068426301174486974488789845154410513938492888911995497991027654347906302295951153381249349962368167619965783808842983223050021509280720747726258227425192560626059446981787426567715354556277015861633780725368811131830518118672129135595337737553781990822358129721260558312600824893448172989691444410712278601820572674686427936830202332733862484112075678964074154003828797796278844161947943331689003392728002874374378355293907744980119854422987396051571447416260644746359518208184466020570351530528328605219501083483861792299854369937413352294843511002552925850283585892452118508203402862168554809514005923768335829973836010603748928749168042748728664174216716271086949585337541044042514256960640428847853290418433075238806051755603261281038005684988006662671302703817493180771642792011308211721158537614798921951751325723081923698145454162125440847643460645868915613563599759934895797263247940797541278616167351150134559013059138101063299279808675607188576642836014912277788736544798693377762136274845716575993722996045885659691913335607628006182108617250024048012104894872377263915987785857533279234445455125143734357312658476083940353010332717637313975281881170400782876282469340304716320126708358121665388369864374683566707019682259057871949347656109564422787410021612448094954994598747099209350828646156119539347026427626629205600128429539778361053896946653711936836228596531490491827156332388148674114165606010333622920210008483760900460140207559164539632429293313504815860638088742909190126432109528610219348734440527361661902026168323579035279381573273827372857491202663342966237395894603004606454785310475759252807222493519689656773963981272676326351106826303138111611415940926125283134241033613924833298014644159759394710574414074452000493031099029781473200890642488163390765774058580042632228359792915155219464509402472488885687601178051091924649661500300698555420219679593504681817889582850776324994880603442759623708061184585790095623902881653688396779293804815757926298397196341700720400461837882400530774952738108928430112889256708731583349363603703772180739253044261180241887727323437452448915854672084072959424158682870184437606093202258405333518067136391042582892090824448733150576695304994695645809236608429500118952960919819998886921842332621697500514199677184235472107542824684777150394730528104024278168023335983874453872670120134506613498962442861664451528325861234647313757099367377307071139016467200052623236018754260847837290460412744184603720853353196090744867481035390196492041371520990008329652157423546066745702416412606415777201190598244678505267490794710876032568624533742673919515166375201711836597581723858106545299386691188990465988969812713377286235266006223887340502117639353014951447199561277869523636756711382589490383352590683359477521437329388397821071121650922691076786742775639101150323897905560670260134651302992392930053499315698881313109331189943916340751733867839849253650027931733677680548063680975664911371734034198239659900358300558835847595144573468157638877950881747207120163339679196706643018669995849799452395740112818407651416734287727923833375666181049914164506633745366108800148275647126125941093291864421036103450935312095257743018548882293282041591126589800162405439786168490235564025757073257058662529000881514136466798020808624989910402556438118808095931770637026713899417459350373420712472415877694095061484443753124024055579790628334689221192955264396049798024081050473477148431275340055958028037282599782211988858952833569354311133882179675303068442203090904608657955150681017521838053131765166123992864043061882396081083188001939477893423898701064650876040815569547073967357758997055245017585005546982481425504870556338904680334760497048979856652339241401673258723061631719271962599584289464480964212021415348310225666007962585336965904369087246931272133473832289671816840628624061674981839598175644221757416958176974250357051934033564453639321748102218317615348916785030179280931338861163746148285652205411642222017969838800365749125770676263167924309241774549480107702514848391556085465307715266016425539117019668006367174661935406459795523814901885217985234917229287376122790490605435280472971721290453851211023624574928189031003090532351869484873774140380441048165383063299754389350690904544614644499450687911090835674787249525504329030642020953731522099999593461671427917273825535247095061150083450426951742944902348518387142349499817695092159428124725423878315428724142304730205870642277128818107562606434813108851084388528104648943367856630021257230855031944582238987529925683935237127493210386339366473365968440353534699024957562705678124652047475390960431602123281788988419740340398041443541093697912361327997978424500908613339088847663370655920261930971413917575920114491305794806971053324020360028913540165323691755947638991931001131916461259509004824328522999492347550018648518592495467673581990030469659634130156684141617308179947515028289812413456781818443929226141334968705887885326085813008793984898820408440396065052081229818773441785464979457212359871541281023163234868069364611558769951940604058016819693053030299007776333998294287418268444696520269192735306299102163830684153135858345488847115751859187601544776589651181373137799722021880021714639823101617343358379443741067678586319910869252176762328607742211733730755068797082679439733531184793762708515752780084748724713748021379517244794055010547414567495876679868496860861388288851821477486358092667604652490786713613927226412948486988642204175805517200787672243735100885821879765988146246026359270928237758070669318244165811714559649862990157274412079341790869112113386615455722105036208064997076793402336727239548598376701416140468657714888063740596232518927683164257804191278639944145894934287299530567342378138611803372929937562489359688326272607073293127960166198499205638435610834880756155962162440038582585191341113424333819540073352507103262023114910843193081503130646146096842655813182329001913789742295789952237970495655474249932815172980630197384558045482816412879460512092567329529896354868543965366390352798786793571115084035024860960151496115670267489457961242076785173757411444929456691390374943778217596235072949999811670219532769709432159685049523773177371222648340329331179381557366711034090054425722349461853082271782086683719343664232062110901112519698201403250346813562624526726583998082956363800769773596571635107386338221325365764654018796804936923187861719241701857073218695958441860813650993169416579101543540425363653297280902419593195812011260089809190289258252219872308707198948151228401925230307721278629458744625361717210795251730843247761967988109796066948877417614206223407597673643027211851226374608777835197161874637467997194434195351235601830533845136764570236337004006963750690092931127419040791879449436440677622108979366000715417574792256588623769717794925872235014554485864848664166903974022800206497597015769166879413775061549799026317574548831942587681199418000703844607573838192080738256267896257209624378671721729032942466426629181978647643976549246459637204053222483066173732246611208100639710927987674966116390097288191048829458977541167768091792535386941171502660026037338963707438282769135302687040771337136300547433408490039624365682950136063393440874468664167140364368122528674391435575822845049983918069825827290410997081826120308117985440002917340124755338732940602729131689741148807495068928417570764738549330774164920398422209696055746200985632886593430245476897231394508603039423499753600415903974479636289103444800046626636236908367508660796251533962249884100427994017511716171897776370739546372628881992680056856352111244863814133874341710372114603809481415565289496758590089430084058921334583497724273092433611059677859424358055567303666568966703349152876220417559525575614912237550401245328669505451926654480932957718533235840553159162005137195400952784664015100287148574953210468980101200443711991763348797761908984802200460750032770654510267044782395613237428741263742848175571741825940534883791871536403648313312765082699092284981526372613797247682250472136950969453017424763935947591339933162341277323280113528683279248315324012583268758056712540343122301655872677795069041756747967014043404202685411774213527211270169062455448614341179507007822874054999987523972617907425877183086742472205563901670622488266544280673592260400388211099638485553125718388152299210517500018696387799075294159429468457999367716640784278670033102934838910610343187765808974050190240028526001798020755408546766189273398705229073717260489705032542606959783633292921147764872979067368334813508048492398563907105083939017728038548105078060701671109789920143189690263633060657087204329715383814313524294411548060059960695455583416021065110861672202621042344513942679072714148829755383371563753313606276795987043194649443993615407453253009921677282502236306535155674636566695524657431016407934513540103896189039796245371734245680325145531171998881969491988019361510082768474524037847889587564105956733704618970773387433738401055050521782082222274009664677707429195655637861518073915720612489528144379956187235202506097796403099403220210962570333763146666465983226958503220753090700803631160963468276115168846760923214786291455314058496167887576535073971722258803677628889216530215295036021534865173862649506542680937317232373081091249366671080991374116441457118912424035063629172029759049394818554678254801593636251944903428934970741152285297012003724776214404783402264278017804322567200955077359712374852448778580470526517916803013278287690508342176750082790467211192991332885763993803516004205687529089360840639113413722139273606626849917004539067035917958158748016243202098207417364152899379280515234258615808186925968101037839752866777023713340500601362815712832974120806434452520200721849349007404008420681565598788799672960075935310087368312469719311963065280090962733870912594002548684881841930490708637510415432084491090211653120747979864485685500829562543649781939840872044334034703596920796343273138522160372871101075719877266989177969179287432382786105500882992879478194686498264963930761045031149240385299501161476184851646951237121154169569228372189825143697718254961698066747854554918260839077988844822279861876093408247094010033639870507042108987402927175943198642439042547490750899536808714277364869599092820642364984152900107833198874562511413976795028400664454176021763767850692945782020353669100235200887896860194334226475529260995869367602992349391313094491695568989383449250838015830234971441673853026222044500148166267345702954798683131094925025093802277040545509033116408437440131961951202911169396497342196729681707324836796081117675765893751970647518685452003897821388270300776955737189552496151337092555836794687342436310523230925838662906216660449882446213029270228616750125709539889233327681493617776639601807982802141280773092560802942290130392333206455550673205283399744170924341646275225592494141473721778203362570400568997281810183355918555479781841484403340246883328117497729184708731697652495682326067064395251877385778387125441339080832881233052924226671800773917590238541552352489463589981426116487876506253632441267684118666460182397704639111495462123324235888743574609485999322770552135910583144368458858858886702751326957262770389469176085976900269504931624510797152915920521683769397768016061122051431716775181155704001022826725819805527571126152702170421648406400021877021874543562963380562319419530355922069442085694004469560597119535686177961745573765871022969433096483757975882667226248311385705641662258051342662419089722218604949363740176606470912978802426385434214496636303084352501919278463728637396404049810030233198296191543815510314315047701740943370739129254986816777544984397933557593709418349297991073210246151038229048157417855011872611414130228910886936120379114698553567913737487184309823848410987322547875035763400952613283013137189361676402171132395539586159766211805323784995185097757885997037324892416064405709547098447443474732027177495135802315124691775741453631198553031092632618151443814821819611703398249378334663940436628982943290047281582968521413770659063060030374472647130202332842867416866441124225020894522276411647679851813660735809000851566221880457580779895676186387683457611728014421913984391931157378049029580219835822547027941268160115541571490746119161857708057372667974463070326845635804718090464629015161475177392040583538822533504402621589031970062339351287697317546946433013853125275622162876251248513095450651953186402485775378544247125334089421336842974177731289323357376569050540466787415603897984965984799774421316255866945416695978354483351275058440399024119925860596880829840646100569756010818196550397804173511485198667199127073386282958674734377595583644502008336825638177112093227214091884629919938556004268618104963087679785065061910330743062948767472905697809301694677984782981867546719375103304886431393998320107892511238021960340884457431339167651748987203871704670622000907077029037376330668438229412735516882347159963633211906588897518501111959843473349869768768271432794645970037690136899283555706513797163397193636979156558765566983281056512790330466802777006753048486617211653496767466655663870657209750687383393131724732895320408628282000663660545326885979127732849904901893959422504836125318161385657033778773316713590177107673967461416431775511174927498380264723332304685981404302088713227667644531586159194505989071284999635311508399562488314707752324843416541478724518040967081948614083529640535023589972765757123947680648137870170868234830890132522328862926490098759666898922901359653698652074319685186602448807205323465214460896936343070138080919902432164799603160027443606033302396713808179104517478667809483523512324934935429989464193176885006397032133792228089226897770320456673850569039647743501842590850124643284823049786914458056163174305669810617879692042846051338809975266707338467779031602658299925835567518176175506300810962965867681312646772398280522697606320801566813050034832475901314190962249441682113990947487596143559287878389717574833197123761033260221290724367005850163404510724880979436585491019951865440620488394964506141769979640372679233993054498144244881501769364435694882529566437001921730031852436763513664538745920804391501095292304511843299532422076009915268798883826347473824946694434353161904943721055607060098578713593520309385208144613708405877977291662341436688886143538717826248653950125731763059227127730301353845008332515703589773290422643852487490341476275483283743810824683232872470861847340922744795004140443991516047134125638280608771847674994788585355517063950207640170734057782834135818201104097612530502791038630231672342204192608538153360888471954481326727587812248051844561632054971575971108900842644854915127093635877632587998522793502590999706190172789566236889464339579397186628983639239081490332646175957529978754055038133774184086957688086352955724507168960252552973329657657369295404113016973551427224112079475105156788120784789497517257376432762099858980188167215656578285519807233599558219646659974805499887924254558956631225898024765100105475138354700392051071589722739532151999690540362590773552910842547837075785999107673054237960379941369229513792451910620030318876234294921857098257322979765118258989834533497788939008966152536563200207917914240579766200824016267535271270228062166899861044672135745126891279236435582953036770579871395514872320405226135722227714198324242375773588530483491585354766011007231006990170412127432319737747914630264275126079593025135535993263311873893992968745799098136532507556053929588025785478169615468290769506116177250789849203164680826700404388310853399567125619417691997404161069795083690917862884671249883081521645093305485100742506229655222314141626574618041851045872480328103294168713809140836011297927452478274040570556595886091010798837972671689016117325442552662938036409271466622860299690297185963494727454920149422455644910014352913329383254292713379483519917003846395471338189056616298258368920038807409245620553005680551313826001985480890337696109802489763780385297389077930908883356449120622750183742130393733946147107043361877473409305185390150995637435896025411212776932205481961747890885807519522431213136884302610244786871364468083043010954352051091337259134906059478629517535725322515082563296555719669561779286778666346237974493638423881757036720743830478189678600584531467951491031961223083048746721789280974530716470903658611370380276971816679289825462158064299627799510789790621259339645474487840367759137772938310271662974830395292003946614320238378821710041694580855623277725893105353763153737648060356591258628561566871663804914818586953823385640141771748853846368176029484222316386815886596543686150684507497299247159970129597980402933786669546563910429033329680844495935300795868988139713513821475541432281458292590719353314040651805965880631698282780666010399760100025652962916556855533808492260976638214606136614792869843423160784249910732818899409505240615655445574619458414059429861358532956255916069981945696888822887368828243386010754608956887622241910044778630580133410717136777432443212455256711575931271097559272998249906842295917355421723264940825062060552119141716402512374466461364604447201184173851452594398853744727685121322677980603704288653937082878410723460817800443277250961984171651174917404289812520050469095943976644847332500797275049313504051987133421812322465279737475064255028467306450592090915359275399407166836381106103227359130371692279177478633641659686862629885507867706882176294393455008969764143683681824335433940076119269564035587978284403587537308896890635433693579479802734636882053630126574283592460338528525990179584031320648404559251966647394226709124885778408209852815252130494355644206641749759304652386227701872537739710303508933950076197485176278160816385545816312479155977151387644350195986204633136654302333800374826435604074786541680965787609301594422751109983776638066041766520057050784879404099314693297718135038166541789833001593576939214205426300771763027314346953457653797986383198905016360722020140351061095172128512515715230239131826588319299638612466760310365418710685413206961553636922055396788198055757270250035259864131229621369382850524158133754802113517156955765871458448284829374810395661790769027649418611758235099464986933273086012899822194665141771682916331328395463292676339121074957844688778379497719786657985517407021027370573283800432695322077630809186522094463868701876853191427389405525002575398573418576181562479065934672544283427834822839713710363301150040925624809756602938331975730445825986965946302159978910072126694464237386599457121073886500867147972190834388837549360885735202088847951635650307469217222068892885195350920573121603387087588791141208361717398415201142634363892223419590651340443620688333373221321640721709900948871315942237043445689707103656506532317444999957001687277373265710859608247288050490128677038418114706086385361754880849355303095285022860484907079952003609155006139884324973301568446669812875402064363049723470731593518843592119366360986864873390552177220090941465559675025801663137564955162307366850511975148554119496679576011972430444041984281971038898869549343859467147976315437453893940434212503736971543075370932331219751689485919545684874518088966003139904359986258575262973392560365686884725774121860736462291398095106606358380501232048575667498319394210879624871111023720544398862003702099995778750945716064633909657487480865225492921169666300532621129819380606077966085003536658458074393731157380700888175708975825645272521090874463922006078120910051924895581141418748832649883218088790820093913770901042528678950583890236446581208514082717592476921989726951203744943923333727363172709105545233304812497351431473496019328749926502731387243060985207789609355010003295874616480447766721097985979071158073912098706609365054349531499871659259080338480029243014119619704262853422476376261293336875697191790185948665519189941407100050819081977665938401004984354062743685985231026712900500097102679444205614420571047407288405470757761881602744553478505887838918678202408360544269690220671972520620915073575018545551204986720423491516311428127222465437103421099977653903812851581444076987868397822932757508342866032073886071687211158931997933519166136671266626376937660473927035551544486979985888673826768801003064684170958277480913426409395027981806578385378035934382756745858800040422968610662357173498259817663341455762860215772066797049247978636730143005539390578940924661746537989643942681772298517772091781384946999214931417821717919597733515961785333159824656940263197078876858472068520238902591124898665685123331193273620565244315970684338473100171543564717876677614190208272974803025941668352100396710202203722603262140342357850022130697540941213977647204287940957299738354140805406377261061008103294473495183847568147146312126435627615861184418732347202342687914451404581599130851912909529768074607115031713588450720960429631946652240592851290158846823359962498284680517489733932550953699502794329435385995889744846988397249575636173196446281345610136843082423198983634156280970026475487793584347319210899260743821694915642037801907746211186166389828683391699242515504431968414964852043841931328000032727904549815483958724304524333939518833059451571339017690957178482057320553099411104703025820280747026687255921542197015884389243018213256810548195695642832316894647155622250972033916213617827298207941962354862825950947065698588735563127308086774099188372391924398029419944422662834345236937257226148865501055190528131270048799580442163322932017525322900769190182935500361737128997315362491300395322067884317698455505231938529593487311982964599484984172834799457443792906320574723827619967150986881178968832003442003553247715249886722181344017062646529353951080620564998109275217624159232113458348364804526178319324017984284688112194060517284748311004788236633513181186923547596360604034007252204217759118886286845057867676494798418809929262019455562789113990323219578819142401756078448467023696199496472614517902819134550719982464681636286590794869856878969140972678878177711378242638087127085031465593088098006948668410438736213656067876168452333105728561021746255545577511796668235120478005615393888152843034698175958017740172661413981573702206793567648168304415557906228713850341058346762023183953998625062682220021937476829046656058484804880189071368246686063973458103308904431463788957301752186354628989895903309182350102311727110232596857849725229067689640656614036250241104306334817141421897971259586839903404848737264034349341850353010518912452967222295245011086820061688848023422172003835793484056215708323915342357931397174082547345887408652799302588249330554461152346101659751991254057986284558790305489451753361960538541247983847252741241807707986932819481377464676880976160581039378168020134730206337850077637126040015502573042563805723559665496879526708283924953257541826669404273547165552643942475749271583989739567349868300797592693528916230952794515244544685376938487282266895949837178287952641772895456021088852497738298960478098480183368786797712998591897054314174573461730274474080885614427437964168157505152109081289503438438352498849834925214115480949077932212415175638880613698104377615327643293209630931758014481641056642034597298298570043102177470267383007442163890809514703877823018526646261156765527301518263220792025385763631450600947010531737696249304978837310938243447781926140931367484043580130245545259745133271177675717748937536663788146328755738404276489597674076251897116575245625247206249386824558831976084984976568442227811998861548795590815086173167067610586709770111041587189868018613609015063873184446223017735167447713005296741653870818889712668397748095315384753103502264264828331307576402297527112377968772099817297584538798405878273513054259927259473104758405961760789979352795103002510888932912344518958245866503651636578424761903303182530639485399671211386311459597339586751675667049107131057352549525830380441474700637598535644768138646279615284441054030366731031170198538967196649808044836456321667613644337108850802086251453272095318983775201995551113710444614121374435553407819158104890839835617963717715983805436639431754466047626105503289558743429024260577394320604061038786204558401626815142859362056896250124471285598143712930838994565803379753517574744958155187037458567448761654867978190492486492937519042318261140454649721516153758826420437347610224265614297225016708155461494300867352605073595073247842705473686344212571942477346673157100409238678572619391860918070399598553850177074845840001099396921484105705777453790320219809832485327019450959662373282279924690032188980026665034954682668130325129703385050155930021314230516678290192329778736878996265628258971711241677234900345763909687531624806900960889879392954464077018605415414911264266045342186056567720023144521332793171591539749946791460005991306716819775880358477027847469186772353375741373137919298614632985898128380439744838773345315761338246121970963148777472793140601587117566858050557934783940196762783547418908973782596614202710759936338848125155923388593431916300012146745319806831141554570437181826112425457979576588684672331795116751464372759367223739912573102871181589667538826867755610533266523804804368042401139269600960403748189789906413306713024553608784615292493270320749498615165847421053959545755887503177082528476118575691882000228356506029757938097339131245526867515740778940594786666799093701969739819282544812694203314046288693538119827152290898910586458320669560690225572233606164943218316169944994340920269106290713151385414523585469128253991981361031913135242133456720043004444586694192724137097752486056278830906872825257621883451936728393610135994323610755965518872819361490090193937475723189546968997550282268444949115457650107114726125612793967908133471310163645921881894178682895719543878405397687393484296548821737269523017618969871294600493008404097412803969606594657467702595266802680516448417704184894484907035231109217286126987942803604216980156253717531719955885911599815290828761505000248862646118299630017266312700963254029943850290839182068115852933330341675879598232365613417900023022363291863609193712896716797409886738253376908142648579765450152061134193315971575636031109797450498187060205995385578100049276146428298319686656788669973497728615482896504280473943388623377391116045222405222721464908219910036778993063608032849708880506289833346985045529022437703973153458829444897957600341683850300774332982730602108126377774602224687412813871633276862808823549135438244845922363242802701426062227090969483633158957035229366561679720121770065769732094482788531197124448020079732057014810213755649891587950900205632250306713131082198625725054068392720450471137069949393254046630806126784252412330000316713669909910999470918198717478223858530832304105136854121963554123795514740111352116339700819256233747998722988037080007762780030292121901607611463862687723285976135690223084489910013160252234245007939392265609411474143803223308939100037418447052200244841502792889377981120004428869323247005383709842939962819548018590167033522682201703796310380540378503516194938609370987279385218916832036569856058907278127931277708872678680853189228337206790279857476457573319973074174057662861483034511165851266246653392305353996288974233624626100510842597752532560297419868323272706071377181758056034763363323220061855797508940601169706905321791626799931088359682807946843370191855755089907137045761384496031424526439553503158013550191771896471084028839122112861251042333071431957047485447860599900358305185051538355530389019888321156498927067503459951228908910647292516812881675929691873215669389421863303928134866451761475203125920085572252443599540225674850238628898803025569270338698319666169331268213956043734618428925568856009202301080471679650824527388860812690605501813123506039333266821959865063350510297377646761421935042081408383782869745685076482406425301115466208669800206253809072884177104479350484424311519015375203018136079802024167895066408405235682917326857452528718447676470387666166892748250192176365670007782894577231162802554625276205262692546407786150951527645644439996729177993275467214087622304463283706831111031968947454180878698731265638232768496191843591153048401811720827905879062118231302148165757449794445841198662561309974865570729349239657914806272429088812753280277533067473972198607348049659777190496107460500920778966526030771058211211047294422533150858931213647551857177037303945183445083141273981061884347094055347856097946273821601820723549377426498853544826578218532301785463844611714909937894255321612661751377939242871748468598396386602160819026376068908231146281446306951837054810642873119156411862505916228807165809031012043094306409045265219395465551680840800362093028462355718632600237208499297996696470507278603424661691761157712722612592146650410272882333236402200492238915154586694189354515876877614964837688691997779252514899619340476654870111143549508217148147171522203965347832109565533647228397910020968271140735113191604087958123977596293619468056789688150046884496438633058220027729416023739975389129812536328167817689821692529281077876781070083608646870614686930002783967894965782261687158372475626689078619409413031813973138445940235006749571323490495669212134985142723580776370551564957870760479213853395108523298154460667465945211074984530659262302803978560569039004398820508694788131686813240329912072638473073529350532936489715310685138209322935614612082840453767886273195104725344951664190415889184895119631495412789743774129162225066363776870955016583772168401194098394525207906719420150990165972880637032396429973659664302852038263190756053362568469249175828399412871276479496073258786842093002592820604983396169571115393557222670690733220778070168619325217014802180157920706228844197949457116074132983030036893180021114688849621014233862276138201569748554956788202739891120676192023873291695967178340262177681601729942088764042477820538755278021011143127935991713854354136339220090922020352198923445242346331210665640562336258687018080085916396875437884333895451578933367127582384415440295522031909837958994389615047130680618225073875421239205297496130170870596433252260715785724395455174913738215533143154654876581261254038801050841689346948598595111245245972183194932955582995639932243102996629957590955846964219285920047495821262135025015607316911854330966402127186797980982109277150207144539039245193942165693982400869254380330100571963140020403261424082337432688668646992215118343918275432359185718374410264731030216968524401172338140559538384306733798173413435761118037286046586301133996947413185857791561872117952947297793444156478136303769557756221855861690221343205140201332030648468663706100457010217908377985611374792529159053351371401153137308382716204200041521808564793782619532105909447294404456513376554582040888807858444187707424987194425541907645797467454825898647291403366623111033963762086174388588786562352371603141126785642565840184831966967133715480124859173407550570785076849654985293513758937386480585268992915208033204663114809380456500357963024170201549694570313972226441791449678152664283099641117737706664145470869585048763731947804835813564603080956156232388386749969126865830443230743886115680450299686954626557012387419608314195806328060817630178690622620000503101399724828384832391046817680433569468510282004839575397289643650148953161354394736945440797115714726203825369440365180376203577998510006912740364596705288567215426578875399445606569629338712092702578212031296003145597320365446504247389230695340408985315736578221676115400045717451519403086938098439138410609242540607283713192084696285273231561842255191179879708956485751340321456823538953095456910189187070250156906723137650184781828244715440196889460597172966542770272113657851079939446753968451508243047871596355380207748771766111724837705373117003782767543766235542830867236434604417206173162724456421879656017206558830557032874725955710067804725181359094005742490161837739069596557052687965250390060091312347649115875612665073979939706017224795107987796081619480469141779691524507667815359696958676797879880597643509273189614590380977167747085849002888908214766150657342633456197537748258703648945290800102754705016394586361298166365163342116754722140996931474219419557443193806732137176753992149372099696716069318189925351280252937325666793626990752016307250319882357455024229448530937840487261735901661932718686836495110194191579295852683403236953962650804557248803388004627034633491031808910678209179282141269898712813447611518297658422774377985754890990153848339694474414277184967772322760863701212268513569120483714565422878729416306957867095139581997714853932264437403101344423032430288396631156509032575857061003466066066153215346360396041633372406800033693908184728252134699060556364784771219432073034716760565534546106436543820223637689183385124907292907936409371002410437548226991832284792428551156368785986868900150060147448304413134163886635486771922762012346538995024656002107780501951036509416580757431185281816567730385381939963225546450072482018576429887177107171122638512870920960680501011583315424178547326403642710092823315824891961084249801084827184672613923743659242168999880828705052931893956512670058681806694655873309807942571039706037422252103623715898016463732995639682233339252731490513143131134603948679665000497425945845064614332171969277419539850915931413429435162024394868631439054509570597226445681490878793559653121253757338243609923563055942894585108282359302895931503048347660403811135936800664608147362834724742269931435299341499945583636498569533338902619306959719212815970807547576516112123287995452740719160689716773493932741436361894846285680797608551600334525182783764354509084044307653661308025409462020610933781061313660735274431007932288582888765378151079164848376794593159182061774896259596832273283322260265059544163656552103997089461620607668555067020193500364684362462573161671628962057534289063688633001794855391667521452978590211207611694470340725629584442966493202844962781707214535129792695690023720112856478746071565960764843813433073737186331550353958766837006935310338924664535123799537741060921887921593179588776580023220423552856144148034282405704384969588863706755365514942773565711603312057358797908202684258919500695878374561691017382666621083668133396206365634637487590730473479192632030399073329213670099277197135667468525541219145516412146238804890749455193343815882116134430535862527289139436215152119767509520204533004664472245590643696946856491426990029344926196802313467785218289546506160227748064643854591794996422513468617985768181087472212646351702601966883359326703732398532976821795151571792562732083091078500639674333468515729814981965100004478759398254120815215371161692745379637669377664556409965745071943788880615979613625149862868225399367254878894530698437555811231970705053174143019369488915225108368709553494177844006325228985903043742993337732415360874270297012218877961529636503958568264814578676479730293922016383010589915523393301395587896386193628574503870255462468869607945402116483537939552549190502327041601604023715900293677038720032770724999187542522419009273487312878528268699915914138044490687766486265748894091028629675495965268169318183739792063267681536599369293383274036901478347551758346864128218995151748581902565690641726169510802391484073005054877912567768400719757585326380784033113127623172670917008921940666694735123537009164779556125841568118744167611192744602990390173168485973963435293467998761445989541342344983601323141633672543687801842444530053428691770350375576754697512014754304580273006331849615255691216186893817787561964918708534821591762395237563479131418705134071021462279094541776043156660096939993786009534080873710361771802039477073580384298504966521992822563353341791510282698086876787614086968240248568667888640955986439547680975509215138187948863392931643655859258052160586042999786638381533162354500620558371555358683042659273946426143035355011675738811301521996083002647835630968567957021400374496167890201538931805041584091011598582087733569551757430269453995347382733080518197714935963176622779028736037952260973314600651525834536086341711289118446392422968249732395881602217830633634797641719484104999380742160145703877416841431439516783489231636837639465546539077137780373390028668945297398726338889267178579288353014069585361614269676573177169893446781820298075960561175489706913448691310908307846769625807111304824771997456343355859007732134238985987042286713145147915875537573600993401315790451635358366296087346693681927904943296076506392491250729877474917435961729464479336167328055186555694992467898693407539978735452768069092021332163927497443997947440801454551413330128478356826372194795340567368843772046687579698520626684833982942422314405351426316830334287497200617566656153607934663772484179339481270918373858505981401871622540097161213776595249365241225018915295379964106081841597920529496155552283237602725725904872021281450253723981843159689326123616708376010723553140558856601662570633251285677285538987969875445190276500069277935954564464090144086003488649340369463296478924315230175116296080657392755869103803795372261819113183429644570218809474189635894826119661860550493653495397901661707589641790793580528067494997607414773555225890484367479701217003853135497348488929156898391016010184816340977311441746788726750557198697111077281706808612809518279013662045317346582195492655276377720746291663541628409908571326654724584644966835398069625950937783658880477528666232396795263463378537867281241810658047716240137511442871167455624758799223307099814667420636555235436727905848554499234938486379614257109612617719022602261208042139517841731644279665638603140377152924870874365501392790625573398557360218594244556614979034002335356111720365011999750474369641904560707363727206953928079522100199200411714672624731147914049063624713932915231330385158140706517012522109637121611799218262403321034805274926912945063410514390102720803895604202915417772584815252980550258109046771181535477579571825592262165839815735356106914805280269259878037777186995995055037822621336961694001866487655247346940027551953839500896673521752914663672332929963504311819348273746398748028896432218373461878770476433217275034336493075927033691106935131524628226845074792480908438244055210783066568866631742578296959877825406062147057293676525067719394530173478548935844475529632013600911920742949381557602475596541332123703228206807316670311495838626238713858365359107943757342594036544346171844327072121197451840008208392773365217486220879821337547894195844658971398019347532296587802369543883220318649332103535136437026449909343998379575608924918773433175288928618478615590556423324593935007945930265119252852998280963584346953312529444843204483165755422407637671299142269820859691283882581125324461678853706485445776847084657597639546902755161788236199999424760232683549021308135658554414929404498807500305752200304470291134423867593712353486765560947424950205515035284108277986126901040100521419812939349220480809189547117995404505893953626968479686584355608554849406771699558820641923232040953480149527828868673814156533952803804659896707093088833488215531851975319984058520351079210441213371329287380358081019431615423906309711800848509966383507711533412152014264401893600188673337759575719433804770057518716130625703341043714788801071752941403703399363824384087190320969924369416327817802147791959945098730684433216117955182406415008026730327984077340912236165848751554416759535255287435570326525350076610300993904480468281705884552748184699471731334809493945012666713079934433978171509375491884083871641920884515631935211619420957600060887580415131212608489735456727848333720545016045457818490381972259960959530882220139152487113900868013432067958527890855269362193381488960624983207569097499841776197831367585230833473383053764448294250606225242815096231335463131601461847787498538517941997303281936351718957833596916949988442916310837419701457185085836924724967003253108074475494183719067218811552294568645436396400866955122905488273809791852621412924644163698754165144305081707826255356423623694788058663235752501784866915167345736764522816611865291838321010587421885300974034274888513238610991986771057004419832391595619953775784714023426142515308077054243670446186597735237425215674113862452729617382414928116225135144708908769795858366138146746894250546071312222757200804016484248850211943295578446724010438261786623286683083233110958352527092104570433051939981659763153712450456119766462573693588280322725069962131530779593760704063016837787859188756926135547433033375707852633420093969412800181692370816114293594328299419949911737922042448597122285732909913726198049369223426606455564938672339365982184997597008762124089494943896506119137249414913564768338586354545568688091047645427140473070265204229964577263468653998171813243611207280809575164578925152328850668575982133892094107591928461488027721121049154463042084213308119792898086353897259841603853927216428644746111434583364286569710673529232039429785105553824443528820225969012463540220505890195904549464322291708476214705377813894961867422119782977586938238308653881598433936481814821243267148826376843140661401249795006580524514231118623142560171133280165826501069458231830828016558838676474040559552493835678930932410787597481557879147854294232408294235470353153880320966614296706769481516309371785769954360435847578151246709374823868478837575165211250436437032388166870842857965561509006201052235974319834402285321258205335409868199404526717230045540288961103660164203198937667890888429770872031008956154805608083150762466169049467557011840503627881695695010607781559353450421907587014353447817179816062254099224076278452210530913684130177285883472865782162634461491971349947806295994061312262048116579088029912729439810059154077216002044211838626865665892647964878531347345602023136258919989380024251353004657418466231460129001553751579073957271947281616194548964817197378716976604407539139749610072474985912607365301729611850209860673045224240950866965202462102961836062587324374090391767464399904797121128389603422208711214781910530561810948736524818031213463214551434931089032251098128566498714552109761548406075461770944139935990575298546305962529009472035368779211375737638830239475707367141815345766012676585414986142977949115512105786147779868617951101593785963004784934596092841143103802457917616555477008470977094089904941371888194982697256536134995763820548952204978042244128035771034108957044737128779422146412601507952188331053476295584925382974019216142040184036287836456833839844335755474307160089675921773103744186506943162890047752344512313150567345093790242011892935686953622264260414650412182391462948844219984581532429704871093154500217088835699894317695896665488269579507956031951403213345862054183781004206608729002324238440820282731236659948037996262708764090270883294936885555474575995024956653877105585461692508580151562493199528965399601339396736562089988192306137946145224793319139370057383102539547503572642941669625167348908023976938066684219831498139436972667723236581898453024780548808283273315557529511107023086952034106820430675661859880859102213584614092762208280340869434761859193571311574929756339213757650170586417376431703643571301565606690120458243679605426534976279333920039936064061605062924022728265332203466435529639538853142908326081566052877243569876067430502371134414475059294590753251279533370699604331718865439563485633083036032537238026773699464466758233358589312521846239637707487693650957032352920256691733604588039358492658870580163657174607963146395946990918302678419941371461731341564008371144681556870692269912180562657985869121068795089766219449780696836539339332864532062316463719157836848735346591593477910221344966333364065095353160660792503623468794757069261617731655834520998459076806467865861392478579206383027246936284360469081530987452301754256861689446292487768039645352155382546641421735404073322890535451881457686061338476655487422962222992664890655771806871540095112462611913777387392702507101767698904825683883797619312053488676926384652710817132820635924469007207682971517551605683175727981190091862035062124768661312021994724525532616271905228040757958134126642873510845503387688343555497651012640874867251651509270418173789481811445826317912661745890789268665488430740101135086237661822148168115102479718136408684575325270641988551082286849167699505996516892050162657030466281779523761347129664410833091499883276181154309218675522504234897294749055539938758573281933808606142387339907486171306006106266909458939613744512354928183477175838268483306954279088921337329025186452334004193146786385713769764328877938310926356330875983143739582168115945336551088550265270950596596143300909770133107861865583850751882158120228664105308773250110482307016764823924803488610839875203698438102542206578333069988623353540028280760712843015847205112662861300646307670033113737720460509861174345403683642280054130579550204941899382229496420456607371427955541010114741066614267985874637693488074818710154865149573271127515075610510605055259516710474622315767442181018665140047202885219491234710705942523443711728029069795960371388392432293188675492720710794919139197391812926619398991284219918958409263261984981554480942122751086503510665570086420816355507649650448331679905333596202467887728011951346223855541839908955734808616039698000025013360148720799155916138060174518458690498476112107369464980447024187115864105007834450583713854246625296618825794698464323346279040533739008886596914293581995323161010408359375964224812829381047990520099680438507584504766778526777840982700773391852419326785692976327423747450422257704159989289754141500391791270354643783817355459239518474593340522940081335537037274742494157732645858067552545201845368479608580749031068826625557765922837802541003989879064742119073369563633578344377030767501078708354657753377491143303497711900984540137460755275217660864896833765537069671382559459909914322105723790659492868676497261702837217894843928116283818273932184837464287826598992633191756952938336734328102562964836614089226291702935479331346916748205877012236636564721719323166528445281700015875721259941342308619841178737769232611999578400972700445878198590900865913147360442735641798418586701555357025205511986558959639673832614017450784662898939654713772956382387474568751470717631740166685545991320457892657153626974970824668837533137550883751364627598610606270388596658180650353173220160128924618044775006427936721827658588632357436590142978395722486207160379215609560320404325568067196368272618732439006539667263357216871243616792237650667469358736295662458403139515610937014408877885635863196580419754549093057245603169382517581727661819903821940623559052581292030213379192038268535675262061285180857763083501309173200458403307320724161071221086308149316439837329586336142650652369174250111302611701483782477266022583245499011576192059131546634374981821669904027602116552289092912599526534050422947731224301790092787580846713885010166049742061470174115486856228446453552814667643272677528518414499763090442987643419286335206719152638913973815186229481348726737303846328881611461356479387242080711155125451658185050674363544099411036379669306914176156877608982388342274810481835427927361858473129883375198167464316764169211911906021333999443983721883085063031597899453951644603969307860361479126925084217704237709093207188915320956465922247555391291044231465149462961024478242268993799726063876399344609419149819177755413717242010939861916923406617665831696259091722983989872377813895740482544381822666107184469354961595005625335197246540020300593559047865140369591458587889149450268446949553003157804330833587987478052522017296830653000845171425863969584809201561176261688153198606355034845322305604132180070271016146776201695566510877742899817731704481144837197089460323137459569884504937123199564220593044440359989271751048248079717850848603775954100482338968461084446592467600753779378129657001255486803471330171389651972595665202515423104897911050280033104041347358519186249446299659469845274474026943681103541796431855661661501095897268059384968267411225904555055361555209953180866746913760879399427884499648532364156468578785145538535238078543804754847225720730858826957553928200666569166552318222537563002257705868348299605351719995881864097076566351006780317201268804712867988192315921541383919173567820852576203534063208123532699257163416984196219670255634089697111060159765537149952338705728678130026015742762722838010463299436475161079829258246178236769063486124404571992660924094745418491425090801333689690772194483540888430688594850940557291576857619350827778221910807764549108383039308167980677109437627014637568171601562542391531730689987261099502179674913770609847495223254769323968111086758987066515921186198501521952001058939483219305324756162489083720623369437530964696204638959031995948760406695060953092631783988810537527601527040464296175890680085477025103514306329399664873500791056104286264413715524847006336422806817863976999362222714197281718929879955103976307615741322376942680592399838351395337000297664506656664230270064647596551449011287405938755700177112655597303625853924146183027771221887150058090224786825613521729606529150007762296639029625078879100012995454650516418052843672633894435634809987733781328064404754657950430149115447948110922321857572179105368652298749898093970853865884360691098199584077624828930318852021788016492692101480061856569075687642219589360463215072109640819895152661239531627009411723458129830007240560583654864443857326846332313151872581171206390168879699517260491441054506597815497913883783171842448413732217519428482819546757028099522332968270098525575349111105526919568653382738669450481500260675950876239419529583505736842162896579719537683677913706830271527412921245895522479364880619113003520959649475617495592061718755284204419854607279352359333951361107580389524075323580712010339300733875847358027996486917184778094355810775120978640285653895650520344818178652890080574605496144244671452446943313355003690843233195781926901892289716643695506950704235291985618771621243798356341548368988021433177278999834902023077256934364115418471028016981838289518447245609077267854891948100105981016677212845585209756768460565352887225915469710429022305165383155041432136432359740556395691620454428552519678687213521227924598973281252408674382820985741687769069351968452576529922208165914818171875803096670209178655510628160299764077485400851651676047807362546439301013652060916708158991315781728735376992824505634701770779379570702149823664068817002853810024950243847184842617997593381086313237170836928039397510335515116179797363398224238700194885084021613254707006008545030146533318448464952851311429226960680243750037505267681725926719351023985188479930381049774373865212904106219008292384249304870428526718198169066743324476454876364371056694006685402511338175701749301980137577081917074465405598557748629071116426909699861891349006081352811349945107316206929239463135390726117426754043599297974160654797945577383607922826025985218868795593258831820351563313896403632389829525248481896412392916393573485699031548120028771683920249553486339257815978402332583396623385346960459339093009801239208243862158544951453816911508372776944365378924774803755174582804690365233988867971205110620369997504760105909377524722134902853291423546332003145125819753465194459568645680085129700663065633398688336747880621192924528346120681294616420113493735410491178156136278550656394991029285028394124675715974642862096853743647036870334353913449590299007563078271420764144737011599278602127191575606274869101441246666050631067337049274009624085861877969124341659155234862494571137353302554576762317676134002644653931476746398933718998058412434305996873470751213933067147553049197265639744192193198924854124356486314237335608845716140635704798780465364399888008200699587154159018142867926638210696154363325901612041481903029047180434666219671169469558944046366553230922352389541737056850155202618658981620283920732148754579944264727643857255077987892227483147867326022665700534432327255256058339477832546981885313810818016448194768121040204758277591900617519850089905240017373456711823895519609656736069685284527116211925246152842559911464438814563704919585735518016121813636773838614703605182939102170387949871527167461281589947782210756913544346029163906593469022671493095699717282682409948574346181691728387403352573985103836799359391994638259051316667747672090536363013248273690308762330873500290806615867201198346530066506855589150702670617335091552247244349961317650105579112168920264976497169068007168765357905582135374874697308341924458690642077668637224445312369077544420392927357442589694839632957820695713063966962949953480307943389387700250188883150283582630776348990330420521161354867365983318799434536099462443276163037094659402304902661793678930304432602839016272014333405610896060538133895468355743975378677494529616860220779858014168056887445309451556890394927819842274811635035682953590570666534655464341569055739962120485002073274837953761303325409849927932861351982449133333999552010976860784888923421235223330417544606234705255873516318152974477282701364581332274695875571287672572592301936453795154846040349979153895690268262924164738614782273110385858135278099512933129108929652767150258482189181671685349140378296020026409982639463205012302261609989643242336135806110841486750706961186603119069092373713136338270752878120646102133588357485879955916587995443390262697085298930665632131859283042816321545371357706799679541352329441585624245351314784185415671374297223638599073622479308167514295972183070358173866267795177642141551085065748877201323251436901433790375018721870162026471883896763147709350502000780646036252535779416557406427967372053022614840711557160434649544533173302314946859088725942827349756743605555235176854415136530283534557729262054239806803282664035020645939080988862208839327665823895836916096494878182485238314434098584138822993884327162119296985984557534907965571636556729174011178909639344725426862404560711893148606536397031948691503378841612894820551571670477091669468750", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n695585", "expectedOutput": "588839341143230728047719775393853504920953844721739029688201512719874135468507962786366552662036725982739028812646466396826888433937398448032734626393143275801005976747936989440475526212305451807655515644265017242144519429337287196899094467816836091414517058319050201234384670944308098139237558819028473073552932082546569370769654430671998958174771538696830565454032288324384063314699695389402832458042776549672408798061762156226945298786254985165126373393710600758754387912094704454708975102511475981611380818313852336159572363967372517509154490654057291205355852436176904270088906124891802313108937739756776123945510320061461766463163211767819013859416404953546123753891199668514215693774679068639429888240223894226562740838999816134182102267519669503945809624191740826484829673229801024412909748694439644615893236554707338767690569371560767894599000350734800348383282209770125330346939132044884954397804189834896636559492561798278348170146049104001401417711783492725465458507331203958973476120905137645153470259749102464135072099315953016756728265314084596419019295585317786530950676217023274277442912544536239046866564053857590221979132863555817039401998278835495829180715023152613031484472158994322648004309072733139747372878654679524655924890469929476468795409376559680451352624992670021225234598269161195563347573088202813804787594506491548198937915311484002358711353305988001992255816421444888147672419503613849595834349734681427021824984594897097972952179894360768889756803003697973236122161675547953039153931618731986787015496514929402135918530117542706624354132668810606792502185576121620352168416470656423148195768442316681163209116354854098376729309073238218407284286910790625362395367138087053179035255644782334758087935165058047591395748507903445619854209618665784333701963081788474668686598812179014518653891774287110225319299715223019383380019479920957176069628842968102699359708917758263863815534539383104405866780360297449980009886737208978306816820751059354356617036669284173111517178761896269142822530039679937413690388438171244969171552128007983978712152776541240583935396515016474677662725791547972381075972902713656494171935795559191947965388499551000116720478058666298232075007110554865896982157507296733998078314628815990124470596445516406176077279670492183773873357294166493386584044805596059146859076540793856131527859924143426074364861030345874510950818385400688016798279039181220530498794952349100860941000315925167914933675657331498486609085018290498704633036633099224586480167013690500663715273685119040648028694893153817810600742586824522705742147611859040797790306006668501961321717584716519547801316115917031290808366045999689197222214209231803634898062955430472940086914206824606277189451532152454055638564497478105590732244775042493474009929398629169897739763493401255068561382979891004655836437416789819871228920749088691279203876053039586365057305011456958326541058021025797752412080270201225692535226808206776825241151235463607220505777102895872116952142198933272315724576845261379611699910176028646774397359142504154011914389137103800489841188762708367269896140581191473391738037617748775916046559962366172622135793019176409429658489676704853219061687156554527190620643962584136498467089727586275156796827902234678200673307144294132571854769742834059356076549032186865869771892567781188396610413708751422334414528403242820495328310397475814351303211774873260121876226952293588895496885759243329429075765696150498612261433630978554081817582712709936535831458951681412712705874318351213143985491991628302806255103003315562344261996526359935813753983445255166868969664219358743289637115916533832189325966504753550619296449042034948966165582145517559927594446109368843871682235494940439888287280909858308451156389723004008343766680481335141005101215829168075722601570908631344731274956695921351759858273636013076395704213705689858500642812532788974233070920118983206234079493341913677585581390465617839146491935939011142718788317130308052734028664396349251404005901559089579198923353057744936986623309596696114125111998000418243421779117157703150446970634328348503585549535671669777859328812870253017147704308899493837527163823977855717509211530187403654311529448893543578105428648980797372395110689450322309448993412168068155425258503470003268842512330878994876692618514022260898776849809797211407989320138477258257828491396439697682987382111581887759688440608065940564042133558679330092608217381198066371676804894396313207843885867818719170814809303064512113553784672013168828952526256079872019400972913726050436558088218612340938625137440311435551901382809614853122082322593899331796778296957935871743500400316498015213597692061186319554536580140367970952438613995032060470806442156184436639222987580644830960120306921702033695207312648877261351858737639306045302462786261521104071137170542972474360118789577548477733095796506766466867452669860952446262028252161223543902424877619609545850743971381608668547789484581537421933719560549092993147764018169803987506069915150622314431949689477373224698698124999669906045430665364321800467388798174063139506205685532080663120498862385543240915068742990527245246848910940532563760806952089367799116152539312658326018140360242761437115947654850797670314052123895497097773256108387712016331175499807826239294370149086775888137111633263774241513787068491640536642113442866777235216455470436723669674188222099768911742793474484203494588436800986808822839647973756408628497277493374501168097654094391869405527426852793526757325292659661877580229850308331861038660764530024285136404306713801444424807025577928913937187067943626446667307437016899327510149152279497699481249389974315583556872948261429416723091913521352756935526840795784166631910694694003757565053562893654650416173931971649023559369572443048552187496366048009106407148629497198920316948231302423558308119763593384643864148717511863102891129843317757649574417307895323296170245467894072396840221196175798273901948039995910755315143365452116954749430458147717872789333578406300764334811782353670244485406242816325712078015465257846237212899651275760312508249291232885757410200128584279031099467734292874452552344057632064526844025249816203234725332482163261118883553253244972929377894728845589691665493672239375695428447355289300161331901262988825344069659362456083605674430267929316902183281628193951418738723023101682264134944685090635700646101109637248059241934595581003268609225647563039043282754480405316312231479528159443650110870205783271721575456439317530209341606074486709004751710257963207906229708783494949069294791089234600473126229273982992697593399713787859692653228856177992199505243414569552855367082664339637798920738305451589806477050542696093172699327617517275843141966881325486560731353586420548567644483632987527597022016573926368066214698934932219256449131079703178582823445630463777687284494687730036444286147107035981150200565549230849915066465088922674399461651305379332681558680470343451292048358582887523992072203541982175554475890850733536458459699912769712211739180813142075346451456470703465523774448199697744315952899963282860719282611199535226790972950525037586850331646352730461076127881706190719299126780647153993906665136270623623265375755415147328344814327239954033874679986270406992433774071661613678334524029136838157309898734582433243774796800926272588859080465859683040789169122594785240086878079055574734295213528308417139671706763637551650922620868290823357068842681384840150005735105696242437908159034797139627947129981181016023376327286598306442874052837894675185988065713396041206797412482928278696043947412470078417649554131785296050930746290825849064552807049335684035236840376219443223180720161462404727269377339542059288718587915586146539076463233187101954521446262745660441663682552158567052472620326351922918525123071702125299239757136660276004079611631512210650317054729355489178932915171587830371057975409131531857747542415087345329837745073488670816207150012883057619742567373385681180277313806843461453231888117750380445813081859310742216809353398563245911662988368081842504238975812037853345337767350237658345329120122380432977584079174972767724425709244771043896496443582669810732968073453532345494798255249827454068689160453495092876642912783689455129089354598956996125545062770510674614492943329948153705491494085610680504863740503348663861107797142578870752340102435435907547330121340020201122862805516576775018803715744095295992491269117487271101997070025462866504519729745337960835084003901821172129697833425330176473289162487282692949040283184170751230693170222653011564481449292378639995564283351314778251001441824900094130813424415821118146153868221769855313007139172304537459491603739997118250163905146651747470183354078136340054236598410869556525871595054306010748934985737764435967682636688040460282730697362515974097659892383256291856549874372465179202244897763611424060506860817332053462952916497667519105395473469987827311165994980407494092642949227781346302004202195752081580158924015931331604666720485594535951099951655689958386051859187674893969672373880086073496760787513930017786292951256872407993115454059777556913821774713465688638497825942961511332101945097105586921482532063126964511597000066607250728684380485128861627238248009142861219733671624630697728671672109118013796056799687670095794889993594394911132898063737331532292847397424352601109505232502272614673454062217961022248865355751087473553633716749240628148734686548679773137958676223636119439327175681421434633278025332265819893502522582642814644058547318036849959007458673919032336005669900583598251081261980981904649337299759248414289157634250237676504338566046203719869592865082216395946188816660509402859931871095098621956545939031729191584691687607251971580073703082115713111352236658623529237550263587920005798045960083884237236891959746996071476029880751905679736265023679063892131096586537714346410092340897596359206389492540939100526563707942196962565587153040898741557479584800962961244707180762289292486165802055510063550801097297306874772418324668551512364994795094237060672409464375102565112613923647662511507095574109383771032778739096886857571984365415900323385195870038667172018060880860575535234275975045734410400798721577355201311537585611109836716911583850527888022510464973085161999567969738721817356610089805992061875084126314583006009666274821699198748519159299298901208750139135279942844626646378751175312737738255322198806254839419387591555525209715494044708396136666652429887206242860921609858360189458650457391375544449349568783527289929732102382042679755986785066583418056227612139746476956783281874983141257990618466461591484359882993827024481158127762281066567197875688145408412106199065350715084002629669780065534521733203918396570109101152762834188438711407956090771917872542111764731289959826976607974221988002945975264787017216680728357146803695001748139014316637458513193184068972367353519936783056899046298046844961802972411916461255738722063627132165031393387375059870699974017141978679077586756694953048330892744863724842558537869497925320580157334358082312165696271470554354414009711591671546415323420213243361784048673315322611141674408159528113220094968314923857748895193260363419675993217367658531635009668310632205830000201884300550644367698720523438897130287036370595142918805001799353272513496452710174838583744857953163815701363011422725574853953023617084041461812730464329771614715360381259620024059733012565829417529784021712995756064622932238741008060211367090703804957179333078421379812800815493851646270171438122052366666230613009103789198373710531514224399397582498401705039617055284040664938731825188633950312227313175041471402193266289385847903195181071965037395021309366210706829219004679945040027204259276239393767139654620675238477694129911554210014609035110090134544218902548298440358419852436441460710733102772608826454292668940500946286477240295792607583984545929316718789511705201409846458519569132861028803310288761654660890279208273611909776349673656678154821136154842729382326904825709746538971743562384457840193057189645352916241863416572060396406218592993676113737525588996634236942020086901668315458671723791105970032175768149459290869878364653076556923597938768467255188045401973918609362420941622602857011474901957106183144084682958409961322604797972961339229028209516659467311587248264250788960949014122424169650841362317080582213344456728815829329818272662251901476335641841944033657677829451852693472954637623965198232683892522798364612618785373685659489110704045132931029285502244767600089790825390278906469120388233427051594544148089462416640652428555396848005434717688098627332110333690982208416533924011306971363744371355580975250598785194599471558159000736526484324975198596176101009413528541962200790730133298403971328421113994572378415309188445800034879234901591793600302294622178227822077655261639241747361037818445818473829936072858906244945338682303081107544980981490805599437422753520903536049887845840559851625108485009572528449049147871766256892755536721275735744651650107947075728951697973174216816977820382523885571573415015950512773635749089788994135366572929564065836833160614852290068828377422667604165680427536514762443809924964904461051707759638551923299498947314609712549218677096959280320862433419368015443129076488821180422283035970376162901828172655716218711227130783421269753824077823244599148484287896213694178929704868804352246451553816771888995094999805135019062019140344516054042039169131641769258486374361409133880419959218931702059942031538666952761307159942777831011032774527666153204802535152189483999803078779782717833832453048182325690721670909321525689842615233604136640157464509780722046798998432045640968837289069194871410192424015119673943060610858749099946757308795870859071736399770930607215112994727222102220119476203770904900237315683612048756237379323115927527631358534905038970437714736913250820140541406686941634098453842823873241634264494723921260037447971312057515463439011079463971048756051864411783124690891820375990460579076042622100083624324908934826507036923480345873388197331490054240003179900610273959303560776992473989636989824278827189603136995189346873377556590120708447193777903860094694573220144872082878409267628899844239793353538413795720419826842141422899991098304964299357379802118382325936313339997529525804433571195976766194764962753208025022354511925106714508971846786637850757525578050637973472024211016082390380955764509132118671374668669852758061295682978250863916289160959415674874406252743658554654434223446210009231772535273519452830731900746833340984828392955160416592069843863059672271438038893696720806085042689711870728995590448809951026205773140661482154288977947012704953109519966857747672009003674929405486573593550359932542271686900816944095563080462584108420613677890832885606622708405934245146909080539850686300279933748790362141152074842362323051093613237174503992537581378922811844975657820849244953921072467691862521634789397109241679188625307936286993208046091731419026577098871828185460076323759144263057553908757508664946976349859534526549435297223268390174428890859839070582728093708226243663963492514987135929738859844209486009768303199430948518028120126097431266360992571258856851770341016589188365835328987274046356863116778085512249079530468890014458519492363475159680248410636475848889090276917038432053327079209354896287543390504449766043973327753375310548240369908757349606556760579943918675508044641893712010829012243781169057676017094317120682694149073446913547766378271631664747252903563527154821034580541878141837108431306965566651032194116585238889235275634284069771754760577283860540543993820721305952972497864925439251174655098142121376492866900970019459032022140791040484358575756964446287988080828861137300535346194351989162432532141361192193107443845911159990308776118652510038323081542782310479923917055275260586628491432187783111052991589890024807529502314913250961710800867296331943834962132327503499380084857454863558184218856299871202230327013812600246413762286744677405684804026676101551023405833826802058271048486054644569418768463740728219410654385118696020185269947976501242257217022016146747466942210493295366376099254416942095173389333753785752797233461491056943973772440704689661043443109422592374767975732077650187530401283078645324187170449632503682874058890478279853172885226037722287604179336883424844418208701439470983150194778019835213523680917842882501443344292553655104372288041858296358926033831110670309641832329634574881697812134270131602928223103275340144885726383418674731410039072309154578722041608928358330069255392313510079795711144133108326086494595729761721028884265412013761462475617684445344339653191510165551558081862807061559572203934866157837393302588864782262374495613480007916861875532253001576637981238555839176170795560110239220286886049479958030656489167707400704871222332459708327066154740465471472281179200517981498047593097261492579662016714308007455127497196831328502928995258339983546261519178171236015889432560963975627296672737026052124929757384221946364237635213307379038414535398465105700895822212530352680594482408748652918263528614966833549287815586910547664553719886174908634352560850022665869966567272008242436331942871807711903698238821845638526265404972879775583511730120292242900174234660729385318453472827964240662583210387823081512669670489174749682801238374341674018297201878312261026873048234886226538960266226750543385010660307681168942335743441924911034814137225401927384597677114937672050702120694253613995189909577958815670739740296019455078270648030140188486274885496723096894714643388354061374994890918538199178180353119893634587058684032381597766601901488964224949980255363589857233198860177905133449331851501767755552558192454631556735854241678078588034097700233832003096143552956840065930862442997743642750214226537227273518793928674948559318680517519379671304693274442910688701480685999452232198018215541518464765944217098658619346820227433343246308377583617793144225810145147585508317085351744265642563841097362171591945831373182872798721325446962994471683794720537501410403336534272506515147446214681751734670720192215215857744067391963153804739853572614418208010467890271273121337487838727671362817348314774299568978117238698662214683137346440183395752802447780476387388669672823948134448466744414932014775907907910533526354355926669567463977626094482697446056581653737770303529165968809503945355253393833538174427769089357391531682800726551244755044293231027999531747196650192809433154152681624259890714884294415273045923471955365263620351585498880358573751297519542932156701747510757263141906236319854474718008499589891895455437853209015082477134990054382545528757146391996888013749683179184729149032518105199570655051165255980360162290455739201723228033885551990402646276781406942027994745165904675039131130374080086573949278042076350562334881546473600094711508164215643280353958920023515672555944056873741813208506904185674174605871477927899461669453877502164247100032012404645178406135696990079042766617594822274281441580964060223654492796488218245550112883367743310177950071655097251156189196715431118252671727503909432743561988114242966554098972386118351850999830694031394265786783881899853576816348427432828126601641818025399947111114658773435934770477727800209871765087614106383459943946544096329467036051004834900191512385146325279679742454045434971451899857605568797267445511417746319334334105658056124052524044515756664697034995563466521381037094784190336670260564789125656690709829054957855393546640059201738115326701384865458133689532327348822964014469204678341619416140163265049912507457328137179238651871995679756850257499965860823591448737751348696641196924486999028407832582933322619856185104542333795801259843084916369387324874173727180866059063770834643800167363996256773095524761638175160659588833347672663755519292730689551063334432871794435179810105148754393062513016111670601442559004165894150221275473710821481277504161945547497291467698163379585452559133430177249343951116009259230156831150645334328063856654129048605607787673788971351046424325502803505303571729152429886928987789170352145129975703387124466944476888959443033101204670008368775846712804977037826437335913458517159239270870681604116127400032340501545937528806557720604845955950239539059324400795832661628447337157637493264752388520721212511227621818923359067725485787888193324070780788396674025954605828445033526749212608487772725318399146420800491996148869317461375008451422271508804328158724861530462543275121275076982794641073680402558458315690902213358228572683194778707224612504811428738658038590817031354265850656833482906890110886436526733556181938028772546692361406009460915253337202183548361076171589849571215939141036995861419979473254405383241423052031030449217405270749370129590223061155931485542817397311819964048696063099868203628363386705664775906308709113317976491572889092652324890740359832845362273767524376635656163875901833387629441450188558126481690610751272064409254108103653382811917407373026207339580957429320223893231481008916903656314898505154145606696032310198645076848649190828956848597887171936337176213342945321604888668569107658717168279199360586760881533384851827671778925297902974649028592135288031542876165937672415245072175801237475470315920568281896843978029250186491821886596875263311274726189607425372527746336674541226788912784419939905574703236138202928890922375066766615733678505452111180211738390543703675975165421366520662639070295875348562190361999092577281719792331622552626269651288422022131704783560572230825984807812053789985410606615673592680007824217078476592923850245277243492905296031314584078225927414270360217131651117155106775036809872105766226018953297205628242113798964354671125539333637849893650369862619576654241927235045355811385019179338775307891393915659792995116302109113530043069620409663702812357710455203985538447069700533644014413311061032583766471329865246097298783325411969927050128871512839848660882745444731127568277515429231183366793779431775479499843522898125098629577684821874302157913676715291074987671863602753804035894823329153119204164764603514005804425427261636044065802078419482801077601111962390661240011418177528997761823199594065464915974651141607252195923733895470360634530739171549622051603607874052997864861054045374944192419273246026537435406723110358459096227120180768009787434044702896671476211807900033701261728196146710042235232205373361500377789557940011900271444383171337789597317910570438011907469990208999544590050284580309096025896903791852906244038257151238124121366378027532188028985559728388254099502616045858664975600519100869322247235481030138252309649916925072180680053378085902470929543816786842569190591267076292228972445256199929681616976861259172335326815189507120187878606179542251836147124658493855531066222158233158320784174658495307677582026990047335831580833898698294691162134348685431588546796852744222349428034467929005980442932862252014882994895938463644098239924571224660838845233522313593590920402146966002696512444603805373874025557935425128757540767953147370277249597772777253553278326471676932642318884317808950805447715574866244299414531531963212530525246652515233792864233913615381878888795457375996074011023972030966718535802609710580666276314746684312663518454510487821992635472223949195729323222885139710464759856862949590027658753366440555520684391982911305095641093227727972278032189410290150732569039152283229196288570346051471561620270625288732293301315403022683276138843173084988585970818311811881491255381332094406701448877772782639780584108988581014928275122972193780623316389299308077281218754413726697136455486820495016117961164911052871759054311340139866400181477603321309359395087182333564925883141173591122799311525933443029011424123180486210979561124313322325870753287894191203757393164352765769533876264494067182807060493093094199897150418824205899893252951538235820592513355234347106751729442187817592098909314709673138648181608914840866387831357442892700125927505593288122190514199386224096359180530021747355170853980447209678521149977287462634248539338958453190500312897527822161164101339926095147371800725018736145638324112541579100250949111386268221674624750811577087716434972525845144027448109361722893903704311590087577697884157966174276312301917050286218877060992998581755600655046521974308036439149367656919484183415749901703670057068495070753681545277586977034349858218578398861740990540298424992792364645054619880475684039227326716697147354195881095634079610762499030879000764867410406398139095137226941824988127793961319612143756710377504646572918130970177769667911040857140404642130877429592421482148586620127780587937622681610336222321407283404354417259045847329751943831139856709806469828868959506171383652410772602611434309646178879699388927291928889719537766403206237028374422512676095396323140773818042525216717606308894438104556929722624430743878965600329398850632800044806635888055411963307408711142290808073831500184209150725374867869147137780251362285015715872684721028963996421933442525382973631807832280916884396277863642193894589603546981150835326967419615890395613853528139003255826670867355376248282396118201242136632564993333621768725874496365107170097765548647417498471131776447713376674709679532812157386728816421995177125434836189956866042957156022558144929789434249677446138463746797934972459581982642112688281122811971693152967481873785006354905776155182882604262857253136695664283028266850155915376052769210108592214418813951808090572877546539629931444975012621931068786594208565109891207567644701289798053398071034043761094750706036215682881817470880309736809328600088758057451856340972636920256119702469479363344809362375812046238103454685246228505822929259204455145942728401476443983149139863781619205143525619602062744721993629122422297496536098233076478916965968341248374619548004077476148732176455047382502800733890651043877076717477413474518153071306809491928273576524347986097999486374594798334428435080073964229422758856225237661672590696502299429600902907175679968954774226685177058156061071884362713410564145818291508931754633844306420293280994061833383727911915810601753449901419530837084744462083542831542438084983906753476653142500032164216081943038831816550351275924254414510839253674995654260328859144337788316137105845827625797642366850469821749693629400309638733967432563715131123176904956080777488052304192559319987257922979337794909692808142222482157725674808657528567998784269869821989674595866622214863026640408414499771891053018909768494188926093279444586834023301030540865358440786649428541128291922826822618582320903434071800507009878238128723325063066185471550793358213620254117467609095870232352431369941341993758619383840369264059310116665487356801224862407920071771359926622719436896526022810040137592972786843776235657196495991658308837911298580589753828501540200507713322280567192867707162381106112024804382923298253841265828606524011121103436815214329219949253930523213403843724376624858013704515359946850694954811348431539719434178751200587178678327038155192448039497796304079002918647845112607014769526746926521330551796151876444102339042657147065977663145826863687627795828908326867116502760129410554040662047395317963384356031508609034877342206721770590979749067965210660915278873697189727507431559493128333261424621957914950941175722541469754571376394210592110739117716504286746760422650223987608510831052567182569726878197747489050065125290238151230215235737863798853475949071915346649716887019257864376784240110892165220517775975808026591420566948420518108081199377606067341345956686156790849732498616398081792193417212717204640883203093276754442262259396721382168468333719443911489258954178248094182061970166391437881476486397913889925742854027925339509411728706540325054589124395418516521846102809620199080824201661669654916059351257265095057830504760671081409987554584167176191161369393327488371743637835653399778659131316498496960649352309951174855553170719942562892047773723950764386967869019359339869087260351527903308444761718209209669817461185729906219790347017304509413234062750653981222099259710299457390466287002234359195332891849722110101052392482282139697839564652574228548361732027056186003108215284093723864799922000907225669472403295788455219354884696722245147292264503159980164510233806774229019691496745906249925505700094933729960584565809434692976905889284199839242103851095497006026169610984792350418180282471668538439601067292192672651637992206329443995674133663358525076927096252487313109280295447404672846806626388532124227614187661232126244556912081220295497073502215779304500530112546843774817651002070458085260482361646001876431713095332417885376981128125193019807709675643060617981681927430154756485782076431923449996221828180117647204680344202519436802154340339062899674788928501396828358367717478044021670514498863194823449118165065095695625148079028440328881989134634002350637410275765962038009366345701964305360630767963952764625815925393330988741642250768027054122372300820634612772180513705759742522867718518183241702420799858174038743267250515975128632553066202777997183306007508279587287753561537775444722759277169031140335223678750004088522334225169879488583484892280750447182149440723016058119632416859626435613612341775983882871275213842194254485436547830204766736691847037162960643465110747474289885144443179831750812776995395477671020958080996452926227793587616083981497423892365090989689099652913159153221851309922280345241341166719738666892267882079075758741646091653164943723077066054725429211881449491260144102246680293454121044094305444634452116037513492015862628069486175466331865054428197243436612366399450459095319642370246814943681121730041417423731710439192455375098197588052671903952423270311185800328569225015101450247719045697549541221881176895421967254614908949703674534804564311775865743404320875642475871516588330868948050959913243277888571647136433478206136311908919851120018305545301939127487858605947514238003557296598144523181772929275315090723876948964007204456016587083446304771629733252431342706898213071620076673905766346227898719802976114383018111570480557015427926110766420100313553776344504210197293366738160365753677438888317803777940639971960395360863911298236567872244771953839539174419439017090420551518527781882767922327130940281110451583709986503571136425475678436763092760373245368661161799491274054761066828813822345607413419856040507017943371089476730909945557575515358533529489120461333810082387854499782772181787903584559811627425332399793785152261037988533484952844411102508630762095383942480841707697683919790414650272318952433138879462984955660958780736446420427258349909244285168748446131142408584861910369651181759495158095489569694872512248456575623372027180678514148430273532510953877428515985997242437694365744090637378028238708400295618838593321667646246855491354657819789179251902107970234541838308457650452205669551854035145342901469506196487136580303596984369699471975455569989755855538692152312360911541731281765999046843159270766534749586346701334603699160791312372753672948364050258444357056299327455639684771987255122459382163609901792139070029824590438572592802803771665626140832390895203560080117164814767294130505490911552484821969395617646269688129238719667515032217439828195910270076475709517729485656871423371177321561869567321116276375082416767381700665937496507973711982197857056206897069042808003863150276271887716887476925129125053345572220853869098902446483180770159328790783432408988608056723527657632670719717751135330795194190573404525005083981672750821657962676641388261130619761056834220128631513011198698856317940953794174525550063375671940972885305960620727851101420574002184563522238258638984966652694766140964469591568596525235093837237684319335682299850463041799718992166849833525856084522334384576661160088718240718322558953766034376380675219088160703366475158251741295369942425053166640312395325068256791665322257142858854723578882283508324917815311364265768089684784513786158587791011293269186728563530475107626124521855725835954479794227060002522645324304342220132511214686956402113924331996335638610007639180566682364292036146540567218020861124537285501460936273347401664450597854995470920288955276140803262535486109741666372474809865981248353954802804772232786071090381511177086532848325125517726406024516002932165938564873942917290068405307950084380549306563145137781788760551703318520582016661462086046249338240466578170125505563039408411799889094064378481895003334586458507801195922568910619045493934149395765216935972567461836287495049220624480163855380073333351501422631387615786578135055905054884300211982924599404719124477690191399514873685991995860628849645502098882665105525943535953171465776418986160069643469812581229309291012829447460210944815122119144355022688033435726480689922858818934928702037343397715311891450271692423237890995929057700631425625284299952043706560890235797752571626320147334966144809066363951778032218205886602923407639366709012517902078096910614267851074947198357871444054965903901738301312094882311238623632901245274573026125713389584898457934538401684158251092539176146560716214150623248967288334601279352646915464995159203583165194676495473593756173061786964032805811141811560253683044286714599602918599171835577364269750390725423408668199656119768635041904278573350051216154384490157999452677305615415671885398739079209960028951695474729994920783923745939235536708718712745324070412540970413481328422217167743148270123633907105091131854451529915840137974306800972265910017253169077416455431302959536783685269545337498013297907709043986259797950890638423606084907502435955896562714666835131743926066387290180910724938423396105800211201566026575100676041989692864398733857625868866578306381498649830358739281015283350374942490691265114104634824356102510285819701568579085509530413421154288720277096230084212416757119578482417274509838987664119171768823546969163414965172376525626978140330013142641235416612485169918185300742334179525050679767104106159152825544883334011763323969564128587387794666981653872005433245920226190347418121177482380956220886140101601752208526696503342961057528756272261086049360433462758746353918071379043005759394404340267720308246803746574132035200458884841624268890294766401967170370775010308035949312058302024498568478905822078225262463522762275338504861877339627653764864226984045637394316186725730005153801505533850291397484043785226889086650821133135883116742999849843237157055918147270286126513074878547215396791937805166756916898344234485617342407674095942233932655199583271258695144717714267169980341875144386966320350069768942159561730509303408627848273361603304898683102883256036446183222624363972682555398312731570529664911367964547399474719559189210736816114598678037465514740202651107392841249163911522380560229649184159541808911120274127270190364352636383585368831550996640008897208658455660841637053164908799633181660110310445048548130899526052674422037059260232183982622319727283313148587838006295038363389495477397794489057337922593208143077275819554441677426375852240725385218706471884031138333878827172271611749883873231161744596669938461431782479212601235972632041523843090539362320058593546566984574876288455242103981937839286301395506155262444127304292851611022096791089721306165988208287791965214738685287502123394297786765189779853589544705359033451774074683115905632235479322986213100845769784668284670951881733742599570442732355130383767266276521920972562430613275214843494041752339582527813352428355551955548848668232115679094870964593221308122566613992207121264549483199765756677553293924947584007138563216626267652749493701281624156894624713103344799176948332618206218477030848246777558495731734383007034177283618598697087570144137361385989197614827808156351012831911279350512104840777184437627066338335743661109035969981261675749459418534367089812428863480121020067315280043159326702093971608817526363464329915352091068089939516199715016126257056674146092921490299514568922847726469164617903649293586042590822713589304145070219335071547577889288404370652476828805922925642611678649376618027358017970643319432151459423483122036608514720316254256684214528117227547884960688967014061401673522372995796407428247120095121980692629668119922330971200598687672398173956974927344321708863011084897672967110082565245089169277501187782071609429456105682832999436419956471667436849767459082488406493438324045361973371837413030939953630944791220038454235744550152946181028957124853604075773850098032972075967727548572980252165934162747069618388095111573651039357904906688755513484267374305781992963866596961233028662601341477344732233433732215845026662046503087317986680481813394600066568262115119815871833613701769652058242608925063064430540797329787107478400606669243830625939055298728690339195558361744234360997052528756736811668434931647900948787510081649485659657502592327182381903511786971420432461010362632079532531522004313915307578950446837933821301223129214744075883903581974709553916076983758922217801074186841063307664827245948605825423002384688869149159158276659247025558481893223597157375156166485650878337352567064070602809431408748489072584469010240497017836094387104983282436974135209640416379852176163667820849376099457658864643423790315459868756180663158779384103514684234841977268951825419357868400375163058932640384905657960355987859487489897578776642608112308394655377172781906110428135827019607010227826830256161210518235332983246673481867977957222273237826620435164456103589357077856787032532568531105435681782815847741384832985284467255869496301797987476544411592503590825833649423514390684024875245064708688831025225439270113255206200402863873463496714228207612956600004330578659646770937856728588205425170078092956041693210663736082102767347290205554012549739411563529668952373535693570793774937720902663206308552838417024093406595897968914418204101649455363101959924464001835378197603361152467827268282492493283195227508189563508284059367042251444374670600034331926758521996639177681720961781696047314525051102909902121003641827679297527050882905634890421811850862742043361740597335498542761780594689471989509799901364369555816396368707387037321654335323555728454686950529891679884672757868718432959052289040685050663577675886724234308672768650893029387124211660077057603513560995928391092470407947492859486784433638761267899052801563733346308687269069801182834587324178737832598538917271029001671809266213344419352955173897291298884611700780026462832918476628945082126537425263327505081598299538079423684082389303190019446462592026549750190121036584507728017304702307701124646492686657933052265407235288776307984911650327971647998060274701877589341189878556073843623767350679001060267666508134637358132368037260269515851567046992586550967112957493292427394334505497124637099137994636247596560978909628455320539994999350181628237581285619871726588446192695208272696670407178965381424661661019747198951056304100566962159190338880507756169627032675427557160055460003614455517319211720348232815161439654383449303734286310410469100641168309819578534209719981373276486056782463108360370686069033743418450617572592300263116489283717163030651993585725885966431466667691247820502671811837610308763330561051427305983763902521820825774678981676829081929699686150952027732227714088983566277859491056617677805032456600611814013710279355408638118856635283535977010801745100698538980579442957329100875560114247777575122489554003984118780294034271726712462902033674640278824246520119590456936631871854850768397276625967522850180266978578574677439001551772108768844314785041051309956200765527272341461489506027532064504862730166514061941662342469694616637664317169736421254036141260097127902236150679136073448468041531596928036456920617100890730377528286345390797536777637970873203427034056819711467772628862593669229370660135883855156662459977893381455919065947817854569477894298004118765620631732867287411351397897292321104264279881461758074872351446346428535532425589813164403037336115902266527701417376088395020363054284959359924345127204745151285763755071026727891450749811572010467125209505024677701132264558064404710802584004494361816947322946947811519357895706604777604711799613073641938191312137855428501394872200974506943697062499032298877856840577097617119217037779675815314943713050932889245499249951521401195880243761733147766155815345950317173036765769944577059686373985948219879678667682977846657876280300993044500708490951820273380916215752147901710439279406802363608868584746316074366448544047045141459734441717338916728338083685120926601661547032593785178519299875077514145424576805514199800242903100486375770534520723053804601166197060231703163706907622269456209729971899299892827944232206245400737143965916491222474860841924360579629503629493244791456152215877925787211698658280026012853835286667671273666477879168398841658534809619074950394594136656699883577925894691387366096365930854170374532778102053054575239445629988517739431381844928210220283312204109162334035281309991674787084640458041105445250239660567721457227487841094719018132645539939194357562504436777764681450900669915671600702499231765472016422914506586197797954028370997122283654984356932005144999058119698284206414745033702636878501955436334560052293688874323020666273832879454512834107330640859495999531777178101626782870184720469193193284507118465167985650799632726181034212266599503889376401359402981865326090737543639973767801533300708733106254734495533947036837696147690769826549170337766779053086611014732442273063110092289112113911874104449614844793448993553599770472459208025726997872879958416461732663504105994069631236431083286753361191807665281521012741258661487497412116414315462134136264943971966590898187206130862478113165166056876376537664932834906858323349925668101379906963089372882902119168016963343850018487860303626482108515216872654226553694592423206781127462197176012827357848848523697525573559387289401876316714434884060179253363598306142300031399353719892358648239964444943470497494487033780424149585262087792178973590463401988159998419765598688630158706640674025552212854058980360184450455953471697491533224930008419644027723630668022928435433650241513626106839856339623538300127870254454333154763403321984956513093077437738322453611020937516503573505576668687660857601381167788437974330417295398904222533077661699403802348841378728849541030680480860890833318037578518012445611595495776080899405025552474782213540819688908147446558418304720192758709851448846445417505109399099879156028867243765575881269356352553400737763142920352143751730522019093708341205954060448529003601182834842163114010552988984069237603097508023384321289134236592346697088219758953980772759832219434362749603732266725047838543724507565628260313032542454856413923145603517423984594564702042419824895570750944217651970301356528977397836858159929924767240568852641086611248028652814751995148297793353932697319147159891778139110874494624215180087711933163728974443692513725267828996471695499451911777983869530129486045095858171501790399908923464767250782425365280875262621398606610662545630789868118976929877268128786500496787970705868451566318239582906926168406902767018101918783808360686596548850153498627036844385242213211755667564958625181997464560194188013127886067097742530895568645989657270183370268803545372148202314152675166002235192712143236162697854785860396721868077270527380979298740337570023354427687274191682562331590298980681885456754992169442994761722825292507860315522675581738871753857959899505703863447506971854725163722985396435746803081637688482271563995786079408437085807711200120343956383618152230691132454742879689711134827499696828164351795526896818598960119465582444893028728860788038784303807965763364594369365513623778524138893952562040069931166073392586814370566153854128513729792500887877385245398831270922077051536936496887250312977250096987781866954146044325630162993524453864870399937302167759695173042191528118871513679425513602318898514200164897006383279058508084557240316461815203473262304347111500095839269424757937774916013664122801778121242933120909031151481780341055902043570704318238452568021434330671975142926645181469340534183001624986894230923432291677550345579988127837311392521050112621926531782086530334247670486442586337363745700117654387096852750418921403500826379157875077507738647171265289828923864209378605497473034078538987647982391242817356827031433870692432375366604601311973006763793376139343252369757617777640138070010812947406900567011316675179940376233493703889375492230105975486761199489778436401310277636384706427979541780294203513296661187704460569751026777649813930788561138622014825197873272426866405991869183161839349326631803386264727663116888453700709244810499434332451133115146267866594881021840053652979373269116554208067115556824312347973750083891417454524228181498055241105892947835263142716921646560406625608211829608103339724302113837651362768236893372875903892978823447293565201246174167828497543776625502288573612564260002291148725175940355763793423909315319073255315285252001613445591510126551571055088572085838424003670727964421125835544411606373909837206055207962864433612210530813628499866446800254615962186598346855374049011455597304179486035988363559042338185445783420436399078427792622125069984577810992394184585429010873310627713947131436350751574322377807741124083541584721223290523645654836614091736166529869228549125417947279085255651118897903323606410041380288224884968392190411455764461715413806475108839337531927154102799763958001028276506410301093299745837458778290766937754088264625959323213692844675834810888619033569212369375754975478633826637904935264018119021721186505880930552703226637338463396494702722666205125235246788254489188912852640623475825405513060080035552327080489343603142043025583189747594800868441413141916929703159001410187926173232143178560263812362176432438633938675952209091639845526653585100839515269048806494775212105743922258665195146116620454110087482700963196665301572908014401692498833492251757781222388008793923644959091427291623738627882453271229909815177883185952533130251883076660639132384206791271980318354419657446066989533879888436331028370036108639179450800081067309052566431238010847245601301087630427054061323533816619032123663705532804842666432166675890656857046967777301346577048024293252313958344466997841366825930988245497998637533494293795212248449145374117431288678123550977458625382346201641393419520257365571393635970868603161968748183759218063888086094648417990530465720460935023782826196661231136677872441391765856773649154835662933242019990775693385844602731517639904936950474077045291592414031846301663039047979377310158966634809785602034697856824752333888703136051868407267536269170689845120517729149508471964827167995258275751596294277383856234407728078590734827486198922040510552172389232245656229675780836655719112520401019230395344022028786870214194883376253791784562065415494094063703545757904544885761311995089515732217785163401043617473483819326712454003193007543968883477202269035518497384241105332776062428237592470590358561423510736611159659824799066305218550338403388768018338128418113826491362916418799267819841493000636650930651364915465393243316636624603626833465704390271944297973405152825496614633983118181718621166504579907163852869401350380911660157874236599203679202577405956270690421575939001252278241556035026728396852690687073116343120876854874530529370328621474407547356370778260943731178829843895175017379405882950511689102745242557590550780248436203359837160120428605929269359066856975702522863409349538675933274284555679998848989480687410451254353940343281585481850371362937298606009043462746701169093000071529336226770084370141286596313994697676061376262992263011632237504221276276729299307802353956382890664304595359044728414370727505118169565333757150012460456582095914532369159781162524152163850502488123913651914956903360559728733574467559438478713662188220765372596062026710007122011223624634427548158344585680461195136667541715321757611467026182567170983711176224969652666712171950605975398666784202250140205835829718639177378111803178265167415940288255718537654466003127181984950942972652089370010569450437384737771579701482751309112886207500421974824597940725154153795073522884185137064554527779729626998351717226584539514302330279357186625708442311425075731433229320361348349968031199766712140041858915951760259641323507607460475803710183937587518165280896844054064176673498840161433659163751001347109271602479252084377731567731456882782464055169218608582689649259028245793408812852599548523672618358073510209980216904861856369283018230493914537371476593062532173943382796763490072008198212409735711755315479916019263993330449833735290370605432509111701235657439235670778409464589442306317846827910406234710314939809707674668287559358168971293256305094513652555953391255579736650299292411243708393334997663647168356034548922250307690750657295330374562497262629782873170954802461947224682251587717171053588466866932464961124482401527360143649412797783986920849221108283660179231171492997844525784933528899607991927372772726721683111782672809843509016424382274436338113859695500615606987081424879189764700670140952977455565052965091682660730053922992678812209541638449909331571611182378756719744394873233729613669132146878136151649959025374008707514394089504543630050091410747320341683999362572673839839104782846241501978714719409720745299061818892947084930929445257235079899948913499008465072828682007007605667644932484409863629479032822268688181152482254164432537718415628263197157632203098846880640161337220505150388174822439497853431090998067644551190989510355384568058512706526484172484574800600883193858208101338872059395466014003833320489919189902042203175804085925880710645620127762698684202712936278174650536685594392516266479355269514036855644249108696648406378455498326938041649866355373384912465639981825371209976570142515766608264272270183886543684932860378358344428802589344237211725470041888416912007543648963156036887379164102554063562916132500270372922694021635102236256780165393420211251725042425055463053363108671425709281893741875127162725566502134590785080586557736968586060866747915479873735346186224519576513272900648347496365354509800615406325742772270511319297857417792152230829137708809024708681920088372312356215018125741192349474273296216998005015831523315432737258589512273550993036638229177610647695489272331602272067577386862665135325928484535809891418524652844541865772429859664678542088209842231018946649781201567338030009872037125813153530560951759186393395597665033509077966831148523852069257351016802324957466862472394614494225732600340295900375172537321543082820490293730448730662401048577811746610969095463041140291054693511895065997570583531170210739634469944955658367667653944329663324898418947648616029701650460072522455349286701130027275265918361589045080872447092451554348676982017995434264113447355583986489319699871584225034401262868143720249017047139582790455246326579538698776442062485353556432354599055520208496618004594706489857286135039629275305048216444483305163548831338545262669117599533007532845881726527041259840748623489938233036752446482744283657817717648032410777263843484788718199226423594992748220680404384088687679049488583294700166852073128041237582618357287400196674752318146504282431217159044686813843523242091438346119279003356994222596498543982967584540563562915013572383549974656709521197703099726449033874940420977815699041187204453753610009236159233277939919209879240314363368369745605621880353425528384356963783498487089564696364722168632513648663050492826222614070331358620154340198151885020907841639319240192336984288057719773416542476501653905867777194196278267102113799330889253914474137335260267474774089455885677133541384499656838666259756420529759877799697443281108809231201932939228020286651682206801874025461308350146354408239695094106649259728877990358150778896014543951414583964334166686457679558486441864961589104841210600945912811567258297256516002941064248338008862968586237760049198144015070328119816309927787159239298040652281058078602408364877819166061943193478086368285782803916568526412267810710878847983452384931951888920093767121349721078372575483227498482182934197664236106141850241994458812675621803156211702506909748957532331365337435239943441021280107145211086887171606446363909948929295432441787466116302627136737862906175309226868268604854351686183412883440799265914027310843602523717284870345831169774411185663575117921834381078544092618454196145766533742060094086539507715565802286500542744922264523778785053010516100744380695136953793075933098968774921031163209809560380520185028378920952148615579958184716497624212686638414158057071007339786443445633325289951072345030270869800786126389865209118199276277629419072908787955806560315630641516159074480483690827070567174164389930842551394410792199026104780185926248330900920716337798819664160081408970540173980014600739087439590269812266254227973400490566985049007749301669507734308560736455182144087165908606090375262958767855784142772552678717311069163143081907247687070063195425286190524319859468648780173065314644410262351781877337227401201399957348280876913469872919124735192794024277244971419275234252074413080640716785554765832251311050003856036597869388822651398153141422860080616428068409309492390088934517443427871885590626292033229425699353798855376909882153825034666696770099353023251563878516654477130227018886218647393353622745660720759015107584839636105130033023344804219119228809363841966747797931759377128560166841178334866204236645327915083727663764186606573804132033462738358447350288223548550063393179552772962907455326838016610613000239079976966306100840644940076152332889885161116568354654594353620902079725780797053071846043717076668161982782122273777672096737140319148241118669740153715475034291904502449835568071424654995731640350047942004589883580854784147885615804923600517843700088599359870614558497530026513656673796255855561219317469860498632026395808273929541193600096588788654009009765682193800159773682723047440225357308114888730109795384666314311049277175524780623036889986357883715775289547582311313928996260653480331546913565077647241587408923187846126690876400667707910114868039369013582171808381021858103755199508037523886648670014556445076606818584429728158510220451272648349111712921487280412503845771659719039995647482232372278459029806472053331891212219738848162257593984341442177186606675449450279498487793770805797447366493980660969884798074626282408499834026295498954288727940255271748000509444902947679501737254714546982544918862195056712018587106927062094680225522232552334017961426692706127960016271537416912566060561258805454732482242024801036662693097019595726142752175166122565501148467694389947821406347694699468262476281828549099987116953076626290964929318189981536181462506956236685564776324361547886461843310757326418008249796335260752207632346579914402983474769515595513087773308078833793307537569132936335650019806264770422943794236340330083077179186192632026810266127899941166208578929746190224241562542390147285857215209975695906649050422253075611116637258414777245736978001053110026174879134503406243986894999820963693523251576284201630063859138494488860316167105613806887641377854277828234429451467392160166704833073966110454245892422830409308090559611265019952213221215652072779946925771890127193422672735160573239111542753221232937951102885581238672245914794584961756429568626704663231328300687955177243793154293495588380778919404604535436885627702649838596639182988135596923689576832945504218670927447860806397372050963558410056049680855768263552014964344481470931785680479008328590791313742366120605234989183477035297770337697458301474437708790805004750104266860871583631509129484265269199388829645362663510304131376216050329282380243339528051071870935732592974378896580720259007506640988147645754950405276091442251260019067061295590526167042032324647544413076017265522510016342491813927112212779112255928886038178076865529139297964066700272504889493239391024924473907367604698418722228682582482690288487153121076011431753567221774778602589250730623518696176586440616859649640378794736836405658554026087441579703160699924018890936312659782284084524030385827430941976471559910590415100228784079115904157332975109878562425892665629814960472717505503829790200403117462472014424217862314192004670548680958349205672423662809635511601915592963868615603857970873017049433699341812276603449253480665387567743738184808989094098321460915575683151792298821932124922683464530339689203112116236711096059015430795783278809134624637716377320477302962006117737078340155359938029890526583845131936230681517738610151647935301033662695864263578037367422423662420463853680237416449907085978426544065585627018257902157968067574233077250984679248928824803416463084904775049646847495439795572309372408703037989999008307452625892793709059598651698290362974508451249073391659515143859739575973923857993160854121232935416427537314285764263242683920192864647255316981774422240565947536467846318492938766286163938084882770167506408936584305469105321797176006990169055763919687235722445820632914512315941978665095000705569837726986431329711993348001502335407489462702568235256031646801755520049275959629121067632085692089139439596531528574508489051224521967845711188507964052396747403868466804702946680464764944702965633522591940821116697367212641601915554448369814875586903775002067758688504160797004816263312869192684806930111939651315916624457249293864881147161433630807860293289070976701605125398509689863241235037893559743922549129138778291380099123899862765185592831938302723900884056419142307765979804540210757342331630606799028925476416489546445406149600104182291587944084837342782159505615893619694819467086688631021223285338706325826976706786679713969722316016511807654077357473352575721584199554775151743024293887244623055654194580433853225523935221926387413338339175610811230658516495941863001475653668741643606256486508826839347722427825675180129726641515139797771130454481193771595614314547399154872798243186848746572970312833805061819404879451036470428043395372016855252257010770371206676224650453230336881732161205490444704091384316016696528099249848942094398687438706093031806881532450181026536082225329107986334436317650625970759167353753682227837652469511933218200664406522659619323354942297924258310437522976910600989500248124607304484083619309611610922545551052781829094652831303621011424587396152640735279166388745147624826775202925111703827563845767200777026185543487990946557876337590308325982220596064108106279077299917868041719045725592183428928163695947119307352703768794294418902276321725176607945821181620879735342847649754047949695174479106892165303801365761878638591034688243117394386671503874400838083487802070209922972774290112269459886435333635062323631426160734204867087161955464189432878342704444318845521401176519169292899960293291429759539397609503778071793513347805448521627584004696673681270499587215335146544886237829960999242310364197020633179955942688930166432286463491007535660807325198831031043278793039236204619981227179385250490602669414258320913978586901996224443930569199677570653651090147664765289606240718779796773382163954356022310195091735401575717991495883128287249209554007806353933482899113416546223453604689187684455905596202080953341120686855649700585560812752799344961732859766752265896479276805340172083331090910531902067895832088073189805686082449929536591380838032610669558759809558791430117335852308296501868351593432941679381181241970198161710377427340293984041670315925183100062853935088015437968433377902150615875245293012055776468618767085503330612224060042543644346159096969566827523113864508179860800702825482623901887208484749664199365279793503114668521697035094128183557215073276602222283309525070234277075018137343983074736823683248049298139606512745017411962847578550468987690408162207545634247918892329656976174228916032886951481379499005834787120344811863910114247326697052017247126866962589699273594990213365287153497826520854125821043156944103862349270850241022321355156999482441039405532752951631799396862346382080957381635941973161504247819394515033100886538221946294975813446496131345958314374350202151783762494707057039421284288629408136750556952333072844540134521697456138768209580020337128466687021737462031084680606208573092918658066664829086278231757026394294451213995759491930032413771314966246620755021779719512332710499245313607087645282252934125689389405519136143188234729115308352661093658039267590879334220492182744174765410502477407777496531668993752408031721134214039773081555512706280710332287820301513004179637624649165710969110228849631749032111146373261351100848250782203742713667959640941056322375267733110924489690351537495989672138865918598656519110017962079995103629947262064089941796910363242414274083353180162971488591229696297336880585371250678083534313976231980309560535822067433832926011353837938379631315635423361105965956933862040828693594685235142845522449514919389024040069263015126313655504041952961747213596840099824177887188341276987704189773132231480026907096434053625685858418556780152537445402399633090337358316403863515529650049093453090935088848065308314859497182144453959580657913542196621168162835470792790364032560544859108446210808321018903854142431043988526717020554827716787634599436655582149943677079949950997906637698203951091645107661258901890079741570974059882393578160534326088085676524703424128924695514870218129182009710743275530295855710877774614708156602804375505847090274763670954517152646850011252708779525435238780368304764650985519829705028867736032249253195685894665612959114008901469929335050591655451326504760613600543925126844342499351304989332234205159365809939124645493070329791589787590786249891257324470254384460107077162159081449891400653018895857139803000097758012065967176565269989326260279124551427740308498552012573613963891486642595755112376521651640354683624711962159948268199305011482313591866398631830681335218361574527187261329822181158321957016077526551381813492097567167156049683058389559279245119022226775938590639987927563550976039528786717404280783482791325072289610027192717320118316295391473601057574889813401740815389902948377643162965751451083196671773016320162655661172886301765780485277096327153550555839522047417265079387846578708065853212744735193815101872691792013994177901759134407916619239503283886759545514310297961751716638969475791422111400603638391909460478886624587596574071443929045099983738839567340587596878206504853168877671352567339056573712230948073157719115478276531856929710074895430607667310685910859389266948101946722017687227595510967154196145131750896902419389299001614033068861743395088033457179764591556918228383829815769092445979671054041730404448004707088450219392278066941313750502087838359481352547421182339181465871038737794637270829626446366122234435455185138683646319730750311287069092599063445383674371817226541089822426405229808159852818633362787025610155032695888195854757437238577975838877359617703104135019921942667484136470319069757550578744956660821653407767886227424341430574932075090177134390437787592338759201959504878862570577260583063789924453587517287347365121447153353014459613637384207050925514724878575815071805045908496661126016404228228502773624242803537602115128013110863766488313964462675022379327781619584703768487327249007231233038925465420872622983587839148151936508671365989224150165908748222374445642925595959561768336613879208331604021441673259012938389461133814543851880012405687581773275675271775522762436740188481078250251620364930931546453182054032133468739950276726691914652933295874084399281312622993681836278818588305217274872695420274675789990092529695751413854429621412794258566275483980283282353528751211188935535227945448350270240695074200613592076736421645220446523154503016020308360105430726524920383982387474410184397154430885839054622545469062291864070274021521410093402812338357593133488812747891398629152754418241140408969654871185258515459323441547959968906353252516288873753864312607213335889331213419513580119935336111222230378941975608653091761330139366372050575232846078275386849232120765676338431481618598951260044997771942614547155955584720398995731118714383356407148381905262924115344598879822499775068628992123060232991411869685932961966873962643351699982851293763433625952793671997151339186891254441755111497304487697908657213171378970159315692997791498906309662034440515658871087053260730607329993759474334047103406560165752872336456561850606381532731337382702362649910673426282616347753025903980799572922036846590740849646975237900747429219917396850674942066894436713643513519052855734212691978358250592730920404769945558254488010186454000457102583327704470134545550277842655452352152426358143938608860148360261851633379057153324864168393122670011215918104296234628764655858514427266292903748115778528092388348533306453297219696972479677978517056737973133823030039783273500601342783552290620838736333017486394555063332516218833984807403496907434380126519733433294003864527081380717350706192591270945052049408533595995333050485624734381698762078916505889281391187356823659094969467195984552288064975346977643419372078631055896701027526823041093652696029038926049348786121820301430914780576262599293183594278904026380449180024769222566691637709050127260625161014537368834858318453242499034558047290651792730009809015487730435509106369147328594322504291841427402328340492228529728236391551343692573445650112841503896593783450738930441504333440490450191943302960672720676240831492067222740569633936696151369769651464118784903116627925631588860113502524034529996578390116842931884446251253033594775357918182981521126532667987649653540464492753218334277853963778834365343565873771657437808116068589651862514362744776746382869645273081315927512448590359316511938626059612912720202271820940561139563147353714215703788114364635207336337633303503650856800370803179429935615675144770008975996354629750742390735479227344260248255299599822333079025227313871459223844534139880721719917242825324169442481433090234106100872130334618181500242357071811782016175615425999275103713737139090644694476273963824665810852319477892205680334868251993401213712386752067293875677459459086989256142197850806514667740330441712777572963573162302109197946638975968082090609308578562365690733849456739871916284888061598752254418810263254883068633811291403750006783489460847140152999386684479526302809202745547754726350541336874884546826191428399590663286614439856679717744331686874634316659232700218261801520563206370228805207236754454177182769174580678794735402111514696140333355217929592711189276958908241635656231341253489713568737935553883383634362637851646633830005702673155683896396384295374238555949749849681346862867078261294610611697301826247804781818245012501249404820513753536936948324976538814256734284701908808595689963767896005126301211839034696198671642651112476055212881707872326762540280706501195668761352043694143409497139876409718178189760250616569400397609180516592967843152077527333933661974777079131335343160601503619453543981155664143722581580584582113180671359365941092143634277303833414473772925125255548201574371201468291279276656923363383174766996562638632411301019090097672258593382357143324475352803346310766895270240021549029586226983985392446824695720776400359259076228706383122680672114000371879698092191090997606493242782336263772179683580061801494536475239676869318483369145730056969984053035886013791857844940362776880096641660688473365147932172649558614931502145225509591716746463872449875245532143132327330081661176806483481440526298243241409059049707781264853238347104690392534432678778446349391643219101899523274391124012285227196947182253587488109736312847802935810518526970128112773652401758902612155055425115462745615809771005294773562173084069856486399135740576158869766781685027660892357104541288936355871158993127555595213022429456130628563801280574226420137047997076280911212287229332254310147507030927430877828242486383355775363067882008901125218703165327524735313799768637651623678027958478027644237000106111569088207887612266515316269996040538373333808446191406144244073486522931189859226566470707145454807600220195940284254711345413201027282730887386760316754420331005328975081212504155414561060395774430518789103048476441535454647405902230621751120366258826767757837230358291367254240334240513507207913322407472255059723753040143750610941518801873010363711619672684400962744679473060894773182557718316602270789625868908670316440757296798936146748223516805408024284852521206970468365135424492506608949320120413667648039865349901681233174374987213879427236947853824562835379696244529846964597645215449826566069836457801071532971245715270637656897368511438050902871770778889002774545763063632259947919780093366026949924675768174530423519172425715801657308539696809107275548423891372359353158743360828020749618444194944938715470035131556822311027793188081824468493190830589375559417055639941301719790873809990288318569869679808096234401175446823597587634929768794642220523598802078809303998618101584504568608192582756182668910140579283502984155760168190268424626872869440219471478581350022246247860451237295187335874195322989922185775288862162657530588201751103912869106257089876882510837831041326035068777125607093469609121508728089384337538827957452279009167527974616521637772197380936561398511544886870319551142640963369021067946966849489864719855737573740921429122563030257120880729725592169445628920137001571428558350013066981355352379100384169507765529241915257456245969967914231336000178689584127081019029074565032266503247391979161775347309673887473867192086866832639827866479922249013735671308711745858063130569699818444742836923236134775782975901156688833534274624984921531800641307112745126603372456235947689747571821106007078975394954553453560550758346355576598188114154692392580022324154159411546456211081810515055769250377817007094689617049292726146165271419154083560045874590896030583169514797345676894171351981868049736962818353769026673850567218345692568000052226424223501607534738284491818867887018774783559259070460514987049731812184597614935597137320781090533724909953962603304784175467774125123279663813192560058456923624631185396670355073295695016771503665684540741533935944702654749115489193597261166712694241728027535040373571180028671917020044358086613330544536069837079163505751228013008869713166729607696246211765414775659766296561136218059327963059391646705334548048791123110848607968663832409958207444137229748763024810541266010863250305479864370730307974290983074579553550808695867046591500138617345002524153540799201929273977264116832632668199770570866339783523217736982955244696792699226615483408987757553536262275163638282735911880139212226989487043215613675282794140649484735756056114984013043393488873289098832916414519288433300021949925640349743745886443359636780961425184395853212751757009512570027768500020112198332003688200482599627556746919559068032215008678390721038137471522243876743599506704195153991739733869178323400379751671956100295427600182946853535301671878115714080228907435110822278725593864529711415038309932497139103611933875217621590961417555589655904742395979330018768810787398108388229775930351761970583112769041912429996333997369196312019590318531349357842132818317138767145772524927400313981445921396654050587512607826637509207550807952602176440111197335591933812239126928394417434459087527564786124926276299897349887413145469904448929197427590878913350653559184238100237527760117806904498377830653848115589221781042684245501673937745451528030034989848869767369857815654356854144242990571029624002344113828185126321998809201684265552007913975488798048800404428890551231218574377718915849648479094850275944597532523156113534324159629831886736404865449259746587519053768930896502164243330737915843845387209332744065807136716892610172018320426703338456846258954578668003880211616997677891920251704198922250752727349331408491938262241134434850813108901163803816787684948652816829070775293316748494587769350491007122195114978226259982383350816266934418315031454290324330363694575696639615580332358220481794957143569868347263916823613409916868396198163563177179727100110958110275288593048550775121808288059296124206427235079128236315022393365180754515512214410205150659318981366119636848512850771910269931767645757215891167835792465879065017749022605353349249715058296208558423229423020036171192605007071846607416780087615385841229294997971266093013816609500936941604257434502442408393313392805043792089825800948172049105457051192627974768695782237276569153126664514966688345118882269163620820686348736360735071320200680083123858620015526339440577824831582372694003649491516589765658166636175149824678759023584483430094042453374456933241716050824225476434533089014563954830519037731545415790144949852026510906127079791764921266304117258571205903546522430461601184647914013140167913885355482700681773853164166314489908283058758662619922748732696547833683900116645046119848551414225326248599455369842569667598680407429387576157667573316087288544612363184025158980688738277573024683489296318562241039679208061170357326212113358716467875738296714087996201714883683645481715172666913805657206062688306590232569995501613180914763603552565257873496644958095350355684049135438355137955821528725058272124757428277420312667632851469641576216507469873785026341013028347957497157152107076863134320588074709240262871122528831816281186980960826013083138832480087380359679559755047239801408812760849470381139344789909598728074230309335670880141435255693202791405588990034293576497441443431415925160138368015935209094676645167847803970583225598963439355868274168663818458952090229676966506176751331746487011622593545399757346039225263364616415544784955232417704711391717723951397934464436227656965054064604437492289715635814688967466606554397320503866327067579829414629547789092492702937741930852372286482652249106709754114323146125347336515677810884347222102841131290931895234059380414583149183081991046659881957832233280843201042739729248685239982237877408754894744752904338658905471905934182059230990113134531632963281029214281486391650312527968644774144857805513749925215265661747038876452948749437341374160344427918881041168779924583661026436797958446940136797689540833455396111635451078422050627846579890451741864933316643267604244468244080931467498140503045583235053571226748811112669345731643799298864551313072676088572287557596801991494437420191462756599136682582167059530349435767192485050741302330594155468541166286421289300917744485988676896402817733669855338243599006405710302370744262490815580348440297375903036341599513643467851182175921371175824606127851300193929042770218383943952616027759494102501315109369689571476624478292861134076064232064923729666709500198270564625358121470727947612568426960095688988780112209485066882834985378950061324809082529663967563416068263925365447641587014380544845172816454978112010617310747393926851667913419334785340872362987528004562140980245513609958516750740517978738795865346315126142316044314197255700261310645205291639455761722514468874657130592969971004219375869479286929769526017622913187283407530360566399775602040624878589529763015159520984531297998480813910202893440895660505731725613842718730820991988094353239489924826097747188798327337648622334688978939887321882831690022599136051676393788680170088199410895587903800690818718252393972534251144794299428378166736935770368552763426812389563055411626988863358412440290295471235329036293217640195092312374984901165074493778081722275559265084800442564563226391813355418916676875472594786877215010895110681402595014424210468792693664657757940959746359809047101236754914099933444721739598200176922484446262434466636361455807169983223496288929472600243508848105966101291422368088824227209046705526930147672712863070446762635915542897742218521964783443848988493834163409232163715408017113638019632144357026539477111867944348118560771926528975937242123364074316154444448516033669257987644591255223813351672263405158287039094351481990169644271169478852405704507390349749343873927941182087512717245155969725757819516827491515587586343264445059926803227698922205579378342008471034302546244051594012722110545546754573417698550321226032342031034145714927165824375772818855939463119727648454308332641882957443084502473869818563624912306855940581217188277371614105270272035979913793851415077271331720629636083560843362023637769251086201936755388150407140037388435283256173969469286502748488949931227201650897509552052049808977221559203001640825402038843492801271752573532575374875450894485284169827795949900629515100515115071611680190537370173036270030851899900539598716327409366310097969567760373280881237887073742228310130197891306609424128423470786735883760478843552605986685117687374942664176245816556985453461186529817745759927879493122824091066151631617297970954936907847170659168290887739272287346412551406457006645719292743219978987696583106636718291628959701320186956311345244125423243199537226713321420421433622581227668240469836628339581791269522901985795720128624697356544445984173659269224889933329938886132657565010781962515862812244393465797047693640505429719051094594033962544476502876364398192747767578582682702630168581980835085894992778594335361587338944946014486799878188325368449190558648340883553110524651782048726620775182478193504184637163364905598253850304723385817399398966974013393991189223741498829219234866418055311317533283863022197733700324333171950424232421070921209088823553846105727327845315606580523712621251607794819769510412098235020633895704064666991527052179106960101243322120050732697080863198319012488103507065177797464226426614400237218313745322532579008794112597034557498855949568271322700615112237096646995467960247021600262472261528347206778949318943285014164234430120889410352538458390851393581669272533122437781965087242777386904895395227878800717146105165017554580908450034179883945683735482531627132113274557594828802869073444681578805991788120386316944745215981107714072080854181604203539258866434962841126627062313693815215442525454489706841332576194492247330771021855294881210117841314597982718392890442191609435360277884272616875000768721849558106311040544137773202218565276012656724192072748280933706185180250140187302064308032802891066873323751730228691115538612670881522993735284117125784784650991340951859848744406552231018303394621414698976024820479787830948976419121293405792671851309376648788316331232008949052113911686921857500162933343015042722774003422123421162257478771126845570530164063738004856178768464969216357901429184296987761679723098166239579045608859681307348069535300629746668349005912223088463476705548365361597984516018436548022800071633538046915440071610975650440689485022567996356695532247615319048966139160178534952386518225416600676725687458530509665550304584292494879585235916595240915551817447945135357427038542119142986530775477677957899846584637050213002257652459367005422616552562694299228886058436986196500056382039978884531576536227865675174532563303024284626481451155658842292213021742477817510498312033407571468833652475398083360724449366233060198712183565710720548894940747555043567078742395742826904348736245200049471681538376377207462072474438325918322516491782509816629158481803253088415473767710809981628809757485096201862583365281821285629862306972943192193729715234474819021596128393021639652786467523083715054672370168721120953002806731105510017159369897291006605815201803617105880144527208999919513668956897143293217057525718823392667996889701606420050940430089625972182011096502016503889518731081039735575349226104693998875590119132638093374481077092125771356766281058347337297531883558014112544725525711753058456223879223521222626786778305388143190013153976985990952999478453471308765615895588996269516616396146827992457940730788561144095824210114177497187775167307338635754760878832936077009099095715110180405964108231463973633794914249150528628428925985639957126588599245673004682866230262173892431685480970543654298875888148549405173873341781067982384970069278464192157276623055721751002762255943848458180259123120913006899003275366469856449346569584686113748221655839563103428742497031344245381699664059252683633034508570087339637680397762013285043818123105253325750454782994801296052698967960154628381070497674544974012618370611539563656302580068701530516291468413735151410763103594930629445607410783726488039769827864093709250921705460266850126599564170588889673785530586397509742437140604954918743208261242310322528177593989940200870969787692476647433684140994673446939379463945075602643348430426091699658657973416979326189824648320016865412493346309590043780447012002426750818180834217712749847255577333978095127792035568841601540440973794976770136625340633320241841683105273613878872324418808018474761944334748954078480915023144271074102952237293350119340285798834463566399317572490696077000577896547831078960600973739330371091018214071005958109475465056890236191066387487431527378146457760455992859768015327366498523250242831689027571288752348384948855770361171240408228282221160593226928570795818909492454606795059233735837375587034989711334884016419036147390840451814122245626929952558054399088175199813353330295269218661020394683708790154617220661431537166359338861727022422154320149956604456371309742040951882924645378795032280884505312258059891005476227924964862116309309929935673757888577539739860345754881188686424302876500223989403499129937300351195701106016527628648205808417087567730818033858619987437299188115598343746478771748962448386210830162560586928248582474223408512318838092775325171845283155797082313885177111174560240014619785680484229542754024250096619796204164391629492791763271034033947135509255925909675987798021298346946147520277006552019638262140060188795549729934795523824147344892917166100519886192066687710130325639892546812310624543210096462298329016856482292280644168428481598997656777386247651039508051690416692165337977955059750497423254394329961818070550079907941676078430876892830274187775034826100841240296331572576255249183733331268085865111549861867962218457287077565842344859037152595957864350208911302126952056869396369888067767786057670350904827495870772849187063655006591311463904318102410989781253769641292865328087409771513455084984380542434082546734693074197337787384176641445082259478269832842686182128197703148821442160896216037283574067140408749256739290010194959591825463973860938332360938652764047642076876348597662355772379641456436186058675658800782085372392848464150840596934299435436122555714192707373837181949376201151659192008959448150837724182618035148790459981337134493226837139019905319821913767621830520548962015792380352319543131704894757399929173931539623238381788224432641858070781292363688293215789799496464051755904499921348228728038231513855857162794616469734825812784062320517636316724359261277394236688043618765309039908816180283261939672157528359393636477304289276434731895263221599481920070796370853924424779418551461969505591516013038096702907438384421857892370737527073662652961449744258180658379182538177723022491581408572522633213806083825161367260754565060040905792263634227622136983329772405866834450283041734682633571804518752500422050861874209035724411500030039479508283858653308097965878844876855691032142130270005115354926160046546085332566016450909542712516418338401305326208436030600759577321507945232932015898105828448762927532207645203168175667891711915762500446245882340102776424825105179175066291310197991027273644883674753296624481309120069113138428413721041810953089927089280142078610878383769405823565264003688675007608675867911275066329183724353095583664502756863196049030400044106705769167497227496924904040148558805265278114081459884900318272502171073054005537617037271260737734743387992639543697905966973124864083498314002322499850347713351814230232501187543294512693908812757282239568125025530771728403349999990848463349956872264221082566365610752800570633890938326739307557074645535190556886067695399632953273509481383790562543818344614019897946222895387208356392801727773423380482312409903270436023204528316265182486617129506210787801620699566245898190760111788036518006785068535799766877895998167296601680423528709216579840994997749439002994702764890954309115798048653849818927423884964788053435031227458509822283683632707505220788921161916288561396503689963458397025012872892306927160080174514865707096212872423261306526896714437276712253779655204468672225425648943933206788464427814555504021267926440650108580409980992071025314052182118226994958950735505854965243356551648550994092078304036536779090912592492859267683787744705606309128873644259942486741357263273196741680778573830355992492346468201333820586202262504682409337812399730144690410726050204716245875742448265667933631366941201376895000516618177452140141224316746612179146631131991721836628443933283910440953865088816109179406049581354987517641810977803348321365886957414393314634317276987687715103420332144787969376130779735979270710193241161413120442834173889047591460866322918317869206021746674237377788822166038473159369257752952784754030913161582166268297611266407073458900729345972249132917964924496499688117362228602546812677054100073063231729406832863243716244288422886420032105712851623156712737953797862011201257790231574457574895579182769697621997617948171707842284099793805069726516659171037758594019179760014019672344855945692904861571831379025339823328971330766273696773083782911307320474240272687533152054640479124809811445185316544877430351975603196530003425281087463116613440484579504558887286587160860631877428035272011339154107811346094838707650072075241957904446074352654411726278555432897906908423391724999180782807697521866585060266829429059965581815365402726181872567638053307376470688177012577312146454611732665447477401233517263243546340091796239237006501107123023825469197238685428134819019474963364006402947307111169971830781881287888250011934589685142719363267204096339816869122616691131663355454841830292051033873292786619340047044966150895284467672786841684979209944598829260806680368129431476459698439460934507978844455067439554790596226945253683512443732545932889646267398145555610128557621088665223941896902785874879477002128190430250563764875808211267803585147844988080274077249303925652194583915170731782841966163235685276426179866424637425530052604841313772485967318339129259946643692956798368433582392204712291655280711171891136009630813722590013875386859945670153812411747335201999449270423596196122232659264226806396425851256638942728393577825326437648447791721776491813424066156345717797415068803724556666081821672489718863595047084981940906515125504596414602755508643365097928162530777821767849229262192929836734669703051190220961183011547054003750432882839909214497073131938219243377223856520078167718408488968494743826088841935829484003700592499160276024517946874109732261636961168036976701778564350767960525752089554851470062306780629623940361939911146985754628440456874040879471479680482694638704112905637451379768088651422479891549014690592828257444695888516823806995719547334485395436845859916694922438632058737794998080463577979666706181485436995513703219005012979450999182683494604949516613433346324208059605294994848814206897636246635114881837664120135122156760578349124904389752834997571553975891309416765586342839337619880566840525618200086119865529439834246105252019424433169462313740717642258386584239786059355473253626201950852677932653516790407225169378886836751645568326661705311901133371385630500446012569292872461016206504229811285891519815326766804876571217355375559155611118308147795568953113413385977194301715344709908911233285907883260441995741977140796882926094903098173220368216359396394874774970529736056890365444149580042896786043257612309277701644796968698947931960618175446730801496615789773698835502431853373120530234222146558726429257962300953755600744334046113298335079801321174020536666292409759878958009524638749121611465739645182492911091336208576186592395121548796161433343133580767272424777238273693598546162186604610993829151151210509806934625905601846126746325980091866241183631394624744805603168475211243936635647977701351237007044831422003493584334856260276589315138519231778046080141597333299459352453759118416200841083789847974287858501871320031324211551569923971407977549101091808330257468893166069178032979085107999956352598263167585215756621889835087823440804272450281599020359758482329192977621878254512016334056624376060447143422367831364085897206042518622979298533911415242975685756513076501789290838955675692352085526878130682571407424325852956951045151978235360106402632798286536168529092590146226104614518575706821202872501160893229885466103987067634416526395296762004925907591229758894751962564600181821520150941916350556526610271225945986039005219915137914732106231442987035739923725162149166317091627396680728209398671105263440041851397671941988258320030021643574851783689528200328211642441545594849568720771381886164900694757378972996384223987369380708459863239561145930985290447403874965153636286190521946527636222799161292350425052157392653296549480387530052119053824410664536948999463868560585633107964240362389204036312344878440020422905884111909306128140070360714969723386285654646708782777711981082844272529709391401095645148915198471291802616149811298099236690591549673690300103751569752425741484585825427405209944753614183245911377613153398611406855587776828495870798620291817473250212739678240221729040868232430226807864856331992268047625726189732123849784452289713653962827594277332832607427197704000873591070563284284414567066608275166978647417148697945111501737053704920753278044838716421823699870373173293960132539822769408179401967100222489672425721243817693911609505522589332217997715908297691262061837073098151466833689207593051571973739209782320724431812375688582477211462915426041792812944553098032138961712374145489864449705435973295554567321911903755033094490979973974300445527491220317965384496265318089433788350876635132032159033772978460225185910860605216646764141123499812960623484372620493639204128912417088698796863507272499794816941856261919096860289684970741251284585231343856473995480418597081881003025212174454561534266303040825565702384922803448558226851720865724487225174285846458693768468436404345597548494500955313058237004372798478292172107831852399804838845863554540758618470279079531505656482860670589347084574207995607030497998322138800987428276367276663934923327437175173555775533594686704184904492406840326959910069275245797008206115367113714217515135256141204678318652541586856227460644484971583801850822278669972147702989366235837493317993263129362870440730282282798180869240639664965742718714925469181599882347866145501539022030314097125145642563350778156143158719601913098163648529889405436301269794131212407122964942961787744370872646416284912519962285354035096807793269804848800782054506815327867252284205321696846270904397141383915203282710702413041812996532533916944584988251795756192704191520419953294496198028621220167657471469547897140997417638489838578442810444304703106907247613634080341319838912961177156225183439134801073285683177464290041672604579603213701595792158643339715054266225260519488460951701711968624221081433143656700530953333234595316191089628168067320775919320269190607175762757879965206384632073433000877268457755418475599068701598449667998324809305696781655779080386819100876466202870149044621131298796893961308135832633950556176900264152253086617026589548009627578965317586261678297645997371760165068688702367175819698178580516849091828447238710749028038420443561142490333537122035997545790893640116640285906154415746350180999125423624127222345378425777382811651505320944938868701234146941805847583441081700139127269834474392625468016454939046623804452638946811412806141236208373601826540716056335398821119831746958295964605052267149888307176967913397690687065813941686981786370401532351476888558055786826407630504157175756097802945232516874962802288986776059013661656790219374330942524142666929095118006792859887149834293812875027872203720751325410860536904454620469884995652066373059511358715860187964619277361627884929208846308314002932554161511386803749116378526230616322467071589750121716138018020986464676660993700491181500328747928114108867036378829039596727468895382628393353033108012172454132812715633249083282600720713047009548633808392881752715767652964682213860203079152428040816592617141639080948368197117354622572248679854732275741425667707044519294070341115921115815184212447774842149094374272073361407856494516536331207916089223482059434892220287613696588129581016255420036039564409794211969942673293462566285407100766432141454103605979214332340561916206221026421636479363986847017711653892030876271804378079680299871389243661568466933438173489927725042941704767242893785839092782476146319787147482034390523955948010935340741839531128960471975481349320662805643382415734327859232077279592435868484037970763166403732298139124860873267480784884301461559549698201493063469625674167992324522465363637506322948887233127950234353558094797414879822263971872455994053691207073185634199562077181576355482634553493075003842607645361165794377342637432691171493717555411906051300359855180084128664172323746587029077807602844659029524579112552717909121652813599036910880194358778049959477294225034200413687229396884347721033090907526611915764799389768577379145186967345038024267121392573047213966805893653196121624345138359251892257522277799494119849517987492352391712599039085955808327101383551572122504126388376593691753802847891382279288644980675183115385005245200796859034021200803434034977799370181184924590038805808278552029264573054438768543739533124346581057896139166241223010318607809775645282716538820198014089931924583652414759698713163408653009748193639451269345302988294120457982903559116504137033449250947823171331598388503524036240122648252305613428032690206631966026656747835098231309590214726181435613367563197494114948404763146942573476731155958268791088373169070233993217282527344948556715580635511277843893107054682414955636165401848972040309719934078257092072232102522096056810444975280600134258481051091932676684802432494786424370781511701284509867617628749097896644563573942234884815417672509709052894435971950490153134224692744410655122333361328647268289929974812883670985310332128880016282753373824871490462133403677243886125413291389250583816580258126549448924605178991856720692516905465484703358871728682014198351541349757295361469870732299950248238401744348181338577561051289928170985006068919125569682620799053820749234248453699696451292603215834377863419824588780460728015135567911199521983209538332227648882233741295754800926987260438013458929672306377200860779594646443099105529261170686168924422854082686404335644172853589789813482353145299852037897970827806817500213456580161592727134694529018791880409448952260437159321786723012964814756358493985550757321760487056497517645365003311832990317882546975874752670716376813253706190354989663942255677686147623055114425676021810750826313148232423845248577219275697077754508600580874129994204529453494092466743575197873449774094979659656476059048954669674009250241214500249871224906406190549456599634102434572793865745623449594159541132623125386177538381971155106624655212109989878727543866757905748868304726476014766809871856840186074590313469285767648347505256405403443040999737758991695538065121985762058980697969264408245555363905740939756177742265662227821985910741859471368396998871806670811680431551095302610540155003879495887338024315356439019679192919008134670907338608551998351666145898958918394409280634631090886246463334160727089441954986987439285656110971098271583977559199073428911722753123518108602301087114729898702119428561344575374473528202460872292291200784479466733672751406005443212109630443452141210338184996947048003597597142763209237390696755109843962652673339323750460219790479754149881854168194182336725679009755718185872526761340743778831320314308175326675568317035571942080896327288871942996859792202693243901497467747489644463233288330496128127911964931128228934554341406827292467525200616934225157871638599930259051904078854117263982215823048976370546240586017686960548614105570613613184285725092803134424766796589363943627110004565695791132623021730837674698634396074612873778499625455419266980516005582636098813589114070300760655671607401699499687950713699578586673170035160351368456913373861447508529856795870644301094965239544371571897512896036953789344790320695714889726545548203464227098871777108854637234712816662778626659114305774519806784802864424959224372345701393180132825333835310750178355845281188029747329458764060731400261313074450342327851112174529780834846803434148799201944504430369159419654219725597700583564302971911243882404948913200103377906070470531180270317720742413158646599833092388755908569341955162273441092245389864816587922303583243680667680728689418592486513182012795481929485885686687265443579779312702222128790923461783630593974926662151855251461523741869485620157755559260992132322886991236381554888681191846115696121052948179986623324420657543571384710016277568444394172932861044907832631778417791772787734767759164305228598919663266179510315932564701964904400636184204008918446434767752233940333233162781348901847025257240008321508849424255132857573481821147361235240666243381723897343944538940181088392585860584758117978438512102643011486847391039837987259178521012191109691154294029788353912983234036738614287437278052481420530308931347635730009618786887711760782439617403174259952233176212290730589655178890854643501165682969234418025715073098148337630498535837547982856999306381389723082543461229899192948349994146590811232774759536545944201447570483405278154499222594223045177761129053250904485769526903017576939440706724442853470379859929186413232391927848988556694604374186667254394534159871288142597274879632711928875620602197199913372417193946636628030294655335334043634057443241431875343225625223898683141315336366882594696648311245346571607038086627840580638952035773971361002954686243390442484896206653589681021540458264566061827964649424632211489942296576803082763271612924732344968684381806756365374258105674802707670875274149068194319555849998209424684637587132669082867759657752149012314233504414309800675659561748504774909672222907639478975333202806652424575208788549572595366286846775232270034985473938039096275771960585997469739440639998062011982983205179007316772028423965674834928469834813910376218293500650336476570761823252944509696416325366590743696101354533767561390017871557206854647459446441040391938707134580698199393482330899971146279032375350797656301540747770454762741010518282374079572511627770828628168976802322204760290318791330191258980193719590267997616188569722983830683721699474435025918098936445395770413121854902293731410757615122879382207623909505346914939200102861462635924162239013236335537524729414331846947450806043370199692807858220785990567820663094120506145551158108260694606707457748570453187276186245375948884879136202592691085269749407725561320562719852894094833034479926557580231226796466934698166559369882713336431464387954862054614667849969539106025535089818077810178613536589501026576439227027970678107843049854837780777780951014733405946926547190877507451731165424834937909616626363535158202332576276508599321255807589051813339220774519117695134888345557635712332035576646795299138992324206486881223963279606468952826799529474961431124305655618618047339946286452502875452780838941689109425945191377852328260054833869226021856830360639439915839746569881261937537576366191320521539332466798738868211917128417675921500038231989990477688519835096322294095814578938175046334033525902205338125090603260204278066396907422296685233245258673481574215912162228224918837556612690182461996259829599974582074857893576641736338606277949785351322049331324495439670867500628688714162379203998878351315418889249316074212562607489268279415254124424092418023856056599260969362507422047233075785768925801393678968099503635025074281666183764810861091926946537058928555850558510180461208904867872004024997786672236609818269480903958209442361938267440357280086250785033565276935022321920383207685908988423608554151116685311447481693826716121604234169850986566051919640468654109874459884248280534444277606082404052684258497329634428739595896370946368041402353861138449263436134678914530337842543429341561242333253702759044831795569274292307461006364413600146576483053074563157901818728323874275641076954927075954157507173666647488615153104659716432048349554564673593892004455233374264539645141956868213626136256657170600704326069196353013723745069373172325220077743991085199788293971852705165915519266588371516813768116685689768577872156861717701017889929664162532456302546850621610677860306433621506140717398577409682739590745263438997581555024106614679651871569375861454539387085989271112549961371463820039514971931945104870298553501759275789411240756366468408112245881763056352745955602845295492445498528686813051219658101748991008882415666831443107806223793557837959450497668877573380010449879073998819376273989411447408451190366878315950958892856805107003678852275439797677115992230560305895451751373931908822530435385666634685032236998730637515057284168177684890763141544720426963025564244535448278132614434202014174545638081309070585533992948416529093761162070593879576130040533519281546089347539173581661180345438957693601114643403064536707859285955529254228686166462835376039952601975400827695447220019856497189553932239248307492836097042680372190990842243130762260277049500958027334318060758481566504157544291834330615199120211707314977313369292392642936346951384891643308074152173756396399546647749309096915172622772453125695005599058088661319049646374014613547315821087566476149031560279790123670681880370847911856823251942848167784744231844594611580430244821480420524470327598096676720528791133553638677303833542830173184938347445540969671292431169715708683031284851390594034197036892881537646906731403892079010042441343547156381266786983193717351157854635599073503644038222856241407244883185717695453945787413409005192585390293029226515047487565136943609641172080808838535438610477017195971952897009215652457700567231549337958054083147314533488098237549142532421646633128038246109762798352307939203118120814545228039157854998023193541966420370926803533858784497273944802305424324515143495975591486302618189940726977807832208463147057110621442149433455265739353203020274009995555082926292826587647658413213857665442983774013072242336994982238967916540817937573554982680446186111621077012293669184573892776219129576244088784275460176798741135274877002021455767387536678148583123896386170577431954108560774939490595270270094901866665697436574399039300936093382391576015353394971093276655675417519762592784028504871918857774631964395832173156435507634149476814498439560920720423705544042416702332146890668413808288922650728866075975209017746029964307067162497461504486974139371486456926055899536643241767532308208927411779329692215292571992647368694851160135481330477621529858928121300678164600494900037958738363810655929011933436417323534701421615989815206815034286920205682885470764206581071685764299783007232805849670254695777078976637417615147127299543640661236312531616688759907428401088615931964226813359587375085747943333129295629440595460079142726996756227298755163183398890525546789980794371351544888828580873265719706058980583904698887847351012679840895454436480644844286565363416617164353399421504757070045546130272360709648457089577196737525322805135146307082223483047412365543749256019498957880743092655386203174882607419496508160449266352510666643793113443028612758663124611676571653335862578811912589030345150720656012983797417670946523178449854304710492104675301841951095726793082057992473623277136917587026598156753114290942941817325825296147186270642275708735358858096280072689709512627658926398328262307309310999871250745965803289998879132157470453182951822055176815265243858873021819609964553970218987566526487020488236898809119723967755253323586698083231985162296002721039602000065211001036176681191595165931588782990968032857702121068711847321084865500668625464562971048154362150239344535944660977563096193900470419218845880282231386746709651061352463832143998358410674081832005416883805349104901690597480575248274215700545762514207830288241864552120245358526262295836477207534529841903128512072836674238311232197126801475537371428100481739746319223990894789332696639839678380737883206772661834775546247305962412541457779832453421205338974381538917035388840880732691777131782830813476666290569227276789799426999978538723040814340607088544057213624221325137934151453150801255273078097950422431569968002970450238474049050593967573916447115269866197727911595498745100790369580579826434111391657215759033227888441914298729238191109027544665893971375404321627635718471994614347936550197600694499019696782732225390497674215402012692998745647446864783759127780373927089115855175765305915445210939304046531033894521073169015956553625237051161060553640692735619799971405174905471670478148369407514049848003811722706430968195668296571334938145239329462622506158055732621647199813983964965956838981880670564784141508568347156037035461935539016468060495720650662654931664666790265010073335730992999257211734722897116889985430811938611723642794980672644390930221091114289674202082238362172351943876880973731662062135616607674185012216857341628709047362862267630208349819261959214547257183062387634214132714569579281534496776345178732062742060814079494763919724171705789580918156898776819834560131866566266041252415834799783318996548452140246723126347851294204735186883120036237538937946251480652853090257407928982722882954279808436214298282517047248248794547865749042224121713114548680306853073900911088952525594704134983612045880637250960304654310321433347200450825239993970800369646863669624365716041398289859455214196137176268469741614055993665030713751465414227789303963643949884466765162707843634423776003533857291371611619631487587789891724798949010543753231768253168926519660934922388349659413770455536759771833243773989489165220842122414485870433726790321536897524675365303367007966271438202803981046967901981676172578703150998361664610664415216313028076378962460712116183686188454519468455581158170464788860601972452334368814623397396927782529520970537904606764748851039209897984140679224447690162728950883441993281732644079127370346986953298776508441706273015051400404178781459512646585165026522390067753720889514617273339788493921940258433347995010441847290972417096929610700139183222789445086199829200160559466938394927181490165484205363267714923026110158941518527981909629707566189480070994586998355829118198524819020483883845866012838065121414396057395823937210962584234020078635965161563542151282370334556737504150575093973904560735591910384549373681577939318017532303121666508972733056026752183923238216895846398946430724373233089453061548346563292051510205765927905658882038554136906739735042369305828535421391276435529623914966343349295100776639919562636243148432717799024884624004720708996420460162248812482938696354803595076514213597351338921739045285646114828002949210909810506321799903269797251805562774440319555569284400702641870012709380913215173342262260998593982835226564964988449402721163547181729518229501704069838637645610364079961395056580589399255216795773739745699910276326575207918914846456010451318534618344974365102810254775741525156488260229583534386562812984547199809570064708845300484047183753957835419462963225677790188722114535733324219357699732333327809304726494747491719554717790791181175036796318769844488073453680246579856214334893401663649647449688039612871573338218343625645170111483860761544568002284007337699813374551535052252418413447064898772394826823717636845255960992367601699559519735357891115792313636659505155673307410096461807007124280227193803661889453769421798380215061689222053370229036327749282589093770466932515259306817973678015793103269108765177751810564373326491575351630417218857942548301792093668233613940511438218292017827386275875220145832862831096597939931176739020514256701390604114622535941238690120443008972779316274239719468198352633814403484647977931406599801677506706483266287836958798776140191711326376062885999082365145344495791556601891671171427500114860517721743109819663961871333241605306490240672905647192681523786874383668891664403902791167999857571285191700247326261026895050499168999834108272251926146649179251314092048589015518266619886205215937595752801904000211568844933087787031020327818105751190568542030137644365933312238350391237520123513563929002121768262937537315227621569968393269367038985516593359394196554586874396457214273356789851281458464911510368146929823990526742251857907921384795452271633768261019822597027840596232070153037155649302693628521068079608402355128181531642219657963020307102830503141019730692990655222280217052469135857292026893721057310176566422099886959318434281622020379682540210336869052408811575273913570886225192517763693837552989384107839466715898661361807714577522311698672443487269204293676283196878491730504884710495175252663892075547126940971747177487007650428206134662102634527257779057917566447938568589229133860333854986454261822135750647872806657032538782412002410192914368414387863804325183816137169661295079113405025153597952557345268548066422787748781787772798568666285984986878609354117587741029398272143226888951271647450252111221349373149872337122285282081681401204015097028864962180900720630492837455754067680300268253010551999506353635848438612760957413809565948963945756221609662791711537523948126829181196448836341787415293132877607556138401887915303522628163567612910588216922465266096717634852484633174959024782344035475727442743004618258495226083543117923554571800787832909981556794932336277610956783323040589006262374479130784521990912915830381516687475669132985726450336691979446937010782338902450590788265351937339514646060510927879633980108317614507418656218659126620790662864853419893172303464527024955473813933115977154522678738699177427524517756154784950567098010198676237925885190974941774357125772107868850279576221164325816324400401149183178660338875860969716429965259187197591060351127230178025803947969242871308291412210810255284093190078270330350324361415638902527310635839589876165015878062089337612619606410497427113294946351531263554080787036701353982626881724092027333296101727880803168026392727703573601383777950283252626721537525772624247283372381144228568354659753431751921702634446295418327999197286714071185644108524854343058701141743734001739035587132972085913654347905428763055676875508124525126157804954528848843381528294805634944679699148254589428115746893009755542679606979635158504016832934736965505648437276829039764037080336034404972981468866328380547131737708536660911563684377184612663755346597664745189122201424658972275252118793199671223300643649648006717948658447423821165388582682760441931449767797048387181624071998801203314143471824643152223903552332178350377558754387771774254954923627139080984039866229813355930616228906271613309802686758596559111792583811124743622324624778991691368457114074898715368697854880329814181365919583752105885504573173835938772598368855035705577883797875021484414361500588569104663440692237091922402941903601062481928838273143503658944543201915464221196737441714744035194255698791787108251293538949453777329670098614526920374552281044730729842885287846402159159915076634049385506830831806343040031731419686360878353549683404144634262758662641081798930193819069239078538516021393178902003973534459681595199617654206199926056425996637040483839077903609661068476538424630599069575656962744272446949345363880640511403860742845270653050788254338586781083695750654495153188747829548695959174340637838351556025744587906582485657084991835494887074914677864350958231848473491693148581362801221638039988618074994455223533139205221129698554139892097598257716232385735817739618326964665448261269682106118240857752016207583586240367353292889882929382907749263025211831658654595625337368147852184200522247147465253615220442258528694641009708258983020507474040625497011630106569264876343173252859752480835919384335615611194331631235557427768579017592243274152305380174130005506040549294190370682175759846201851145208657241461788120408976648083435619863780668280936828429170897066978155087537780248359019378601503185450599513765669202734917607782235400603849739492960878249602359413792515218476991600897559846341867420877058880089775263409440359464182053023787478157031629794730200104708666156369661432328693221356467988454672700615936267702041808626638591603963016046858958886532898761041769230438301443931397584781376421084197799914023475512161837283591964408046114868750001341601502912556984804954036504746694602128722875357239115235584969027083303149387897666016861244693859611673761976439756763884692097089997431581944300714808327454081125161020085488292689985334688531217946508095006004873295873954152808911209310119636226151837328161345028919936891201380062026526702039428506050813194169752207231208843844675902383742320272767676554503904444428112619145861960274649747762498062589748599872155331085285518109443480357830877567352615849346417107059628166775260145280851479270870907694070321369474699645078974045489186062621069044366320627801047617079271629093577627294594257714415013978077430394023029568174779258013252802766264084417686055087990473013935190901057796127726082724194498916553385308407762829727681032135975596262992498183844456372440260798631553646036290880723808205919235731667853059848635026423143706225525776752339845881686949244549024647985217918332284287508060707031807676975853428672542348702652863620434120386032488012692206688128236768757802508010069057091522090944183131982351322449207464952424772737099487394282753229418044800834751382851647320183148427293892015184988859917658568003011555632751679928122671037204968209468822242845773121205508691479871187345389359792951064059373214506716438054971647082005562500623667434509738304671596265398532705130588349791810699678153251437716904229465582904417296802769746960936025356679966858110744910717794577840401342448726162434653062485475639218005571138312022901882138290470407853427854703121911346261789979193630583433664097418332804331865843001954180780970433261248084979086095833118236490756259390530803769259371669468939787809890413229817229500459217108909279931567502844132145680229141364232014689788796475278261986299137763730296409440488800500085755561705480291875390246365287267193474006766450181953085394508535978373688389930197035699955444051110443062379860423384400079127757145221409902000390496994730790592198277673046123639713032872022717970763557759492825712166461408753980194418725155903312947291251025667818597651449342153154734128329841952691868439539638394450327472593679456095675994873578294549853536761909846751997698925039973484337132946814879054787677866437688103202011085755662623069668291310758715511616693050593349311993279989314335795153091478260191730541711744082434149287036505597296313567712540426361871763774902734022275045677290797133572230435500209451959417508745072746338073432032985241645990675822365669085263673829358310924944940950435501058313802437165353607720050781947158293454273515096591966970469364236606282290411798528435965841294385726307427835468327630479331808906680919014253873793165429113052184967171254680589844998377532573800107804633409066419642611842943536647724369713994438272390241219204164348110778005749010122556686100606657686746498283538139916705655424683135037791758246064864779341219160021419844516889249762337980206926730888069388718111324426805262616598113378982608037676791757567684070586670554594390914840810033748917336454462351618353114162468177914873552778789357366975753240034305044825120322443882405226098109671175590371335951425175838176264751248932054442579015385999846020950903438942915373970196102905731889560696858452935798021762749680549010895385218173777994780656904916448044462794656546518002225307960097195616801002081568649306824440419332843514836320282192847940343960940109088734289271944317406222600404240320590007187347545252746363629638479737159713829022503641489088723075233916526678047329128783142602504324918493921417964972917426482787003017204187014242417676673739397035684356178828389702472127138617831820873692680117994598588463918946654439107945104726261744815936384894597224805785781856802061148341266997395969438413456091999449480117235026887078161688349684128468949959371003722344111572383287217992416886067232695377126695517801430150335307874499277897669482766932195009421816822797455011438306128859578128220950004465883126122236679511042985403050420606885550755084466945440396319771282877862289079418216881213998973997235708414800768320830575429142299834880042353220173973120835029300227451713783046667293147801836006464687644748933024080396874428720447969316442448306962878213042992283605518471989955261981749845843130920399959310600614611893595664901687903962612151687126457586647377029185779190451071283332118454948461038648944454730301656491934324870796737777326950488581179784293597284022358742421884467344743055535356388817202026897622172802899105966052203766634551913485131644731359865267911655312517680653042406384062567489252231155734604627269565156283972083154077430063929522632012831538499205862842950840483655384606565595385648331856005892161482832853842691719268126518473779897670862517839917146197172512728636837513738996486600927435355049337308141676537592835809970504253067269843035352197471368225880073578616501012287208961385397023667096774795787022523928356687096553348600250539556102428035535611102319905149408460800871987530222129221778262425141603634318779230022983758672968252383955276881468107232600034889799627586014515388757741472882796473935278970398625149502963348438542937719805685486874735090511478525316298456375431225864066733924285824014714101527899045611366335735254522731015629072645100488415562236928842655203742536158743256318655856083639036557673186945580717415748168651384334104891865054678410920911901240263520601289544661576543243737722093190766996749702481389272345978698959190807258067452736792028933628412678395021802158660457555869442887953332816826801492762899024224001562583294226326271935556223409237892394380747442023910523187928838748055193293853834487734546124182344225740106650237338359016853355268169078034593435345728899105435899186579785408053536286094730673167152979048882691745412665887892329505205035140297403715200650094180556351912434879364456328648734618846525359307028137004214104920290740850564685786151424346751510572604322058942576754961014158116094492129686813399717681232573360263511037118709620332112323454169546193629797668437975800446696590409305253132958765766781823128461568677857854358984980617547719774565058443873361720054121942098114010997902982173597269404667064764180007356835879779582874517709259710266943872623859289452118395108638640146408695432087368059805332716149451942510725837958422525536041269277712377531885322200162781890129290456733222047909364517061232627760211188515509810159595006450168471457972113173746501550452372820404387908074727574696023038690022416191113871147318510297582464627173458415846931787994185302100841709419794086502114550138847881801801815503297744542702490786866230149180384729062845800963565221466896999782096657026014549029986661399711124891188450411391558762106435878756204002072300320273537234916486404830382952482793659039228461769550678777337169466077119092167185055800274139122581442445458079594284059201909025662998692092564678845882288982171972229471975557047263676526047425144075872819297970502908870413409682033322225087816646298275544940328890055086219615480085166351986194380981776909190025054908489720175407083756108918932755515847785938917848074374428310622821769814695895518741902513196735114403276235119295185915528819064084539644980801846581221474319611518528325283481096005338649157345901595896170384105156596407064763054274140175507040245404601409435176575365535225441502320957338167722477867844397478227393305742186425235604047594864085993492669074345031839615836383339292607984916180431592737619147105542313346657878182482470396126447724846660692663590524692585307192914490892458429078651704016275120036802327614349680143986835594298216925690579418829272543978586554335070798478309703197215987058630884793907379539370011109556708235451467664837302458183323302595577628880386743634914452057335085485068439470928169802338151989997061123409088917213178192679506976531177348517811004683752657038687433833796899568548353325964612363835794431865725503852514676740501617221091304110534532214378924792386286109243874004605288691169485370103802153475507939413001921713387284688366248174563700647744041715006603933696622335682433548103214245320007036433025289376649446680148634738658997063143935671696735928090854470907490615125443619970362442709672261918957035079329181641479372417645608808320691783169863166885191657654904949310137991395569745666858059788572077566558596496583388735939369923669615130587709394433399365413364662149585978520853803930330106349799753384423589145858798793829967185086456782920485019102052833838413168017279853654770561884871282266520497158277685121005581049312480051872056101182815593821066726019105988192579863783231040790948473401683179913443837898051452601250245150970678738784677432157435444077026973485088137302530249369374184593587299788472593163350158836574456493480134713226195298460737855068484032084676043978861848930784853336860596306968711229434384217450061797315224196155396960108154312622877985375265405032974335111821194989238611979948659903162835880812788202404764696246185168394534515199299942583293827079845633115020337897328674028479181815475535207963165530370534561518778965258843887656941309580272511440298166305719961389547635479079723965245714846634118724162768647866432449514055675167248361594263347045983379221179300411231358204453066265150969223726714231301968008036393860281058212523082403066233118796350473862576929137598013273541177904316890793529064787326329879160171670908918866233434513713118106500372150975397676596152853011986975908777965885981171154189150461397872702456605699764776771559460015241648442959521888450843205521775717402568941728373198444430396519799205691973727138134416210061441663147591378372080787282427602656216268360047011899485207607730168534881739582371194079752494160712506894463972248166224669878478837682578059621936281145441355059585002359230616799427535127717307176094079064814478052742439481544844727927531272198627632257556045492028537123495265247436861403731211119288539506173283279787191799894845773917019739587755394354616978697896395506926663333575513106663689069298786525984179987051656967266897414362941606474347316163863097255553884460651332859434630400215882375566263843160631782095005546436408888365501195513517129780186031844036574740166041029400243317256008729121231051281481112672489426953612173001602053330419198239743452835075388236120525457454970749149734476872204515581922984575955113775016722358917597500955209391843886151792766690414457489387542353513005235554604162182995938281758314887714309627055588812155428596941429087244277079276773579135153310673629054973678321662298101329614748770715658332594354400242514743047358106517760702291395319263070291156257713080581765783256846665901138524959004145344579537847512417521594919781263958832948878305744615765866704561643904682292442726756121373130550110138222806351614129912706430084488454482227474889421083158768596461088865461550378334961874374254990523176713313333616597908460635108200786286238654984195390522705199535934191041571267874835284883425760142266260776531678810444538781095843381697090520748922124301507044331483089248867871139441934604766847294054581699193938172087378234084110222811795401026520564150656381976895777518280350843816037374383741938169623247136282277948207203113048953900893754630324426813786655086935993463198439005496226498107300358458118283634264334747434652361619430867259111587049774737005250482164155149203325083814374931780292910110570346218777378179202719723937310363653523584632583131103148106508598693458338539397228746084211478781006518483342938595073599801757546644061613285899480818085949073099351141925955300238475530870083205641252617731360925303979598728572631298758408043111039842079511877709684814452428422545122416022794621559286582178230647989515498583755117862248100203046426770186186874937194800373129906421038566088971608532472251094138603113660007842299192800568944950834423263819492601164369078109894964247247350871956881336565209639920592459518305434948038476384883810418884756987992881097448494467129477222274133758968809748674009518934804486020326753132340372635534531030675975605027630008878417084592046501171876894008329254767196742547767141426145198485734207857355554130309218055854053405241486095019800247943852580707776519553459353751993664843749320072742920546378079023532880789555515874945905708427762977672266630343782886599270870896370638434169042015166360267378728711805352467267710685061852208618150552852966435060052627854847236985024759759573769538808995991067090363649789717512708624021093285621626115795118076173155627406519118543131989624761301049499537155411579677009270316550772484940619820467624814837364879544962347414621765119950525128745413305743634484394669387193332177220180606407446627503465976917511901728273690332552233824347211938318363723011388151786199567967775340492904746201895428413332837100116555808466159011401457386561790474437486713722585902372408699862756472411914383786107244899073575169312935244277883922768007048137087758018425434214814185254697860394120110907805512166595729526806251279141615594537068293157941065571169659481799095709799929604825537071950021870671173723586823664115198857516887276146066850354568440184591295653767816055471735906629017027177874504486672224466452195111244247453432329433945145420608767001371846964924834828485990225489672101894935937278033809939352767239548086165707222418010280684494302796842282770492479303383122192583201264558321044320444134060616416590579883111064933414357280175855434566433178308639517541375325340128498276351928202114938176736369295410047075781192404176692594181815604581659675900269994245705039053895576908198736261769997434513336019601073088263745202904844182287623467917054443800916017473407413864222147879807414811677736108076040322807629537727516928952741635533387314570679054273448927486441103010162481633643347726854426042261490950809470571520384839494231917049922488141813117372241796359244963736012191320513219024708811162457434528359665025544620409832961536276195654011158757706781809303022892099929668602261944043376411316307699520922805151641903899228656037033572618220336154385162508663352565175741073089249364165397289753289955352125741496790872507567919479040924339381584768810698265587935934711745370963032080453297539973571534916615815806242203584913637866051822520834642430453463118666399505176853069415830780709822012683984914955258988953341036318712874016421115430231711644293948732130622723968732145590014681092551917149487467556498225842671947527357744495330589234247170419585396645520376847734532275345359678843707018904648357979320994032325954463641492052497747848668002466480610969693425802861928975026243724665788106426595537728118879527842907625973946324978177924049178098502250792020837124669153499559121486665653067473600974363084909907395938932157956907061163330209013809888878034864655885781761535753768455027068026553695226281210772061764766208411869517140354054248752960067138852078055753207845876299817374310044594460154081903022793101596487223276536051927966166656152597536301253949657395182694768137384648696825911944638481535244310565189671079644041500902007882787511759068540006556497623969545764767411306728875232618552290831140088976738845448321753524734704484423274167839463305638260373650938423765846825475944162638366145242312522854757227596571859072874944493306731969818311602446945852913932918202343432900789143519503464640767482564810619046246847598931478146926618241297561595906715489469600207324390868109539041843820820603609204396385316505405348401926717153866548386705877122536166354715629318132114143988407300891042576471652175585387297301299571503703799370637253072841990539082570521552027099246968333333580751299673794980954365550373244276023236351669167767047348770057563704768215396911207846765798783481252044951968653170005559124184875922223272595433393784856746125184071176643933707639700171820434587979718184853787441618683271645555734535882624477638831813203584862450158225445082123609017182983509277018078085503202721501161520982576617112523105500042929313511872978183448702807492444023102314215933557432092952988244800646353291058917242276851727386851780997447251623447415566189506115737955296676397981260484786715073503502452901891956774756999397386178760994482640473710781002040136145658569410569086612619775504642099884901241413812053469323159294245925071632351193340614414389234793163762933966306436051320150982046022961954395500860892437455048936365245742763375025637198297210662506417062533223255057371121193158907313778781517644713436660991035473283068479877049837707412409341612691440611482277838398422523747100016864890246671414670540130351633724757259099232174841247624854439274732342329958463776844484130128872254648399882072586897661137747410014342332406210039109930335051076322325582863459629228439669342900448107180229899877661979899456645599576463580642246842176547426478331257832359891241919003586410591870344589382091484736567124680261203473734034377732232907384537296956545014186996721073595439431202815243724758586697132101820175886298968925768715784591150823061600315669767427058294835422593642815474607005691668006881832492501795762981670840510654840383109285575336503980161969891991723330326880973638506757165773142331199023410149593023143299689563806786309987035083482551465429396216726846667650481798538603853010228598137617581612599740055457890986021401948898740969877061199460718573117764838642738031701968476071552918833256237273885391536286066184851124489985192138249684053164930716809010733970463829490105919086310529482188300828354621287304538302901812752351968501135246910452160987330375022078003433798178571813171291150468305010490172042076177953612400640680993654538844355000823494649566818219491063491972526556864864032330278209077969204579117453610133526505571190463261180547253008392945704341022726726809317258432100082385556969831659628536883202959709691916574743931946204764896187925650598718042955767157415221257685819348416919332614979099355069869119323077396818443847996985344231093535983419986289127128344812095252064145119371779277105799556138057547196593933680332648126994892091809298378618806803415935942861774597749577522676583061766936332615315405326335439871571162010599717620245622560370771237496946135189020023798108977928903572559993138846657606682394602139602754843934296045056148479565606275916067205911956518822955715797825971153166554143603119180426358905075897828417146473109226082966381844248066586182583319404276704228330031562118347921907560226024542875916518457377692286425249118037492783984208440299825918429891009920941933327408470187679810008684256653438296623799383224476382992194323031714651340219428992827094560326327300498387618467084280709510479188070966977809555312905127249443926501845051847494433424198084849744407455835783484741636233409407139361606344667231843212439961285211427693477595492859623463567148153501193286020591256725682493774084084257111637522252292073443650041110523017773573067909334146768720433601716977899729462659912138029089224833988187688205046428016783358108990627812812935547631001102580716740726630234123776763244906894066025549631291315168396464399839848954438312674650111353066431851926697007566707358970188330936738711344650056142099442291486214251093795746400248025911640254073763056030675794616668733098377083228719290994490710392324736299831449084426401965054810417919018902357121926680768322053572646562774620456220320231985532657137090911486698749499768679324088127337925505836458090279977032218671727660947400604485808200129144227605882060056731673155578431580789402274436676190700929248285564637760248629245830098949784774191699717380866305903746287154957663413294938877407057136552509787282331243582380137893190760470900444876371175411043344093304113192895049916710386923706899168751887491054082987164009667807192245464464608137017296534730928838510476479822237671794118291408350794086288368735979279025565894653315995792920956363635004727690912550830534173508233629972416604659089103930308419929801846582737173269825176392095318717194597943615032660237611070231178899149518333402294153495590212771651525784152804408067249908750393474077578192586149570512410824304633535196107475490849106155339237031158039388343087124089206691099277943616346733710723631100721237600103635557938599920680899995267838132618069193071199956327449570421435562920770886315234734707661430801106314135754049230555801027045053566977028927913706096734500554477108543933360010504540373874670229413506497551170977393737850226022750450720757386350105376580805501525297022268048566443630816630030379163144176657936568137014985473721193632103962295018449294028548815870844195622336681368738221218642263046426060171940122223347110565863492199090738969327652622581113545879739274729064455594418328357914403967174684673419041465783002268905738027995652919022913609413364429108307402910113761102604007704066494252420208463557510151263898790641491058575660896821486824379994895247150280141154960569925050824136886198683546671427644871849364832508448404554467361940565177205543530748670934094282308380306650576553311697045853867240223493230812980588698969069513066436998844074996602026482932549951245729398997861990876082351673733766725127318638614828767756288133288273745576246987703003741423372961785691669039684786505901917090562410560554678663095395851764360909993288828623282546934173556911673794025885714781584363313326007187590660467130801534358331549157005968144985894221667838493304393439717955835420468362213026914298935713590943000961469378478880180800376651109439556368671243471184712609467523939683701101544701371161233856119728973589779158806359038653326080388621934770900299044084082792003456583034425181502285177641691833828700141655629885673010605906936442183994565523864157140708584636915835603065851760916956407371885622909269465132862302341272842950876332933438686047518171985193556710806431921355189679721355978101569566834386481430036945249460547028357793538738141234531230806313561433082151084174046239311693794977946014467923787273108323169136218602373022324914138667752461045418046261158659080509518976659800101820089742055400567049004489393955671182151167297509037354854869680331678559333001029640559480236104556253176057828879444891579315871483396196884797095877223349560927622180084900362160041944615232841629752756064606145582223955839798631544927252463760939473893594263917500666204225373355328311374135891751254272739023209517058442126310397050129545010773162770363864208827452267167710366348833440049962049294865816943601148161424422924890299990625501855249741657096506471714567142882098595667884740550182324371031528626573130610433487942336299050485253721901941657374641290406452390186421668293782769339228671809112022688340126816343535988436930721947017910517622620110073529435485569264349036069207229504726026641452526311454601801447444389045537630213143385532090941642422841277139040062972907855642029153959962104392772668800819096232819593533747002415789742416897328937263744787958765149125978583395747139505219231995899186709319937835224244584604812761265076393709824160691412573399949181044033440548331252444533937378384855835472101644771752006568147220543485469898724144504619453232499145162050531709919641347276260740978739545839282462787330390076625787610058057254566857918510890550259030123032126632042481572316865189880067063773366311386453169673480694016525237165571704144953656613187560332341316700878903264666191874048209263549063635943136209057375580852268506661124298639315574482411660721840551192250396849462645766959312275761135827329635267337328437437803361284041447106770096733004641712122986302326013187586410290708011438832168402301328680051978822815531368370329867277188952904821322103366486380951278280353230065466419480682855260567343244291086194153000267225984416815263337296102540916376697556058684092726867622042128075626701277663413317815184564971320502753813029533498417022188707199510492909124584364310830746116180706303052580733214352263682907956711926695155367417418981476171130485137798353197913547022859657919249611679789062335502051491048625215584796069155039918686750479863214943423950502999604488240425221677180521689878960257187838722349495894024317766364821875798990845758129757013573952657201445861324457181956809464407894015521371518305088639037793523169942683053192901520288673453675063196620781627710244855461512225230456450305817191314008259250928978133186809638707762932239694270208435599774823154019404419862618974918525924158386798565624789212514011241959183009790946199768514984793175387197779833830427582008669818929051249367429505645944227508940756459325812172315269875881760906634940480223481649591050665540526541247758416470086883117337469433566911751833470990494531617822292181552595079304417182630820329087878608449048965948254692195839377155216392503331332923320405713781348449972769910274046722066861331059153079577929983750633875930931803400366331748835756516424200662499711045665651676083180423422534041521723444231504373641178989903594903525701301784098926649024135213632367684106020596633986313800249127735728545535087361470533659677107364231619075448580784480832669593795712018593342250616614189499795778746299942456963439513391550298962188983544210224935382280313695838714876711648887123775519098710850090245922508431017867166134958454248962399966703795696635318176773999933908959236926637680845390600398672303780418358383914591426752195644740938804521273790765817918200628784905481797463919471361720192140009423562896496823647191915068145127589863006901741813630888355193818548784333658779363489633387509432461194114591024498297182976883419910489835196761505366996258503557592376601470705742574055873809210513590531855332801876098594477331217066372836995507666182299318318771270574968527389739885203678244473411189516252768035982202479641128957991363866288848447938823866213771014091093883657282185727167327919322343201797617799621077308595803368443043375505679349401587464671754844242966908708480866481697585760673546484075770433464535016964419550308521479002530841633627414933897478814427508889760309435475341472810464253728799441565610428273243133231786712829515300940645022538215300692780941174358459687724601456314425741600150651952028823985502562831707175210593329890278411826844924508650660142687611466312793113776918135955585971878675349851915307867734964757934509523879720970127968856847966119886536811628909624603378294041801901640636640931580840892491744911006582902332285372284019440128775665586603752187164707228496962635454642516600779208992986784797567385687385560666321269633106089235134972909659364992190888728409931791062299075028050222079198354171482882577370370499204197452484362053520715858458529203614034816270190025934976694259275351797367595941428220512524791251426332889101486369994292651386786976432748389927102547968188048002580473363229665272556878554663987263178467648716570986549967232861528900183383722519088679503817086033900623374033637219186261511656093372180943206688186477354406822826788880902004111778540654743790594169968127060212085386422399331086906929853950322842714646525722501632832865030261507437382446971338360672673303691634135303994510241644045775063206140981874330239792539570545690839090916112884597866417447817786543892758315482478884923609433936914273272504939542913460290456270752175085387050933681491664576042811319614392797959403607458988823016474379024489956092546509343498742352556827069052561951141446158837500823408437911876336006008502709622136947951552716022117839098555033428513761809957466495550635065057414220999904962110456950402685475341858877700813437910080964582780749427002094049450981691114004635627478181729752807472647780778713641207332258037240018919225281780556028095652447515340431143834536714378270871405895852625263527468762100811319321460813321736776001507888292202409833328661539115556864733130423594482711309048183576256289858735720335654415276279368096152146173942586804297171003330870644612868710804010308664112022007959140195835379092643857034396735338034082079759756333847721743530304783577768885189320621055538641345825933809451470070065896494700330000218711547992601561800650255150588340120947385103426602150226104702481483127881343761273465724065794023225456519730462983787748484997582004362203615197713894189764250536986353435360349545497157082797025082302434237324088462411071430984531325667371154082129897928117082927463997132988490810926283572827004545519840222701669516550560833495554384647949475907549952976780370039701962901511652702699373734576384176990279373595140875473248921546228964032341196946694295274923910782526182440737014470923211009470874964135405134446808606153299210017362265422269399585035991522275445082022267895912611036633774098951329646171813041408356585960008077234586005711678882324201741310435964848952796946049004816957846288385745375000146124447871879738625982932359250822202176453391144600267904481853225419951611444074510253754345020745938973614585934601970688598863509336796684290982446677001270339035681996400415588513318487760024550543529502281432476601009781846171801694257266391412014841357844480639135877242569538181041846339193935110420354887197074292351857872942946052110800915197670275712186025403859842395770190274253770583466883557976906404681341331238977917121216079704608790841378332265759965734534901177808912607397452350783806835908521973648172717176098672247005564366373628258578569056072262814080360105787209362240493220918557811118683988429210540141499225738686264201812043358768092041532770884952459102656479092685332141084963872848869458890819049317025721590244353862543631414373505316180352614754850011148388911188218034059021644760712917011570959634955650834063796544787916413275654031411649246833472616579835841197380440964500714323128513264973426313113330839582174229047089614069507973662703577371433397765848365949636408774701989824910656098685802328734585950101152180983294383479685950691831142358933223939742465759241913806657632135896995238999352733401222228005920480390738601184618937668770385364361822056159037585647834993828909330915458623924602907598735490103571656197400478535183620346579636860677774224235666018478866410637368450546859958578769330221921040293518054668901356695751033962371170813410610130261296415569976233651137618279312750128712741927780376778118650913677175502034482959148496969945754559429365499714523610524806163088224461185607714931131841449032202067821989116193341104021145137117664794836046853407285726599591392878366377654600338561781305556073157088231352806203412644427645551452761167460822035813848480277680174167581522265414117003813134865292594271577774457742851132951414419401635369284068429347703608173099344100527648873212916758028926643987194544837632474561924346245136349664364660327033700609780328212367372847242762467872694367988199239643444797958121268639822476345352472643749007032573204699456304843006192482119545627270083081835627080871513184624097627146539712824679977433151300282647687609732966910181341238493565286919782438620211118369331956618892105791371686401564492403294358461914987739425180384111975238673951154082126283178933690092552434971640690815655492246651247843268699528651007813431738812219182238002594561632734393231566698293369984326074711148888880934271286204016916156636992180641315446690270034381495085465040897768977468617490851456660002029782017023145333269192188852629795362618225971164608834170852182754701028475048645635534207844389568368289199724273463133346500600659252916999701035947413867045723050054801568207693873740654501788904518741980195720606045382796315378942914493646856634821768413059663659160129041403970578504004567693223575821758886457420368082407407253422041451267198829155540090800253348509835632139722588961963121233506029658770980403153043006243285447092119098277506540886083526263295228871940300427759154387578191089366075628056665499292822403625874479721506690779042148558336503982310116763916921942361002912065307009581146920644351689131792158294762234596525634061337175935502806228316603720141083321404653428631061000272365792362873987480446577802513364417675122424292666864805549764523822079380375115279193582551229844997287584192592505831761087999290198858703953346659977140619573592160590040214079643158445791690449601505285560856543349540424775301215656906917925938158314228578612600007868041481212321010812857751271763808665461662141315007441614746410249912125017265137472312284189516336505132263207451992058180493162368871032060817909970484094377896652221145191379088007869472087939976592657238520613187741152405745489501283849239093011970159029386099778732489029477092094162471286168676003748356155380063176887908078464335865415701970579302605482802939328851338795941725024131470536374855754301364759778366603169798458681947040261673890854188104882737579282450102791980196325599866001874161410495143917229869703153040239379957689827051362011658928906170799172295306745552359924717813008624741360853142019217100777699449226985658300817830336264342997652861488272276973984796344468654395346202337933019250502197765322183041333714464956271943361956468268338571016372165659837904109836218274641151311821890948544183467596900805699053008363901722860698885890172436043540456004932831469212972766149628354810337757891532641687649830852466558355995334303194238839507508314353278728160297226123406544702680461106927214872918035435667716333500325668903459226120347082199537268966232499656158998664693180108639587033085943841243796778139472331491447770523929022101338672341236850335396028912574694179520925542908499124126645737136818539612692368625351399584690098966376335419299344474771131197787491916086595268582915542923995837767235168149503497171909218314846782599790695665100774305238332279874273394211286648225151919231567794497012880409733394674292365185609772824984619752606258831488696421652253970900608670611651637814841229424790913390925750019072761089985761768193779535648931020883896171038597131511906422884648492100500836738008058635310665698462978808747923206312918287238980456062267118113641498535287702100746708545590923055667080331505352871498186508402158117442452498230167648411257386139643841845052286886678207057758336350127858540447450517789035228197297729842935796950328123098471332388868319020179541371630874385270274952801231201128626422969201801236059820885166266114730569543990865993549048590796431461339287249218653921806702825396125497659464459298151780719061538121545387182756355913295527600153708273661881822317691021795975533586422557777316227499096067142153770089108492048781333049027949934104157828962342620176306416414702446237552870230476810026237694752752552194386214077254393310482209394415107247791736177600264842728599719677163296072478100632869153552845728128653882216357657090545401774044658253925747687432917568462016113308953558663382272630196806801605880324121979363136508841110140365178267490582500956766061144887043022356085455036939229723154007868526492627949878466674394246025906833129834668339876113044711946694553173668205321347784812320692274288603274171626033127532517522683059199336377869045228892433597639121812332382539362158877091671834840100809693201321111549851532623983449430712601086101244980783957455156041217909777147592641020110179710770808173772353079299499238581177831794947447152217736118346737364482688787628179982972047131344451722296385663921630993211068788223319952278262410351519439206508418736120872067924386272629946420422737995208768732869399066254720118352135429439406875666224364759343762064510606372098630210441787149760051060618335831391304357334638082907579126356853153916479278712485735223752014312636177926263942710925156222148609437025730366286179656648651419004224604176459035599610563173786332576187279737668476343197518531575899001288877197491831630669741994606926210589975591774529828836623951988259206090289028419214930596843628183717994025918457293799733482529865508398156398938971176942338384858065165193348642103333606253908667763246714179206384721075053974336457376617946018158621651973844990833955737579579846291105148556300527570231026220730113572699268072731875727121729192492848202833789311213489921273798768531785860124265015101409052995218007954660303787301409956338817700776927500114309245436945475629838641195722501453688579515168096976354208058221181947598607091812432964632579996560169671188578519260441293267050315567482229847605980969548138242532100342477116168622887392346027761772631066149503664493613228766173296322642533854397784042494495698411631112915394581715545306955430426242026456466952603828974002783277501040364926818255724406652357213976288642429177686387230344023100293398481869278138878282246241269360121671215344669342079696704763804647482448992953384890131098005987101865346236648934806755899108849404477325628676726894157416792343984881572353145636127906419230144262712871871595889824093835915059407667256650606731081301049574030541917758434187591644766105950012799846602915382493455190214134518643216385513597747416395174455790606016441331356853357381472552107149741374825208399789993710899136477818072692952109955531534398114956381019968635806202080399898006002232278009184899760375660631735216694754119984649110305890471845214712422037538615475530352389778353451102069455002148465763450574413023942898473303555583004490107166796450620996308044402473983416208312437510566692321694865032650448502743420776011677885558142870780199489053307697762932207343135269940433040455410749171538500130095692218296063287553990034889412145334669948058789984245369008016892803022590017972443697819100841494655304243157156798786351055029808393711857822133984332088260566591484785920865366581099449659907304767335143043344288029698529028239699420911120199616684448501853613363661544834458209102412016299140180261682520281097778189928719840643863194977914727449532046115144069472324561407032532718464958141202056087352135904617906931480148518940585499798567118221668361096720824754607413787645534748663864192687032975148840451969855071972433887145399345592971290717251265887219710124826834726080400783849865088975844312076117637243400174728485453770753815407188992749787646858777171744990012943615230345036822613874463665178806306872564660238203188628856409176436051723415937136785989985024908296632531891163018599653648090184016511412857862025479038572753196588370979533831428584648271598786669525938531135910634278979607552431122687637586560398333624474136480368485832112895815579427068996065284250260668996305226615434644163441766816843789701092024641545142159571346093110093518387534718309148402370701321956867564869862155270624179843875808254933150032940539038855910141580772827126584892901297421024094368749084788747038303098930040802076396869767747515152551264940073040504848646803211429459324092563432358531628655937028465416826484918595503311353079794524096930394508470088839766850380675333276383124275675131537910207232080242203020455349913367467095308415185747953769493184909549122850507151319240787690438044867506665350625278665955779485992739108164321346552861030899908628856747502939821581323914571910374130749783269240462702599208137959560562699793874012642099351000293461824581468396709759405966274862577575846936839776842265327437662328861439528116701318793100033328453518076904239228780258507370320236750162606621871754892640754871391425705508785539144761459539509678155014725632307199946618384306080423262215262291498669545587758129076759062172611776564599267565651065600105770039731627408288162300591564613911975816116407430230521579234329628275856394159330749371318000048360108509510436617542428762017130677851145630006774124777785148633551912729117757877773762574207328140128494462745295820683157510622482024641586313186684300242659161019787654568168068098024597092942252218698301687959045520206432310414514613684512146624940053056166811103254768356244744351964725839375824506610234221329602759655668835679840047515869090074733456155155815694180080315518054094361426648198418175542601496172124132400604230853368349361839598323759591702233925467476968495557053555308213286185590712588230374565350074387643152173504748367515051003041302963762829292485950189064491626292807815659023789329052367850931174973984222010691533279558952043502476519598009338852563326122081767793178432684021735668144068684503534810052285403905018177362113559129805097485367259939320466902253142163805217235581491626356790840387574073181614976974659675833488345033107602842291678950343821881741476908603976860727836451717415376083555935485509257850381957727206456454864435808893203136535533974076111272428428936581910330900022052032780591059672210506776387026053866387197778210431971855094156200173304705693138300242995541933860720339804360101303755005624928685383054697635071117389494400580071148095514478643852358007017331002922983807287052704931851921139543061765758985208826227991895701791613999489936887646274336101279865739202720379087266277919274769454599728077196322591979207261887652273445774566715658849157658142708279749104409307269050448861322455473948154380904890768772974692553785190608294876930826617271307636905121545408493622411142711579610888661244640059624836270924336642446303920230134118046363322213064019923839067287754428343803576185315045585439786031427660926038094560622373330349132014702406114850409480444128173143716607661463302618848099626563471860376468320748803275546538921228774622474754689270358698392862923519088307050599083001070151152008925077813680567739526243744747005817000615783207518744122638555793887272419071403029595426936369863214980007110056694257727529856972006442722352625714306586304670469645648816765754414258600106896025227761509848282550480189313088760296804054043507657637793726471339266266413355526052075161393845602454641915983267758913610259116391948452320550226236511373797240519536155505288740130095335733241853150957989790334671228062568964657743997197981513565080491247924961008915165883249440009400784769513960469763382351028760520278519958718908377710232848284670339145890710445943669769714171103300985409689351373814038205944645689619650028503705665025298050809241472444265738048799338415460071595392377901179246573318377235685791198051846601561720144058196645130149308330816802191523557647345976304587161299281322393949155241639158614025649513616543400301429001282271949295073308493713448827449333957705633642523497772852713130612308682202017586365423268302489898479725894247301146302931296652791255400527154983709575894034330840348792558356861327848499909263798828362565107972206718054922241993678232090986193572194736635368310161734826198222473127022210273376113922360881868309752957600230345091435528918539799919299632703691985489857165198428754736560459929804854156533222927482188777290514043067650455726169290189275960373706948051676585835619578870627609194747740849499442755706214641698075559612208795144684658398316781078480125543891547398805375861916382434532436656987998233300781359401199599210874296309949711849639331788982669179791715974288557097965409286661540129693077242774542100868806258078705842999366438615576071593331959490848351547861346243377971598747010121136155339449611009784632128531349436571534760324044231109400661393000639728571638732320126752344612993455211646817772634963580731499561333937611384049260843757106633573087309676789872579704443267438728685842951004662656262797898181423081112872614005086118167459245439042062132569823902555306274195207469362181132532443560048169483032802663511062062101603369523424831080482836336629207313820732880955712243571632252199450321456337117928166041747815834455012371518901649144739213063280394418805144695114977644804213312708395253461665383678644561954343235307343803260320821751298955471841231884122755728127015015090589993069813269772229547432007717202640889399771302210440134860213037821766340775987114290233718568437834917177018026327766557937211335719313156620790907097196463885875488625656998818892801061749238109258331118303804732325308778305527393809513607374192251470139160799739897208100959460910515311501990815070605597644247269319610496612821332676017719668236892453711563645121601355131649916823371568852411575706701135167663125028778094400965522088468752061225684406787478723351604243665071221596960632879464324433421851803609555903953289334094362254029555014739500009815253360843237298855743539934388180265233178094020374441748724588200740985495184389626209879116706067341942599192838077732442396223696923267323918222183301880705483673655225432513199819437329234640199883933265517715927476346708055747056804022252418828938145151477102549979911468922566379396056910799253613747205470837214984942135507282774847191319999564244637893600086331459587911750686236630486971209774438558894278042661194263474253751956207792659751909379389616638809061545306125468602086443634136298635764108288699293491252715739406377596685452294019970284353403415789483615496858766561053810657849163359316156679059521649963043284009032914194894353070310456136418662333648777919360063003988338017193409802427976454593856386200843100676399548941505715750774482811908908984514105932326492089746205039254295736960020758345843833277330938081210453465516244298737311066932846145645369804402075445452911659928378564285880123512188239189494053352989762679912576188634072258657607742630958554336408899185327934670870631433074222501426862163526914449392644948773506363778529103206481690985627382740433859824721585274504167142280710856818964386681351562972358311925005104380627400211425573498355367647245767719586593408062285712375181728156237652456864898955129839435724630928379762668905476867333379725152115709298632070682443653685162369197286972951225109348904990761712204556307790328049220881118280785052795003521571207087490376193609701904522302058419278606862642238338942167417842674257840761617377374145166746673841504101018471359215921361410843143117920589569483247713221665913228421401237989877008614003557273755528391911905218143156050870725551734059255671176660498611697210937654364294601277139121228910373856826819801625786899672327182640657126180500917301753079233382698630747930790877491324917412593392859494638618851655629393603936750969364157868910319432820003129794476088903594061894105872708742220953706342025233418208697947700645919794623020811214808995089784263482160241339901485616989873929349535757387647623424898757705664925055374030485395958600617914324746959994954601878902072557436894216697109311767158594535664125509933526310508447684224611180507861955281685335850007556798526102609596678979898555241319488324809516501238077392445529718186101655254391515199720866118899051693296230107628096364196824559207698409558324944473974940259694084615697303132650813402543808078625832363573843516844315815742132786071736494331604633968317104086994074714916972345593337297625420570433867377248331155776610841187768860610346149885798575205073245532927053868020504701570309281917567815753719299662354036699591663538969856131800427079304120679716646220278823894975654106215876721207675420161043272553767765672943912839611980041045797046765309920810973341660867646519072864969513237252757669847515100384732614286996238828783526277888709759714086042571864636186179897087175896276583872775037661509600148097560502983457418079067422008221427206022410693383233428448705249836135777565353106772426688907583315560017859438745741328466709538176830338394260994192773779095762326797361950161993846631935723305381225319179983495734873607284592336065866741291910127059242856602455022003153811045248606399993165336127949573792411000387269996571083593352397424275361180692686001842785145666452974398367199119565191212567881679453312665282792575484884370852809450389458481901017520623821323918197644960669876774467276487701397929083032588130778007845867864208038747694611466155847215290866299672703806674341535022237987987525362970609505233691662573218745389314315215610317068040521716171771011904798502314397647250736162472656086583994797861896148642157969910600527315441126924663218889149664707101023022831115825269406869862324537929011482897044186750596653730116254055662872606914115093112710496614062260017123775368906719648154112515175168241132267116093044408469092777483947376568305559015108112016462044285533643672699992685937626585612604629962341464793055483765393298305658984145696820321926700397175685937536849693376133870009678476051926245572787901249380528357847255355351619688381850304833112515207756033329007503529186964083710348438096571047681863983455777369104539264577643015537766744022931688760037974518078997723453567554465893202923843614627913236827863971012066791530563844078608104548470970971558530048578361452615700932388744064014397388136712680010959899586530653161552460108814895172164994102982363496317369343322185450126226153664899615430160450020452179606946995047180729061093427953475267567440075395175785753868820963527893534644335261784336593173146832594798312995803986099695798096732947439334336997122645958925909160546293596392332743074881929771359552209420384176618238122813558926953826540192592802541240699209411604514307614329027783332554728407589294140265000838856311024347378892061504518528884731631278671991547314736202822961703216882819072011775559229909773561144276617336510748481668121857977857886383018952735055060881730990810375046688047933809635633578204886326077354449908671288317163944869823414219796376522697069044841385823664549777899814192286698873308091841029621110924189440804390051906111300339589293423757369336737889492256322730632969855438213571969806146182875889285191671223285966061146845588621754617690645942989173009391957002882367486920951159317547435859132896180262451161655676228697398623618336247124796846245050211603567051331297331268355572650113438345652443074295067521849376544502680450149090971120526982084760548978922017100338995281089413142749977549539097296087731138909278539534988149545762355776437495516032001685200972895329681531521215658804280100815624563382585125613926377595966409793717486745614706967143587718797203848515407755171551704331905945642957308112935854481344237611834528773843692265801992399509558385957926340163955475109781274010210151306935567659610570728044143061132398504255780342468031701919934257856573694389798469395564726439906459768425065042623482854476065482373069853831660901943030647746548680237917624819039751089238992972285302671158913954238832777653499603500182999520753476243875750516730341527882427853040066720749387402089724302784611555573116781359507637980481628694521057062944783835121151912374398444183851505499010220475630368591114639700754146468211131769553942447196235327838132255914441093368343898241619460599848163138025409041773133272593200137037526928713839926588513538062514639453485570869502017962153635554618843115582402985856346327175580206255211088778173830921078433232652473103097922897362816384145338913213539388574170492751025040876637643499442282408106599227156370307176719799476024100035355751920002401858452640937323456602397136144836353764797663393041153245732521448861431793715086091420868115086659109036799262607936132222944682962289105331693760623038401278898061157607866250896032183922598104532375578204907719985755908464978304656410842726809036394718366329636483238251695796827479298357542033302315266152269899361491518386396377123619035397064167305659586100608809574250865808468852192785593697433634941089720209458870751347962707235470448914468886634432100857506792314994993664455134278129734964124737237029828204360852119063208721493896045627290672295742944310099582565613066119797510877205201377089430484032195833683192766688377041878830085506705179620290838351135456160082106316170535495455671535454576325007351765698041926334611463007473612169491764913515319219989755901067168296724690754772012641151741378636694016601321407167568030845119330168574983154307650548836748686663978025541904648518024522273997357385024814769282637464392501534582950570691071450177128497116337156560522485651436632823843784751267015785333482490076196983232483931157463439959201132445824860800191646194336705051462495130488731907138718507004944739112765481270737467723771505901108070227636712511153586089263168726613551130552303451398172614342342388006752414633779909536069796443623904751457042324664477167965609626731710635659414304036307967748132156848727902791472267382136320775404270925819007295486434085529298367209238057266974852810267773751292218230978458695588390389883022738464610332684541278579638993835454508699670186445737770554110917449511079087118166003605593711624109606996880319739938610242146175826584132437401811146531039405263185004443324317276654510592613920358011079096013153880139721019786314264328284759686891184953867233441969192699179603791622438958195645902870325645261893615851531759510284660590723316002335432974005382959524979643156964487346250061781981720104646567262136969795255633531518835342707518163811125798996973917004473031335543620239045479545892577994701603188188560916415354645552456742661355859921603878389304784323414393013623481363020145891308681025926338017668138086297985149788514193457650119048683955187486164772472131483324145245257590299373126918032694814688127817182924035635895306786211569222448568747051042760507753210917639101520143814813432265525443685591791892901414129079436318593115275104014773788733964128818295601096780353146810908209090125201601206817882058829418296572210043436261334484948347086636017494221455129156084919081093212916154682847283063473738432282704629556439649688032432666603625652764829706840128118486043102226618440612678850249479364928432781215431052683561027509575639964467554571202200759693668328297669320734049052367710039368649964434489119228042640643849567086937821130274803378110350016053294233832823859546230460004827105817276408717785921179740561441931762513133015217644597706074972860324157005935269265888976239039314319610397117128961623610770168410390961204733994429956203350907243683235440559559578931243080847012922048968767781859671861860864914974475505350525175242379241070776456923998378785829354916138429177318989705773968428270877431050353642654472590571969165059461317475970923537560401152064489284585995316085225457535023515101320428441175392587083698134384999408004528308015356144159219579883708201012011151498022154487482100881544703386980307183391739285451227361123971549272709851159670877315172603370323672694278831545421206258317562434651515737351877096555073214089125585545333883856892976387758122210401458038978509594756618415727879670395388526607680330038242799916321653129128581824390664855492910454732162056894595450304765502553485429809299712264852415753944098621129522160056802290972476080995216093787506632615709629248853096947534988948831683376747779461811781887297135468306982277710145455678055255937153870521810352975848874402339997346186767303096234819326450557247718881218249517651836646454030470399229952632925618803959419606951649732585169928132294881677005337572612233151256620031716279960435523471287930180980911632158303733046952079145607068914661053286673344950286578823467592879644182887130271778134327266103461157747156380834111265155085855230016830419787191865021969870438983088951004394132847964933230030435854250471862560059640283314507189589681974612147168422380451765684674667844566994936145015060238618267773722642183557819473037417658118379818099533422536712139587596379510907505509149176348567946941562480916936578873627463859443223759523148423594803353384303840039053638684231970184348502058152957486616426821802694567114727794043553648901889674784316981974630229246759289602091121904100949209198757559013195935858527427967120269646116183754029476802274398205524555505794648070652757244645225189523058802564451568387734106554832818109721558522249993635241731560977649652707512304474457318113947230484835147605903726256235377611172528603911341249457394406811663715532474935394359425468413493158386775412297233112718788978053904525007691439155744644675105702621597718668285298006457580320705041262603459538599775899019679839691494073906974779210216751425217725769141149177018032154315285800467312728502456677514268554622395120214812538620025604143313448012738085490934960883343872851903336568327344311507784568443335773837801215660469571629274419525348771438700758697320605973435584718619345030278231887972512951457630514153427098588469226111329704404251794757208287183270429833427515397101489554966087046078742311763117543966540826635507169499080534223974382751518758514791063007113663396783121077000448837089949870357827302945736696898495806420258569685665446134865606422878204728691476218541835233582453009456912648093517461493965522005005955838645714983524087852862726795780796808889318620375084495303338974469627343327938550170659565919630504352857412917657451918230140661107184241578794943806784861813534046149084073621987318180287062498488960795315648266160005740095955266676470723897571008138961111347987580356666070212149540726966547734224669624795989050596391869607691787421440967662866594827500898726024828123364603219355090016424647617450940320633319612083610609856687604896792650287474921317616189786267553073336400667000087819861376079324220655540249049557690002664746108654434930315861005972956057365253610120496337628642818133972011227335605426128459416089398731715914984390912722927458864254268343568617467487905381554450451529819132313903612101809337163673583258921330153118214877851158567525616185519132911175164336356355002926016100622324584932010134305953520737538350424803595981364370711874586683645320710189169232575365253019927792379482320355416522184169621164487723474457940813527869956365301644422524157179034163612672414337482241755324305923445561448650881490811571714441929463575731869652914691418696234039598351487920601106915437674106991727898876150519735800560971294977819496063773070512389434496068168349560168074422282352920944338397295419755548809537723420503173758823535243929498830386329810669787503524631104141681923290874882220963175266890496957534452029196675899437848289665709241820448719648615481862106383692252194348047872431405719085761962508127097211526293562065423798631802758828998980687335858580936599221918458146147175641149258138760755014247479441723861703344461304841304440010650233555766292042043486133667385651096013696626837596857187649738419297626765097550496266118961354302478078742401299736405202681620230151132623632736002047586650466628743666317285567113959094656940576134711887438067574956886591866911809566272965920706608886157753076598209020287545320804541291729480243089559530317961821168376077992190382701261329525626465090069249146991349518114511683089983391835621040364078298573205708008453239666943965382809483872445983317784481309975233427795555415218077340642823549230483470701718557670756005032025382466514670395866000822803321363813790326690315100416042154929208407006679208496250583791122212364293728010913952146819151713763338892432513094395665261833011292214869922656412392281290187380358148636211087981277984591383860708680577800579060215260717291087121706562239563057315297317107607694689775671842051828930230185322558348242939063061630295049427541641198896890488038176337102717927408103285131251349267062423088716811137334310159522467296843821170810350113941731702638993623384537463855822548677207976655395551871039789233197394062428066964597960109810219681527848841537766811068033891616822619351973901093152400404788812217306696825293529393208785732886358745647517885839597627359683717277279786929979756371903700299836955936565856304148592782070743838900934570649378923286827668970578175017992834554419835013308723841319111730438102788945742104601226327657609121506671216877582012492872256593916469275068048404731790908242907967993695806028769487869446480049199396768305360468172241385982191993994502413051375645851581231054990045390888233558314705653126992010287196516175973579470712288910980893957254606557641588806719106804824439964846713655852791884806677234773043764771943467275148912353915003246430381456278830147668125924578715706013774925416059859202682283566259666919276449609465312441707714222363593318813058679031230732973259195910998178169567949750945218821190928458917105364470465220021083180150048860399581856528561187576334335582989036452008762430330408278083239610837292200708376563257830380226563850879428016622312340760135530264956049976594359729446774629721948935809691176100217200727249503994088873756444686535762533765982036845423305588195786576610410949031648405983229676031131640518111574034433043229592798298832246971266656273429071607909610579005587868714612051817556836347543818030874021302518877683453609355874906696745955674867018010673815681185661934125697052215604347301081582765568080155786657264344443130082992986230933620544117644781423792362945100478817837394314650891588192887756895607881058481333908992178352288430737108553345549129346337174761565244813007822170891191458141928837272735253056423419025504325909483540386853382674468304532482467495742711723198848499083609880938970735850422718811234167375984156207122553316567604933094797327371023422224458164444562654399576868554660902424805170868276567107634552659149460245430680691523267645912236750156114203956261036028428445666325256477890800866323872683978624411456420757020748405393700144490160604171640355421081200122585592867040701480775642833872485899103034764183909328192660336087716520348395306372578718881331651738005392861245095815699551318020395520405096224193486533324872058092007393802100135455606406857887485719245413137565064414658328950968528279508745113059015471022532586974059074043943618271587246503581165566585530543529034622549986486661026841523604768611220943143344404478268803976514480133299175786213741798400681469990494932500831205931637063417059027100179565758281170871996747824006751001414521920205526262233318440684270666639116644164185877049709060510259558200726181823181514386550317096045108658064240208773730083714718320875759869139672683673977304404294178357670864782719218305307627720026690030182712768734824986825240822546081196538608116441431332912491946326609391481322900885398351957104773583667498498371854825452925407807333795753852518813296260183156173996256810007279769360775771338293521279072740693219038030367503100206254284561983147355051506121756535404039552414539006604056509103179704251182402198406013388444377092603682524770310533219347259048818972652633802580744721428927577246687615784445436114236908122885590402019366443636205091397767368880271496315089237823548379788037714777019078145085547573697520200011293746217002678861453734031589199977598206005152432605470674765475491074405592605287611179654705040798169298813991996046081588840521960009447552352059141426818722031210208338466870500401055756580793709064081346999254094647174374188377732040210254415899967395778781436097578653155066455563922890042174136204774827388038490765514101418518903299819405594565933110426174886966474243812801391256536054210842607072197604509965828561269868506372512689453425280027894941174640716486312508362830783998717197477277174520898775803197817280766023074727451888443834302993634662958142847247120115472799759259953609986062174270228801032473359332743929059440675238683503046295117722394094747666620598397526574704718966969885066764718014789176395988007591144778249895358454537290242267291135787200176814960501110592667938867103158948905703640708990151069828666772289172243374851623902958658653151381064875761172343236476784096879236543848270373598169047317771832056373788584650599141479577416695723068961191385832700942126597757854072801148114212526405516006832900961646584951536509384557068666379933732524043109622051891591544818105704552517180511894846959882120983177561634155235075069525961657423569758226752427168348607437481977637956862270845666620393777961940523498948659245221438123599618680397988106883097775694660897498523232891551401146447439062057957863302610542364040083781900944464542452331756914273897327306522663911437880851929515101309572229393493605689982192426657874589877831412988949548120882505002800490305867609405451565090271092865784200143824478180815544863904687273800673369315610476820474473746185747817303827590598750949550159243799658354113814431488164413383576258477464539092709522609678481333575555945714692744318501196269590236680530203087030503840863256223515971458977018969531273479773371013023349010326578141100791699571109077355540533005756000633177178924472204637739305346367802125441547927059041460203471055652918279066238642096699485449911951985598500684564765786230605466818152494933172040460324110724669389482509137100411484043320136417119126358747115678631053162852034720906443439064294056810418595388269645175078785733402537910867720705156597922373040866764240817606261247562546536824008802150096021282868775398246362302325039648082838968126615360842248444503907965403195897413551760655492635780151085441952582269368206653873938207838428796490133300508766525723178961867907560753038610484043698718165907625161530169065055324656420046635743240622712480886045707266743951176373733442161193488884378902477469713871201471188920847481914712400901823774637725487887866200897421635777575078175800812220256568127984186430416034485866702447998752172636075851132833919514908038979667890344737406747631963598080156331512574668745480624949168998911212918723507956000624299001865923094611060032201396604179651818004684231929239382491735871604217176194271678204885063333605151583666218604534123563546623322012172209380434185190089430404064955261013833002885906602375276149529839638285881163771873285100052614491709823692290261033272910426365071068180657188130125310363198542691943867960561989177947959117744407910260938241912089906402455802247759757910854026385629727275586196485264195454678003485301565577232218756335132810966709841359895684203000673905971506394435293269337130185208601517578534642770432462973271355417250957435119241428401376819184234574032288860288223544256876403226857254226342741982075635810352815214822058911300790346072290041928450567110460010260710289730991119089428458004093688184012290066839907547928958947777886506781748712419196611795880680714139789664488073930026174353338346876288347192876272380186342032590936859564843568445913940596883876938207899401377526084838321961891566885718578535151340611546480395393132428753539999647722968425688680386604346298417944027456182162463557210043692458809754505484016396733231486348816723220167615629992254364459605279684801638321682179120133955829805041221367465066682929919004285428011808299796243885199415834272368679002242825902950981203324870530987499251367274005977458211089804922151819535880164713972604928623588117432090659517878392102994010639861535944457383737351313534560915743523959046788885182363859833939630210767752911307734306601890613112717505862996323823622489091636200540539391596955593331162111161208930682441631655336264031586273593241785461418473068992131383379826449031621831885415185297516785579911810415609825271005101102675097756722798789367364727915259231398663029501938894804311613280364843954798078654824287708335733135951218911240157626122255554459119089047949947042029143670345623146910740858642788253209625072074655236284263857489932800173680659437661925457084348093632525624828994576232091624556544246447077528727458892136919064108137646965078102575682109512730636694609292150171773859282734657687026180956456967963834964995667632163037933071812338579773499038791163409141993036277618657758558371539573925320461683660709205407866783455100299871651722091571320148934511562877248350102517858992932166643474762383306293312174916071219895087543748626388505111852327014692423288275478652501169029288787052793762639606983428547033985256113654117726057454877084424333434217812034119437883192624225017450691946591453132616095010868475497667902699848865150361603797237132053754959589082862913642022834823486370632042829371347899198891910273710846859942150113997771645349682585533059493536814858610688599051745540040142810528358804298580114939042455575810124905231738184978140792678215317140175016742226164436723086290377203825422156415037029003888646259869609246938266140502745638591214601695993435553684649592588650620742822390261561768966339365770403223797556375165734464607774830846325156470466537553464543201797497889455044161974772841376375094220891839626882833085135372437431782839695742436419003491604975965314859245536537923372236591578935100911977164030527011675205471688012292044509149963063314487786479664444164403142207628609631694494615393453910647811629769176099007202661402697101303371312659688412973781214965556083223671711748594356072972281822592963516002657653676325643086788005857758208307787312731071131491429662004254584888251583836106874539402085873561779351254943564831948769706621374182911551788207050577347726958194869305824602972482077833415886260509027750760223383923778190954510988892963254350271728161078077288233588209180169787576439842965988421839224232936869493934494317497943786842798190131918125907745634071924129858302734164741814784000687750669178523472691332656850976717564300413088839713396716921131805575632209968720969831326347903526423339354060348837810987771184449529777062528138693208630140487187730277455170735917862699481480524513653033170337411586031323294440609159676030287432418512671029207769411786987875727172432820672903171597054894002308012116268228358564460787411852685186489609776604264123198105918329863852374723352685661797237341716576920260951370987402236692812849044243529530143992559790423648306741551128208588871792279841415166755731012107143567511067762643172333222366287627747549568210539806434282040776389264442515397467648710624998526091837835136827303744330239429493493176487207843582889549375283657694459354611836096175539267575011768828411222607897312501598647685672819508717296208406831897982438197496800165114380202258081934693417730821552844714527480686376689919619316721679737205470170700057391536453071663836287600424541703587957628961894823678631530677629003634920485049102205762562280645803934504747509357346673025637999269815075242102423208427835908029709547635360648400550105331445580804395067408028958573714327527060015205657051655707580996775899728307960842453199554614135748500728903463455285344952570170234690094261858762365179766525287658776861207722323192507398329355110145332173170021303846296590347081917072986224910772143351655834959386499014864067787516815274306858797920041844111605608240544806445614818436749687028296495421390767540454941367969005432633490710890596635913639779988884485019306106566623128641833668517308580397398969369569255979906144761686740673252353070466626823070646756616639661662452679832565386407114717361995088600160161129651801336477993897433944275072590257869764386789598792016387981342042532106020713305968478994197205940880322294937133110801621833302443616669770545136249268231760597793072220099873886212620516612742787711523085055354319555321573573760299574184585359880696122780899102946893164965876867865898249065974155585233615572437244166163695025345747336776144474405049876317737478916362439763043628986419180031209848227068437590482328373226323171623856060181900088348728659681286971045060761790432090312587852423301172391332241042164867093720019695300912098601734329372975749644254716130630585937976986926510332914607125950796621303860431442937879666838749333891280770672016002347290589841247586396960195889766491388770718315374117020271629568674456710484000123360204626026725404915970247735469085330952608620593086485927092695666191114373809437558077323788413101547763732946511435533961743416964815585420568860720726534557711341501076278122927902968540081842711169546269028930384828575685733286611035366789978234741654543654105307168928301526689915087985128518176035918685805032793349915963952032594547267847474631227291404904309676111885549466187471616594585382849481458093113450317210406478212976727039648244935202114128267029918131824477984361974904837756576597885101453762558891012809585733295692978514348384426032232251314664953504541818016763865380405061719186996126125908042183131419127205190825559878895378424640065513000720584187664892415003843780183040277254965286206459067646427937870727131315222185869134790050352015040268763307556837592849708105813323298810502452176510162801226913096698011040682326609847784013567579473633545872873633904757532825701447827832565927835001052727248605886774157183392660665392259738552048636044311065496025150533938306781329762142200318853794880205606426445934849098708875919200646487848831467497848111883440929793207409799796245619469491043419197141179992768469102637922583320304815991248597786363778975811204648804512846244432784524963457987991568982271157968142575074775998908135456133916176622045934530595928582286693776825903819505535768546517839985160824050157858959811315146864109780907807930818209589376469863426442693032673619639050595836417030068789362452997805522395821749074984176787108838742416498944361687214607275627735486521784351261969776850419038553605977488065190991379498514903614610325995062210173475543660855646329402464314317696309484750925332152828379147671879113200887258378849295460138041561421055261658148720565100821589522506942512237763969706590794903563691013809620516397682740126514038927131818256515099102568420832270803631223541861536735832774522036040222303694860049281699367779392716090776915772420323705794650389975610215754156822212727305948344532907771575949231722124068711604378058948603878452607470032026501239719677885495722888167578383138902362290461792018689797279807878761499822768624512265638055192555390714119918769111589057437004823182482395328605022194705606970080948454459249048374360538183902264290435292488084032622397642139902963432654068384940009411959187401450553345946443730973775811919673993471209592288260891485453874885891460230000355814154352962497970398089854850047459361680721877689371838650645550274533088489379649100412059270794930990981321353537570611125605723822926565317857166738810017651734312280079488631418835082679323431019007055750875177548306609149434075579794539885660356289499386558868029205342280112194790139677581167158442024169992551467784641492132602112269770533044718363611366243082878518494387705684375199043005395921011086831021227564709120788491252338165671866943403357339156629821852543113123912405252077522178702223457955483948199768881373158466938302768154863269419653912954766473635326737983547905880419480592920188033531543963022075555193610622611009127649991245083483213629844022036970332173360990981039745985153295540346670544220559303500643073549756701106364515382929068141247448441331538374612150546519958868337955619660872871942538310700867611666296583787069193008574452182518192154436603765089347209599675732151425809847401943121751134713943426513969114725505926946598443628820413132144405922662561455254772625369893036257740831216673331380698476549226940152569960986043457642471627651685629163042900721826255716131033278890934855920569082772961490808493270950004420750509706961471459164389049191322615267213129274007049814763429595445335075929580614194622731749492501118528510302978452248416814070450204406725323243441005947289591212850248997406629869252445094396493609850269152323000556673658357065078998504386712359951353322827950777603740307732034473133962894195868554737535445043751366138638583340868548508188289924933094599536220876287878416767788693967790364666860149974753587657055201599939704886286405893868722023037871291945599304560508868486127455045057581543595174806858717123474183151745316853927540787311316792873536806817514447400430466855251434956646551071475738920855116691407897089687876850130215678802396805111343456104576523974860317514472922043585005490515906690377294083543486911105046227640900037541796544756434844790747523355268724654299563187056906368538918562940283024053167913001414557349011734431348161266225990969646864534367658270986181830468567495301711977590853775792557806816924751138320166738012735689002225070413250267431189295583892410327990334475624391463027525993606738278614067216623015181889965104490551122730293571380701280927682727520859112872725344090723848051221010983576158910964715858021880241176648650725355101981594888741477301382842427618530552180191619225482685060275821187128825592173082882566051312861112877031799660087013327708923323251875573190523533355997637254997606275600924455177492651727163206807081451903941725960917786915050403566068049210765946990002242985876574305233715697739230715193000008917275089199397764950119212715134918490883337405840865526199239541616328277535894112743543129816230835500600033307047853662129947220424208008414056701460543575741791698241572440521258172148106656685194970861126320154244466923814877401205597701541863216417477808065285841307066380877354304083544133834353072124976386990307682191279739500560672162863012696333132752458120499393132729446774149464367020260664271405472722062417314588180069892025982324365146220662650867095501207295792290480050823351644006386759403079513484046846934794306568598255609222307436134055287354610809838419044290367543428081016309441007148943363310914358582960527391235369619923412183952126177173415234218515369120463401544638714441309597855460786306494913759667940056300939668118200080302427609305280591820844842645624877681320511412983512598273320702264300027792697787143623718549428897546977027183775475920163843555040452473140037678193785400999667214813044068202496226883086636857580824655233119275672663946442778045808338344951107118865443130958982831635086737471735657934757332853686328542299051898122690584709132663313120857252766371801696986766126784213199779490643449253729186585976676442068605948311121110191141090444594784851183336795091319096540377375757046619497150488671041330416551700697581876177616752600951454787073640673453239319424902216139888910280249381528881632090965970691689146242858471224598594288319259064424580390989203482937571391017344221912600689121550536283634138229880881843959613316790782902031364719706817761082582508388590381113757287151947278995875548724151102577505946745120446880204719589589767279543380595676973979292182895161815735723263852227334259802869581095126104855931554023104942889621693228949596254020878652967558966098401124217500043877179564478269344048676565244853097040293623103214968708007054398986217297512361854451954452526425167125620325447286979802794841441655026122026415377151805079941704815730011638994223725681913368457428282862337640123083656951545061131498983411788369740904844007620856226649210968132473635143637525269694069137806977096057806131633583790563313204798471810540482697139251173309959389455982758995335154946272534144009187237103887473067893007191371605753798253591671972366473107190678928193026933251848957012254046202492843772306091037595564745268385213394088170470699007980903329788115025276668262128745385068429266088113853310613927820699866692585697333394254411910458868729246561828011684253112119207360466572943195927086357594634428391833898748310590266276281373448771310169446200294211706800978951859917957724302822834925080234144306010353363351282101697939960463719518875357975136474320596815025779852082933484495953179984960210294062444413386611110929815250516462969831731634717200633325535931054032553663929371837153515602026150025720648814932847912581400521871562773860266014847144069954580362318367417640993487846477670458981855402660152258478088252552149295737404716098905113802549073118704743070913492583679340811592007144543553141303211985783314908544600058185700091254002384135758069129768736541934285695429216493276068360158322772736940641836347863620394707550801372413138041252253157305395038321969333135944754350771364740288128588727118474302032000896439788929520025820807919638593538029058917611145987738164446624356919054241759417089165608812819412593628880603214456891391264954803946300969587056333297649857946907476644523747396668376566778435813094075788223032036021499471556303872769925349685653097291777232521546608036468029581094522066840261443265251186060396745927167947889377027983709430866555331408464384137053572323618216214555838642485199677048391030387178784394213408664885858332721981376759920775214239498020654930645308001029562854254792235754960134625061407824255851471220378094812177495267516262708873095956488072102646060248252991946430712443377595399928979485484084085428584143031051575144237679730425255233445966739721189107572714813037273037016870597794636536108783456923063503945043159209245607923905158207617693846903401644779766237732871380419389530676582290873511536756134835110634734906970335866242711705583328399442924546311792703388087762641382400927916677991880630115108111525579309109991050706690959927559003133551587342254907845456782439882426813927653347356715451671682159904532708081440312361355824837683135038846684570011985872794774367578672422206864720774361490909774009866815472521903034637375038336508800666681598301840724987793604532105670722842428636508489542755518285403192912398202427006283789005105934426610269745173339245194526949844971067681635118672497635833678383593198393559190873348201083843233612495735266740574947835244839382751231515333646011136861708624084706691710665850368797075653617626153143151184688142945899246622572950281551078097262739127423072415292728721642846983909782407292693036991465275453108331782713750450024727499731625591022798249984076087902077345654733363795729815426239177867759921401203174148516377681812272398207130306952685764693138919709813775576298147154690205758341551847427665218037122459553811243285801668241367008127300134849226958409883948853207565808041960869005652395423090116997718205507418956295120712348874611976275105664867895506420894473189054864352404400939146374178407146949476376015640637128833039492088784685899633767447859815114661646457490557809235060693496026613056099368923054594024620977926039649541206947414892698960975074121191145900931132236544709668098310849703881262917543186486902358025671631193752832160118836547645657575427247175258775783009610037500737903757848145552271768979129307278478852433825611826753874936518697698215699038839028176563390347360987933807888687067883219748670749462424038272895898207164570052988330711772610761219565561456539772655922818185733848157756778618194171182773680780037117304198302468058687426648004602588310130417767443875876579960909603609611178279840122725045814790905902579400122661967088939281639147138364042037547432492106289474945243063851394802769152233120510892132712071004378711216384841138794356689953414943906838791099644066680518849625987081833057548237096226060873361504191203635343802605399603045180918991612915244521098848744444649315065360074774183287502732847969585071978509738967370850817155562907157730151293213687757095591081734228288933315570468006925738502892607294738322925415714494514793657581931725890279535199849468421738131447213501552374890267785838228747168098912864547286562843626078334083155803806128951677305637015965193228270220889588983196070549115800668499961073062855490885992092277481555009488837530492990714105887091937037278133339436529441344316254531354329681729360006908609172631149008623426829028505438210774351918237689336984461140962145273148539699337680871307290928070013337494583050862890081498521239650493381660001965873843252415644243494969728718177743844075643376410565757181298924795565608419709568458040723453969575764100104842222988871702721937494783694783906679679507215106411431905044684377065669079177620566494452229695024654553141923506905874878668668969347113090615752175851856533249491074409891991052264653587935520854408188806610170863949846381449181179688025240721423616393380536829324951323503564308251511445074415560753910351879347295332787148344638744564719989015128028831113335315449306928323902467925894798399369028506086427389927662495045536708105350741433967184798325130848125574246524610342942302173031848646280273787302266957733935262570420081203595756190354805325858837780145598810359150809554874388851695428469563051353461919175007395236183735205795930840883423492376629535928769298089304537307487102446446723027048425170023566621913891168906449707739214224182879230250063724015066934168513014913184606644563726265523820057857316747156098195216510482080749506877508084137945243942934550624382428354359449776616930486807163999595518825779849238151148881664556889042692144359500030665442333583256133287613105307021915880430912516420296423512490272953614105838953706422298481566270212330950660440586020402956438295836116624777022243525467263618413398282929169101630544597436783056736754260907619674637852614003369483252038185045495407520193008792460263236130290119182903589858016340330688184398672556411332334244356408671756414178018069461111303275893817825493781504790848623570492216757891270416433886144481514010841267274617826471780343900932700792179267417948027578676972501838086480549945945596104184411962491303259037410429729350348139164019957931326987930222062922596181704810069328570317847119520525149712629832385092801087611708871190405061988595609804111875276487695401508023103088893876959769539858854153749600294216347831097281069292532854855240717389399736609319804987576618945779230012748456897298837229599892141583925348480191673135615941048490150502518549549958002061489504406445040952533879740213172595518656442095973487595418580505595763876890917469309114883418000786141978444191619911504579656526860573408947918632088610735190070711535693793837340550752853328399459007994895166517769593376461784893717485689965543520922858890223742191303599659354801999197351477827635465227769782559887984076101660035508618934299942263943196495174445910429091094753947985808940647272555989803326298451933341445951130119878410637420334091570600354865236266864313324923478216845347553684553856281900539500500246036773549027094917984460097826460146478427922319075512441960238213236477284306950223794190350733584898216599524372038648096474409613593637562226104092126491089044654301994900381509024780414182924915982482764050997205362187174346502013919152598819284217299495883926171905687676001459497025076543120625687065088471282821363229986973799455575434328024429616098211638422517290798589029115377458961794992784413878450276901853212172833246721161633379225124807210567821302422943808197209650095158606030921438511164916675934258048624474064719092013318824710479124485802261535681381138337612818818709542044619591471393517762689797943615993438994826488737325491520897083939100527619046213675572798018250161590935717303257341159383971265123461735723314510717552188607996555500437247006060060119349200221952695171037618919475832701323205354202204575391169637858095949464397613948468424537447995953575735141160087190443785748019016033405461321302904618646909540648944155154314529372703623953670559222985712607877983109558537519569736868540538712330722572618893674708770866469891724951651249359028184726976593717075358913918561630618307269017992208536377212926209330332158591982118120410666837566146689742677255475789192936491417834802977470257582264024156425958323768801243789734667214765370941065390961645551500309927426067743191319627449515089445997479108026383846506401311173261365485301545589777626071670860178523355434453643646568154219019209461188297893252929723721530524197521851794855578472995457875105651106219975036966223182296086030510749129014927523796837237008185854604175710897962981775983325676386240628347914710619183276277142070253801556650527645763167207790323374501321504909519180633048699580775901816831544242685674701648013771098961827331999565741568135168151305410258466578711517334991844984502548367851417473552699298467815124371836954146397095424412408756453843460940813780405106135649045266955748623351616805359653599283778260681667443006864443337971971095985486216208487850672054237285514321024377745632870281522819452930431797116386329652878573176550975872482299181264507537683715093493218991914664696845149092487753949340675078012451808639200707778776888441496554671404094408410417456106471816564334274903809111816164700969385496988270655898852359613284095016716762383206518640271108289097590809004445551945181470225992853406264735787220954864264708198327436085896756669670980856944601183402038912145001933146236775326948754449510303768125627089279516868406747281560425787244600034947968784642726803917956908402740318015543964782533841045371044383896827198021814579264041310668237123312082769786522885063306689471007545525345255284472579938493937335415971417584214775953997068762394054693821024108097480029705745530077498008172258431675003625611149019136075950993781924713036599854526341211025530501715079870509594726950386303472018371445726677137633899078660270097157781785252318238698474313907821182416592814392044519920117344030273148069722207534651048188208676881687570332009409683284822021448800109232395771189960313299255530201212592695380823727737799321852251107381668519866854190275023588197639206642914005761073683937902824888763722903225509546355237745413685088851682638126308842628300666909254033322609038818924060067433047227736172416511468301774222515128437641176211469163231534685435021388107747436727232433441518070865388028353169049097592491199734174207780869339543553682965381172848409875529769873333047629291893786281584994734786120533368830253569214601231384276684278298125895070147677777749509727933912116833956097226510951585374484345740048389902567242067581465051271406708092190503408575239539740499321027244756514393561072607662122888810892717035161139236710898369851666926875958984752667916043449890984492633306818345976111553978648150381238229983097451646067353822064706114310573398112556182876170987411547511368917454540556718009361069371646668970327378229149978667801485326772443508714776980622691530386774365805682854647252246247697726458426216665964656314410461010117087879802737247721339581402091256515307772249722710592277361607283794634832348118519223276276122595719761647707845080021648757920547141397580673573766124217036034342069344525282093335767610968814042186199282624333985859716886661007089760174618590883165161498967682884640641325640521838507420611755297039131081842361794374362393045052702899932091544104119624227948171861446022171906488545913903898623273433843541540017387268300770264217183846108476770119465324880605084121160111314171872372898340317968490364312773275503925855455612859647634507056395321804820549741224245876395431600375423360471004436541796865071764223967179536249906240044327341274819750261808572460667222270282355942124040871367482335617856592679130437001137948985987283243362839277476160213264058775229954919386933229666981078074003609925035340990869327605679157448735840990649090058349127225865633221897764827913854225362268846825790138551854092020402694714814259704840496194338140685698951012391607061652485116854149634462723301850681015421656905568677743893400378255307135559415074879030796454637091858157583469360142844200277726004617676473930056448040126974441270314900231749497045616059879433137076712886368860313939482271357370549951163929331858790571828922840559525823379459850928485028673728155043929322842071077484652051507854259868747656985914687400607050895527013780700560780356056512338209944694002068873110848409837917396032493925234388084970080122003456938206884816662541319106797907417535889976431506450083596397452516844428099827911865966447304989014833218139209635814819029310242474429012918208093427977600873434510310549597100731639894244017817171947905460943453902842119606099261368546250578164775899546774803017784924122084384549558401703904213600706450316579164385473747903797763823583739392017225500643362616169829336399713119030606266630864112702532868717192713226215060205020035759225381100225945506663104198761502581488257179107259598595382188998023057511889746604009514887615235123315907449707492246346695942694090874380760058431714113606082825444408341879919667774769346359357214196468409850432587959411388411383247998312735645156116392663792907482758859412298649085951723609830617434634225556336543761263390368026794416915762826907079436094113699143995418520452638907635589402954470852450556632978199432510854126789889963372955857766089262423003261860120247788554796643650178579826916990633202879374616143884090135668109873033563687772742445472644965486448089472890221289133797483144355678434533400070499743319487373375947868866856772671729181910577734110213820948124081359092789284230777467397902188162214977522857780470816319223959652185585783044443844286133367241351562235644206668992330979995111187829018062529943910606950791707361579133764403939524245431583974319704586932702693905367658958297849561512019380289113911111709044656712622984277139857458809219417456058928513667142161402328797931870102688134144934844165558204874649071062270990802052043117325423129047530724535736617265493235537731681450149058113763089488130721698515993567686989275777328715936173078539884632571764862793324321734869658649735913427265763647622985538300143831212374700143071317434002957107820814210097498272581740946863393244212745769845856243822164936828892588525519271358066836737808221412183029918032182882737490633634541549700545138454360490027521724869913022559234594824492159992315350703557841994401195191751199573572087205727761373124253057580568387461902580617958011038804534334161795267350110535495765783195180688070240720209204782115986776719201040090011762948779827187575678170518212908584384530319448317331252218620504229214656608250081910310298492248634163320873436847667360551638614542810993984897091861916880515267695521967337068749133749255257603000772718833925121586930149123257167173911896893599474312809396419939471226263918527475136169087294344051294653249471780323146932707550960580341800964217624827756958760614690746488812372993034973403659220528407044058694842549723612444416607901590052297830874124049302909486411749735446126452557213701231613843152310970143427182002221355367054704742933287304347529056480599373334034661455350914746709597974280887508332308513055707577586873028867935715474679786914012433102618775276998881275339681424361927174277588071355120123211297371759100253623950353194496215300630512808778547269719853452157955653318939790464077760195049791824616457980348452648801510914578416421623797331653623557562670972616550724541175627428241682037273968965754055999118119754342348604167439131008161417916524880135498893172007714433864596330315306826968964926241255295957640903877509636302285546303482805439894233275357761531934545829693626950164995292975638424966040228545695306480944685838557476897292633881818048651970832539262328902047295619092704083484921780724802196152642809603615710796627990867769598758419336779238349617023105533486094060281567789289671473778880750320821545140806736965069322169082964845907236783530731035042368809351984508126809232551128032931138526074137511779918698106198333098253815444662723010030051544126331567829642968276133503205073356528145286759579537168302412129301775603270845787876170829207597133682090628253848324665900050014265770235330560281160135212029872123033022035383453250798888736752729270535790651883262810196069873718029125639515372654403950774597247267638421504519042264547228649934702956685859906386717652165851794302598895665854518095188741157016825375452698146803646022429219038608573138707635686793166093064684488935435522996448810901807297127859928495425675685758269302323812154242566062680000500877815833584833753138121348264710399161207435998126816961134303319843322947334242910241833998244873824143086169993815713390512609936875866294920311890744392478318285534189506590284417112062246794532827154458723632874335578882874486732723702976402089482164774586604224768558252756660623990432592635107485243797391706983142038694615550490603351423351240976631356349040152418809987550055425053833783735106722298613140168657527774665956428568654529988093867374424824695769718889789778397602084383239627927587792832003603661913527367423385042142968247133869484972126055170774640177362924275386112658003368321219335515260471161602983139877929659047779776357080011483215874054276178640385660824712010202721673860610323852876978970116149708083036845208899322286151877242140369712904239810024137442773584399941345290726660668732141631478323600966128360863624754590383560737903678428835609440570666537783786109087183101232251265638698143220396574145966408393611247299490469765531341773238976075774733825995757897711609675912526366179391168149390605454400082718922667941060855806566315388046945406607897687812783365010439955083877257319345288352233147113022635546075624538979642661913022294525705198237460354502598959234615169240654199598579088387821268817499927117982349328050009303741951121469070676774710532285125743035234165429301641344607192284820320377419916415351797136817393837284798317256559108882743970256386700663133149050429877838627573811203877117012133663779416147100335286851779807683915047866600107866156045976104939820287855871284039506322373575404694314932452737868931662993413565748381367638435696187703917609398442465999135592416762531501786952220740829003761455433613368825974299504742907449989305022725647817359863519622877925214764921494239434031616424301161297004717786427913799479448990545888708112952886838748248360416074181732356836299992222149409313813080359155816028963841624564974860496091230269824557922807502754141395338213402673909709863129762700187090933011409930795277320756617130031570680479076557622941792995447195715593280761909684642814974364776763581606744848469525775377315561969699630040022372036939490037717151456432547256633011415200914430276357188328764564737079553306237095178010289398913099109706436801491343635372486782875755489809950477057439807868834728690479929082980863511216660674546574366074891245660261061789283172124857156739695830002813656091514349949141536522570052055797199150611662797537736520486597510350024637506369556261140943696100968051845468651487077369984981682974299475597953265130861106532280243969193679849390846976847616601902119072762049306842992326627053456798343518748989855864703465514074090737990574098065299010249813069461571531837868729279353220437698713401340753760000791242849329095700957054324076539857535671189812599666992646162892077605744511681428508019266952344635298621329691149608249527113109336743389837012229813860544986536672082723563248292154755253805933903714438072251362888964042220998519119338097175060595345207104411373387965600231567402547164496102692211569883864228120376307141137547466523076006364537075853409316891349221970249030058480544453237678926561826205205988991920826337206609724338173170167641583629104693449530567330861127278774655605273444496681459201999656842568742082186390380610633527311513559859120483016287059284100832130293464243446806823958941301912330647349254571004140029420096469153822464528957617972769370730131728214836578849210933242177256738979051920433313896839741979365403326021889287831367676193085587795318611574538071233343981174289790061392765047809496938841090000394063947472504930288985078291037829585641922465589585224114789055925756103314976131826488249069831752001855082175087083043495315537509937896562018576944076605668369392192844593260639868786237784502373553520012186759317311084919444346129275122644756567991222235217598858081874047808630501483909180701398253568812635129731495181259879371925509577749477221846516148855793118722237343514594334449084993483188380247788344258849590157543529257359722380715008374336517104709589162218250918270637039925035359216726694388811865512254545507268066812886988392703667414059131747803127357387378409120477158957913036283039626776818591353780125809609873366800718975989465551840658620971082245901476040277453546993037493977651431565344677745138663087786781458073218635517740249185207806641588589702846360897540068002606486201054975040724778751294412149932196333079907635903236971024036123090169758625326554553361548985980192174556765758551696522254108869769733388118430112349561394516250100415847396528312232407521975271893421089228042680670145278270648053905587526145534021547772800028649212721567345036330850601941277449266384169758195850205404490163325415832361008972989788708392529991321732210371263334201086458636895758128429413423487619884285223228665910539693129607933764587209740640840791244238651151430392955585218383036271772385100923691438567602725235806483614214137901591478384549910671927231570201081295245176175152590115641828680896913881453131887673836404937383670768364070007532046550621108019884815842330939063589969830340747843472389013181283834674772735154721780573655459630076465954924091978441783547282127352888221261169685329133007171210169978622852017868375898502255939643536659422215569376503416471516150576769521491295939791964219264500990037676827472451930905931071687090668678575718479817318723909571222248089179123513276033908373223852584310510845374622369413306693586979860728244180196805618126120366080917351077504757513233904015979392948865686164150038039132832810867077354050075555473026102319292141320720157665851222914368325358730949274401224534073964733135086303794230586854345426192103110973941067062213416694625307286488680390572614907558234317164564289743894085524672983817010551089615429580793176750617341996252145772401862943509177337801852934585484481394214654793612574873353020244397379681358293781079243497708195396258696354024127572087804870783432638688759567643430782175930776698658489483932217289075023537491512663797753759978036378949806668435492002385049076943022903061662564720332659887979912833089701329875310561015022983875527429049838309718793900652229315334184187329516217423788258412594000596418097089451844567852935999637938284179044177978816429526108456156738096535293616430757513378466303019314189297793909468762886690469673575887800193677014548158604929601134999015965727168747055556951595686046129864832252253833290433476319225465747607769121860645236917795323201528881903626708963034920061867703841041109254439577322574149883440613969840422026561592339390327066836066547656188041127841741653384620196299383170788892655798467872119548973515331066606845644146360171997890446478522349333563339508276551733270312359049995214759818233949029761515332691592049472844196548392783384361691427407024545606888540319327322311841870549272519196337705772567330929315346383454175999156986359166281356630978505438473840612355277205911110606639658601071966285088959710204932605274522994721472878147063273046023432883504081112544393738201377181390402007399058987817970982069415282485445368470456890646892286100672077122612721601534111379121510005657243193855927902824699384466315451675860555390310429801947764603868332946205344632579947146404460662020609144573468721118318258504966946664045737826911835315456759493109700825859132177695211747192586385732989111316288946871486065850114461852406336693997828013846527625921260914900711652959786079951475070283959953212527790198746851006841304366912488604785687185877047414598633730851208186222313551969196715417398802463101239448117047589651198255584926799392768244070512438093642656654789594716231272417887255704854338254082222687533182694361150075622056836140206716521739072076412573620284965236389890231304150394706713929287530544548522664814254062721859158738262801788696807996627710685401463506625330927286334033529156956535475267338082411306061791254945979273596669450423231549816804989452814034359292627205021379590004964372088428207606203550041975250750938159912360115760383792710564247179256600026925245407748891742308158730157418300935521942284395276827809084585527380970332081795010020733702018850219796891459335904688205744050765929774877905798444335470852304119326688529988177707833071163861823452780291032015470339294256617707117396199857969212462976030044662488071096494882254234486290431049605720963991049608241519474823830779842558180321655641747980075279561495879119821123540237298683281410206265035895144644399828157919548155730325779345988050280692636553363569535613225728571475039754104296054678758209810775541753136564399067465487647314670975922050242204991466267100447548592350072321449683477434580971985351531237981135097803885861958395264438479150543018244991219881793601359489399676830483870366627015101213992077512553376648009658842975197244761670067756927559474975605705001625378423674100839910885734362914048101592516693745247228875471753578821598720598924345076577878419076033323829485795899918416762753844216074073082427371845216040496678430547425664408452091420194393666072406650639780852098581031503187821229602742779718216862719444950036480387853937791508862842309951957394762721071536225398288980875156628835358210172708500006897872596237034764892885347801553760800433240423853260303165391149961150141536781743298350300780242720070949436504237553377441429077667533249039690397603238341964196745677870738435718194185131235034701818059826583796550658814014233026385012344719330210226547343541599748609360448729030426415322064349119772294293951832909753473772062519236735690754399200823543974361638501723169903058218656247021335420057559761144775981742814008370321179968578279593382956617749905890021759809802044776567782215858842057035388569755406586204911929139529845990878474226304864955675332478817773903143443121285838126477335870236334865634925864694126576141684584774466975151412169533809285730196438024214528389347389443957755195712384982950474240506982337544042389563868843738091989722083200645373290291941129308657378675956262896760862192713610859306333027553777516550858413269154430142771073484188337356073412228085434840706679424285016529740920447402934215828256258420659508000336680634787473150790568248042144958359117962489791064329241545005021100640870555802209660352122000490122978310680321380905596025656910978845243332833788913620546551878167973218720702621804103223261308462994799299868326151148464597463578296045689718632797309142918172533382503453026780134568678851747155159563467801430234604252546890012349673915083658629057703019583241868946100970684955825425724040063306409418177615595745725833380001395701438518914144020483006447661004957015391028155929320654874508221525204704334420978017966749902784340725359416116439057794861001987965400384262911882376818762699531840334864857494524628330863219537476259880609412078573287582259593113157983959735283768419196409942883920251708030717016800225392355717345137083541262844776768228650413569748239545637476035058793674164386643884714495187939894741178152903361139879203634931653953215728938540690762752120512081068401911697111566440968026252308415669289451162270579742601379208809976944962560304906477218572381782119814345993274198099665476760728591284369049899885448462987880785702144211281444556313198373090576902798530808436719811324958708323278471964141622776561862076953011081551858273273598472878949495387555616947666144125007636874576776858434227098302161428534924836239900365370293293345683034406199272153726524402913242147957460365988848573620748910896166897813973378562615570338506348461138616431064777227933525815023864572134541564416884410275102081577422912294795066137803638643212279117585193516682854103976038582854064516953289859819559021662349337811690199372749323683346124723998347916204424045396962687954292543512535422011704453770014639864574836440620414908897925553010827183120863898943628317580278319889194455852426216647418834959425345236714054540020696674888640045053388267282779929413145857559055312351795401846465652073057097505399531646447314949398012838080334449888646464225429232121011466444704714960711897092310326779533116539862517147719512768305104033688610324390781052174616229929702632031369537069214420226645275393856571502172995235547888230842293952144033955964931623003897496273179429600866378504405701627022633463650435209348435650443030479931884639703493441274406503589337186765712922929004825450750774932010718684068479261691168543941075423686509037058244060490574763390342761741433254748732933780068985946680979884580672627332223926719077133358330214729961184748924972522419363419601666177347487600231886097501760459512972840007184143823515150957546078915248032863137028804349497365736002440895067031891234070360742309045621659970690351452474293124724901092804185378384428273855924286655345113878356959201756685354136319057729989484624590741268435171374384675702644022685772255715651449051901502780712250466322977085761119596425456188399501291051673659609393980548074005184316592085034475421767640205880555348780583846787900716157228078420166067453627100171818742123709178006104145861138683491181066923251115396178173379172590920337466552441698531086695306360543177421908079290119794585966894874434758730989957618035488096235376118129518344597234541319536862550695381082337367860031646878181857517192656131589014438908855239634563706504986639381979182657130198962251043166226161870801556769850963417539572368062611387262131805307099031712326727062827009495624442887286382377949432498338759900960708553653046965786032862355243639003836284292318576275664580719340360925876969042782663148336634057200167660384914534356325779507958749557288539780960548532135587247919842279254828692492513411422626411952936158091214206806640954676758592464791321378966409206602407465795105679794232232818548911509170305676033565269891873002046916230728753487402632267564486063990760046549346342462996433896928338641650178152153686914346341999457057110378398576573457633795947746166908493325072080958509564239170309427872140208896103086443406767297200029934895519404324544143911160531851292474634612397668984487306352206470594830335678030444625006153152705335336124418071941947812950568500380733321175731850054689041852915941358840373397530290336702301346834052701095937921207785369559921680722337311817282716258776770067574719755939523812143186143504442550517525339671282152506846738403114224434330333012302118646938628333605830578406041009358879195034047246314971472376647389784347876916446994119789944599190088958139050456550844618565981196394138165466740902662887551250507829803621564171677877608484596774835375918672329948090517142752862372020008854026005707764777762935818185455641869431065166013956355450663333674534107548092965954422776282722829452672389096218202851263281718166694417504132059990611571405219199995034492615243893037702143724774911465178234667562063497148756452295141654354283521085458851457562677121302144347027835215145516020367855102062138441023778014321724966031782134099507145676169321829135748624628399890190259615243874865972288458625017546854322886981520719306670423886817037311887450197036806054663855578842719185600030565063410428772610312651206534858664687778073421632796614855586878117439788530631791720516566816045155513482445537650806510114528662131339314260165143398158054611422426219229349662538602082587945806003202393082968352112827455582472203613093482673275484925623460143387625755172109371364290891710847266141226082083399117770945782324381595190506132654740871958891212726922428805904788303753994549999791540313372498215511687681273370159748994208647061717463015935594033326932681244296110821932078833924151758986584470524344560046498061242390357572820670190586900614145348935754151021924232288469643327626082207813548484469255415746371387878549823108052527558541541141367305205447271128639104966549473909523009627685253750038702378280303162661582608275072106356685110386150229685256720624026304267228731612329971380889018572825879898246106438382516631933477425988669315848895455438177236604523939311279813395743859445600809935939306415714275175989667893345443057802057186146147828309755233001865796542771691616911343492176506674264203503512729498900526683353566998073583513092322897315218516840092941753850435116081856769298772589932644384118035981285411206247713268769529552324520817261705669595847925211857487836596714492751185302790235016355821917624577072414944899937322978472898696688744534585186439326851943984778945484655452742088089223775022268511546784837868887486393269167379838366548420786532978949195917653265013296361878204464124648633228868049734764976864012516344533948925067994773992655054126205368512421747495190989143853256085532565293341910489553413074604897690090086424235890677551201163734931834142577953940940806159881948566864967123780815408913428726212903357097030813107200440272544356363243244649909596693678226621154318383236098662631920826587825267237861034712797628446715844294150264357698219340483326013591508118258689906462193507091277066353634676194882458326161122385688039778826356506347496048924533724963690443407294187809114239029392332800966253959404991024233286952587454163239237062959945892321836799650767470619821911923209118550101605405587535659969318131298422733233167888603932989449429413536076073884462630144502648238798752277959578128399387815824175300115832899560819400452021782505819215027285552460239088101387120322775885205202042648463151319462261915680652600894571021076453728003808661110357133726947499170236080559193037579843544445199433473195920008451932636578146561823536434172496473749431481015778974121220150549197023063381578447623735920021071711422258138468913185146882209021823194267789139869104614544188254970499505717792587504749544304178623216432231472513375172274667436056869467746449756719000203797204606056560696516784385042760699056697001013851454509234119330287648756152540157462147337894013174404917456664007181839048861471229751636108490979274141055930249916813977629173408089470180117494043542279887453541314637046061626267238432326768183083621359969582241871325442768011016084964351477371883338864791501890045020223390252308829619926948853035378803168783584978378475444321127240004350378547604556221222405726495396571313831683702120598150304239258868352347877010338603321194651187620750930116351039625268440628659442302065115472091907480078775016293571831875560291969701674683537491688226652989028125658646199820641301401056146357949267076993703542389646701499965331378429973054812633847247295372315245927682902791420813948560614678788338156797030863439514924405973081543754208115114956989459594452716924052071190677884931175068601642081006151149805719592680171620299590255182231452335437804262075780545019546161994792354886743596510358808836574781436215039241036346369370121254585549183802386335185300535209351451089067294975409553436613247214763807846117215844424675996419582848338303724398751642972080815194299774006319227066871252202087244975384180146176388646667836075294578407899770177932644495846217603724569728497124528486802776586721971532009636324982896000518235803070064321791876531531986631591974565582929123102557227945242999619556711279603316947772009712416417414562488540011337111235644717708854243310265593236632108532498569461216156258036355436205250524905130283811932739018953602789545929759981116208268670990503242952036497309810040489462032128337694311792340108156477277083106578118317467689119843685408674216039287920274713010015248971632173436240314160308834306802391377133001708300596668801784441539521895461039981699137732114294932140455811133261362553767923281838389925385685141871095763841717905866138947891328839788267642258990450270449812408005925414117125155200593674351469965755522246988927978716214199308241567371724223655632651028511147931737156444990664145653914626599373637078998036628296839625645290633140424064046028079506815359947073996820855491802115997301241562954834980805375608917846237678978451874497737706336472504578659353218977985846834867696162531381753808538773146979116807252373330390644030626387091861277428761052273130316908045719353944975517513559978936933476277524960981048486681224031978100496912345897614232039233117685566647474233249197739883533410271874616041617756470470394343900436723327622736780591468767803216149013464423756188150030147581154173338448478617129143298826701259603718051546688507139806453610115563581464898161933649979926348764612436971999333170399850680529276676412539567589049048018658248131892895189337804301308435768192716072855051385121282747874719823492992600013080570079209767103270089819785446177703579368819073664210429829699274544165515549940231465781513525005568293942210447907947667067742762566067124214329517080988189980271020042225855368477761156328322193064760635134453806598586599957277812325933228071225421667918774522070135172282444114327361666136162410319244346523138566285777217251256601997239043084772994682105427582549058153090846329498813355143258543551769387611813306129888000596251956210703512570356946003175002111262744346070991057857977671919531221306550228439898504163645584695552417942452139104890208385518238816847002666416716206579442517583420108311173216737458636325652831155784275429887222017538157479995109969611610319134013001964683989872064186466073537740093138622760513706558072991001030243965077004258372931383764846275469473635553026134578688782026208683017892354662779631501437156920386468862891577438524573476551913151440860460371019023227456981493980270334407794328766497537787560146541297350813193362946724818326805820383050088792468104795336305866826678503917530406017339935969370690827537673937873702303706265106785410122364237143552231848920473220431045246462327324642338304597796548761911297043938620864493801397196431104558572238208411866622376144892345488625811341467531098824107156526556962999453240720750256418416510287042020700953776563331459472215145319040781846178048642633353071947211178716178531356958710989552920277354323705465670043083892307615391681940227113856100525495898336801633129794012687109366466493900076482557922441978997319968124506825813675840350010358712353655249457008262643527452197237623299302774362407970910578017443226723554039016252186235455701180680344441625207034496479257496618023618834008118936206397059303682433865990055310447919464397661195411018460576695192498423030737595648169341155790399195963410140473125007691685451992229258462264601803111574039941747706767664294685947138863460691374498376394909269033019440889483900305834715194480993989869877311558246714330299362510194998270984147532586829524886150527816945601812728983734267749689360840912099931141647290580554825009163477557039678621017696573783132773408151463878907117064510335888849188040022165690646663024189464794496087572189093279437634990688509853059907818349385640620874974382235274660842141563548643292694134375683548456237726300648654947180410721537696161355554323443260271706926463724566884945767240964109243952112325005862784937720943564921482298039158474933609603294893198210000463893851300205487117503188934190163706813000729818754558818655618897608187995301428593059051646752171322443042582865425118416785247793781839318990132215705258741126141500976850205380060603592996930987609091496408063279218166192776482237553531609709754848467676342890862512153652453130699168931671307841257743724590309925542060015830932534916445353641062309679275661851441469014864718559866912160023315557368318778437505392867828952547004640852842321454802368647936266901474297217458792904906173727579002429215141485911685530568649993291589277289721250688846717190246900891775552945964634301033540015035393735998066891892210265754673240888110496119006258493658042186244357529177017304374235225955515001945775240360362830529710586550218614450939005137019766649106100861626426223477091668746361084010257631057756149836112894116142137902527225871959327933069668970847597466101340916198523296390290410855003681395365555827228362805499612096246554597208999293413366757031716282015801400531903065115076262399674742427613449421904410139605834260584812046842665438289401394916215076846459522658696913191941775852295031152655345174884040321235260340585540386625839197339170554442742785413809948682930444318911176964043994363590258185473376036542344139704565918341630613088938446177386714633283305214823304373135200334668488934077851731227955653668900215629151722710451126293065917078946045926049685324890225574406852643044561712747765286183619018359666392601635288725813836717343196487540909375073681488745516789502716828267190303232361823137516713342344473573509091965192339737953020993613559029094203585482197503836702492649042799376134307980248608274773171859723199055512992639212483511715980736747838881715860500888361298229969773474475650664492872797033187295496718898525451905931841630021054317543014282160111689242199132798972918667631313002116365433577418302381042826621263714617717723833076231470976703487388406698672144170658576450642392622557572514322795639749466732898829524043739502378904533284949369748293486974671211958304508700961133426690989982564991314679857072210953716406186165707114721013961030869821518687116364680105474702861874437827412636749690263085285323230377061436893205998317262793890852200334416680079526074137827801451574314193677443824799245556839729945159149292464793707827661963445043031545098219947075207676402535397958045788268007760075892010692166568897025215812649048174868083876442423808115421732366596758692308334402199820940691399667667302172187746350343590825239067804446596347780028092894010869115061465041297527232998454357445899193407517440689602522775425247002781053911462339170062829368945711770911204696292723077580672615704566583547137116926803683462088418591419466333780649248922471451248800766165262380040908511062131404977569860963317795891328845096974957673888135007954221086660791122839550528664262786305981979675328713804330956204520569638708703755897064317807420141514200115706392031222421127284311309220301543486636367390892438958133102074793440917440268634199148054201402405046833252288450269429497244822330714326792691127935134696849134771969717202741116856977128586075577046142966619885475277919724649461609046291498129654996243036752637894867040124595764404002406350048105346966167285457318088767854720299879082508056492012579940155136801234855907329193404097690314059902116372859624550957104374518767937901940499669353355613748975499638513643742808846789868846029276522704087415233485149322113988690791497612573989646189168614719278807021969892450052989266350946854983793617064984841902069712105444973532733510232641798703312086596365841722355813340266644765228730244018077778075490178776452131117735513321228836466750863998665477338123015687926404941856591463564360411835963747948221614306817886521484448198769139462200749676878367187614252219414776771729255448296751367335558355513488141115308096005394427298324138091001332624274865466529545704827113835388667170704068182934033546806747881272468075559803431660735827702539101334080974121464138527834009676421292538055074948047169453890963434662933199395261855602508752667721336196191874172612616450329900578927359944137145064576653916692486231494077958725437580556938789132615448450477866383050125979046607751569034657677194505150257026228533875816782089921325432746140203323141437259017906495484870725692412419753185604637679851558681443390380960933631609736597265836007250343325071603008861823372676984531342495597210568230978322283869481092091151622884993391450305989178403697906436078249607834744836059654289269934852215503415408428425034364049304256931490369483885251784770344413288687184232919067202171826258730451507396642499669912220288546301850462024594373880002172209921193789554138858866125972885005160027760095645825156460920843734544508454788410690076529084742742451441705181440426312821837003128114838003550938817842993540999443543780567511727369218914961251582567720200105646161301654964330132997275870248251213618162980810180814375990650365483599001120970347120554821405540703348835228520119829489162724790728486395459098514921719987950242923277094275878631183804832124701140085735354902507881674496396780995383307549358517382760942274487163380644635314165852823638034118459887315995307831091180641343779809332338204369097545670341375740299203942473377106353237293095989558994980060122428465801440994889944231051620389532713030427937533416591641961061749594544012269433886693229279654619730338975409242795106993483749417819595603607611169310555303175478212743338127641082717596263504768721682651213810673402496844625639400016103507503988392226987649496578211240943554453169405034116817803784452508918684390705473679190433344997290322857126242774780999600020581691422519333497119001192845284847939303240578322059420523110644329562355988237353225955255469618261192710905658322273796219298197119952035654545437111474811319810051801552110873475643195457858408006671071481019512517644062003806459601330610151793110545432422171041975251268567360065852902363635580200510509526480094741563456629671657630804055444821029112308187663183400776875568995606083082765547069542663204250457491122881198664347186483209459917302772369911415584221456953165114364201567210384506054058605502002882369569699007697221254469203544195369132059546176560654873810199239101643631950327597342488444434348462173827143890848788994433667477589572030182931003694097048488832381665167183974263574179051123706076693745760251321300219123373393233181569370368775571236926040313633054349136895533998172875202048550300406243905389904972296936710101524415494014397891213866048288670234795205818625083903208159987110414885368062546317177449686671113018210696618264138169694311872465384810219616532748968455992254776626610783232910345511979238765976637319242643170202440056621568702122761837622273452004721235934245622675459704992639955916221157822838002690086242719223544375054340812330823632054905481286440777149980461722532861270638254639882207890735842463872381424527880497171417425106974434095672948538560890317502549322756915795357167557172801204752111361922717260934868392498709283818813819076702287762663016962143749726576089825559169014714983466626806532061471244189792259450267332317096062925711374086656062034805123379455619618956028508255448745296122363471081165363485290146473517350986452196359286108857794507453403716794535553963497081289504446448777613901675400793737324833754735302408881842498006445034641646772660739356016651378799576487158102126320092187683898736378632155989690401178960805021100022276251346958267456455896367072896920671620414232741008966207405006983162431970361953168430463900706067142522192365846112414848393041650855341300610764715237095193983490032910100408023494597365509349409971496395715200768438969024988745662592320626719988169993713043221560605069767496336395882639990355968145437598301807232060435921109275716156951605574274975719100966471234785704882154357706863817903052381943196037093429229703342460850544840979219625380495276358487732892300328291249867559019786145114104908161788445656654976607462606306558885640896704981582919870118630958119829420758343854775358752188663260606072404631366876505556095892484823798167390761814124007364182690014517215055942249421573275880022808694377756590020434286461111775497666133079079913285910399811255891775622074188077306508335759418822032890297778356279205185847658583727062311673251699182944201250551647421658449411451982183017653729074826396015708963284743426511812079391799496878487957658733029769585685517168567105456622441299475592293460685686789883689249375635638295743826125332150231588618696060556117149301035513322979532288459505687108840889069368469916332822201174123612866899199853938558311046742763660238410358823147303775984084837458563670550190748225588927817376082307134075565269886376546396507301637327761501439812831288146279887037743572687368900741205336528486075714786842908169017190186842210594627033178466679719282348965264624121043030760564142625870180009039956333028005214422104014384394333778420981127544706714588843350682335645112904998418342308099206148626336315602243178927750735094423077146570940926925761969244771819818114288228116307354853956656310142802521987956874475562670874580536952373384981704769841332093968846914680449267969220936625507721709991571603643205297050452287579121758006242408964036370846564878203367958692662663105298881204879168791124751462793535933038584056157071731895788150600555191665713227541886801166752705432973204976133404329396522812579750109085329575363482139048780197689594486975754666516740509012887380764491971986625933117074837862189467443207248134205188466586005674498670180867791479670005922986150958796403254425438034292667054850396579661287141400995439882071780056087763138531463836811606450725042969767237138405696269459562210415159477422105661820064884594728773487006474319871690953154592954912349517335813477209206487381677229821485704520421618356326417468160779357612724414435716641127396844534919032876457078730755526478988728402899342550305727169910984346509386400230385045135966392426919407660082439695655417988919503175861270617691147519100079026394119026629121217867721089185738220598199419673278463448754102092269712820673865821253955315325638959356262255690476063397826635423318374442705964378686911025162904528014591871158048837252933299141216143179039789446307306489866642759344079922414007490117124205516842822378491619415637240984699572472908897385517716137268389508208846492733716867309498871408906048098828186172515913625313314302528750326054639255897133303923189568043441547161516697561374830889271676635326086720804548694827523709490412948109169793405546424886003560398517014875194741376634671348664503857223658387811243278202055087209363560769910668951644690226981013059027431688450302376126163475064026737134066297067544732131457113518314706398229192672014644463314353650429573151905818987280862524085962577075608486904598520406368290543196430776597489751914972177864119157202552523852690692460004243074479243266664956826905019140298374010656459145815726976831640684984692555635704255273518857093993479772812676191045159165997426544730501419331710742958140203311695127669715943345681628755400869808982857440473223191248991685038707808495837393769794571437173995041536443869643619121628837720228660124016990955643014115043278526184601705038298029840068361038870600643155924970768596845936780342804823102127259560902999630841898678846552015564037352187721361462599769960614298615007114061990101102754485395347929108128177605371666141457010222104448877556595234612671113510422263278474464922155006139995695818631784353793564486897609355806590842169263937548185974999152191262514995814423593221636726970531258468520097849063369682295471291520691509554687870605607796650615749441573824432421456124705723508527628248028708010806617026412799409822502188150457137203280418169249410521723405813976493369102322566129823369773288465558103404437048217685240424630363067482557817331870513636962610332421714373152096100927443387673833970632917618087775921184352173296306880758756150629123798869520129187220410032807854858518318850322259414455707785911660808344220980456161904591310813936323121794175003585640643643400201312532480383638409038114380950742281020187754543670771667531435318021907420510556100223676161726682349938216752907716998567115145848200434161547742296612259018907778258330550001354401699866685879358134836371994019704271813066174162547548800168960948213440335733279321154268033914983867782531249063632764042026745184595335567796420705786631951388476778064662467214286893681565379950951769359242923146956733888623641162737749084420631992257385698623232623810643600935528078140525410994308478134899054377807904546469743770347931145336388015569561558972618536961664091329020200918433631693423841180936019109977850192920638687877608806015799599774512974915674452122727751824848665507188693336304782317233878114324434439015594461353210856067972039952251870265886972816610888553735237434704222532121045638130090576010489028523238253783536462187580700395841798273082908634018281952860568260457116752971886454580301286440699287709091783761032406925507319754264291090742259534183712184874135879717393846607602154116071825684812540130863190794087379271260426870536612936472340788382476469627417694599742466755046602661679797947986534596775888669151289674587098680372808660913876294371825227132828722920440774483431138726209036962729321223414049250866207280473236803576560679283674754787000822416161271172119795211209906284390685556974590320957827615226165423082834721807682001090753098277961227173364530802278295705747200877062809084546403761209400717062181641649983205860626716088776409437284058772886421132831703451862926837622691413918642633884738894918031058642050764356505292370656406218235132878716027421817196291847227567251902944838635034542530642892430994535800537856423991245716788242808487611832154466294621241654995019400651303512936906547339479084742554565909273830467189156630039049788325969770235622412317885874700952042220904278630366999758547056925988963088110857067982438626469433279702456507585903466227631729702092091620001781490880293129314147387007407622481055785994209719624075841468148980925296533409504060341723136331677120182375848257177111456740517109511867570339064155195623052282770743581346130641969841338994338518657322873869975537427182794538540610273712466891476968873711448419701372308342650494570876059851668032975186591659426943823268131072911721188944535758112901906513461959328755543613614868914568941870934279961226456585443271343980841061006178277300256595881366602181361503869568339642157442638655241211892651745525441536298348475819944993372507251862124746291795328305258933161224394492882340213620756529971153419264118808508495245476620489041846245255605856589745377271074268706195309575494883057420016677647959262358540955015651459025428093214567186660226711455383296924722485563420619890014486936015387886082893633326881527969783553873278987980402320377902338038132982665829707440707663007389620246220502491336824934448158719937431054036865981376226796178408949639121005936871930331659487359379212953605085876989069846581491810926870107560319881334677982160761324022782042732780979711761496734795193959845630915077983344522051744327858103815356706924125480776914559235337447884346647373061524090967453093354717971012093863436225684680805786901030122434588512104189357580131719325111488215885322673043221605600044415231172433949201254380425410527826116289277800075906393087370155045244306981026367442305422146393764688400857953814871188432875222958150926258510402558142787635667883255489931150780046864776533013865145954132036741905215184568526046221575250096350649949755723529931143002902807605512141686935770640233646212646219904616430374397542014687898073437125163411355882535958184814455366795523693773053913483176391744036786431886341375593658055529200691522567417239796990990392377957622148086173476174928816443395700389538683271596931334875761346386487889806694021084520494536263643274971226487869521868515191532293443733769035456876108058851233729201165744856585576453796933820168182734042720855522967584126773259454395835598534904413007095013062620061382631120698472024896349567641503943169129631943923741887266555000859195083813752588963136676548632746106648902654466968212464991403688011042992820193292843585157271685098512987872523519464348419617518686040605814452233450275439261098575002668065632346669386058784683342586513706701330304284510215103168528658502896378521872632552403010909756875657966670171959995578316440062011284939635967983630966172239208312916073699381000818281807118536364702912479973676082741230659316810333482436532545557282115788817741622553728509466780866425903936738939729519237933531592427857854764126340088918370615220555660563184313736737529859464635411201673345964265984500574318413183602273406369942186238337451956661515046434336441649259437998906330538042702022004332004376933633784495100312959119512664102576279682597603998311439475967592240419694021941124013517206659263759419684686829060583990929315011354283164413048045449850403947115902335848350072057710335835611784934702770090072329946154653070272643340758055060896834805417120072148998358080198096571644897828280931818261931141280287347848081118183633065349505479368503873285681795019600947061003918803454259245107429517883946504070524071037777099808532327731447966207959649150432892031941097134529634894336800544598317384503487004792980722826335982578700132822062821184478889087967341114068192703913474623058619840650068906610255290752376674654215393839951701927799890852106448307302636294965342389431732820021047809118353787289136147454906110942596003200950183958132921742994516614553618149605236406200139849393968460613502972863008487970241046406217097298460995422251864594422469070803113122757570679633386559871704615770767026672284201040357069526138126172162888977451356493153058828981611778225086970387980835819636312733651854091139980952117967860469096301297068036903230886391954929770757380870652440420810730249438889231805345440158231108235146411078791758640665880173491090022127049005265725845673331942816232235073644322427593518009559389814238159749074630269586621959896491538021996431021323982524859376267725476146480108755713553561520181639504240432644146662073138786547574720881143954676096699645110439170863582225364400755580454088559490370827540720410201159428819287999869978836909907609839116846315269478210982370550114308635493726719337373979354923641125851433135450914812474062978382116442357261597740140162414910544260749385509765915829066750398661660896005903738526921701802822649726855106634386503098445461521386889832539329673541278985852758348539876295755731777906520427367160540526396950431641336495988023826473438352473003286246978158081071135923654343578664197848220738560560100150479722560494264833398239064299329284761299601768495872467448549932642958037920297218310868582511249030893055532066993706737078010735035217782166898235265563581714855869783481257755143854053018959130777049389779293120668608000844718234309742511797029738168566438008781988352911987104343471824644051684409192468026667014217086972701964426566170481517264247723889771674372725726837418669791102432169892207849325869851343928828036698890850212184691910902058708525248264052818185881580400006590235000785696043246592115617587949492080834087867980388945429484446264658079007872370928036886738043406871854037218218114646877297601798275063100959428759338006181558012351954297720367648161310445739266016086085282347859311583484367314359583210419164659376517144597597471370637588561642505622203573855153471830239266783024334916438691245625733288349959704099060471501932950877888749091880966206297982707331871879138569419301555439262525813860114875198665958768051738823265088387190100234951449843909643861386194387538463627225865786811885209131164028555899490415099348232290129016022543016737898189018201064606317877357652829275296976295873493834556337388241616064512050283047344349273982243599862473555704190580662831870402747822939373942427366841244368035815554147141235307892498683602202342398023577453902350751509920315090972774291155212504308894128721220179605192679765137342316951402767797237823383335796900077460478428697886348041695216024198244051920427690332104470716799515935279860797419468152546369767642424558680993654480896631069500660000020003447438196317899639421713384282912241685909544447382775624578619202077814307341646790570782355291193701911165920740563333300308595887242700283355698254187481650278994343026877545742835652103767960430899223831536032396734499444853523943904656262811254289293154842191583046417817394630781653968269247024485560680827171768023409981973656512157381328904922192718266160178704535834036565465090137798480631486464851250721906567073571599931838186853485093967107259107105116256790930152464871043621924533356625174039958447953961876653006265577998539563646399886758026774478688141975425914778614666140085565435853865895296717108524525171268297589231462169501641361472622330576251868639785492972647522040631017572571345784518239360280088240168563419872890753368696280663856818314478644547692533667520792707126774181630303090855896401615200779853725131452194030928760018879313366840355583189333080830716378742333921080830533912596701824902591420295250627228490194251442968596865003469807031928141238146917962193697226607237532305809814076541732220213662211814464664483402883463491838731550270719994400423558035540332037763635352325055790440059247427958339999068519188223043873320665534144272460157164020270805746337931533987240357950109873591538895603521657059712033269827634384637083992766677645393231287563151926641774889097561078327942660007111831414353887078934385276120071234152921345808292637358473396484488690588954693112524056649822562784878478879114985664728915736209835038861261498688996640816705517362039755852993411682117126778003559864919594982551926121169085465683857158496036757253888303644127135442752858415448183468417018262311141418915980542127155387025532357088038584158156716152803419148682491896827030727509661306679293538058682011006084860295076498922121183877055507900909880809240728388633516087703029300360038942584974425421099134307624984300040009671163736327724361496486274337025702675247323614024443961748433329473660600639840846221461470536284491307970830684228315043041917340539655912355109779741536775119645022431038681177055422213657491602222315690678064285310366511400758772723994606097028180822796594767053059693175868105334031443524040339712828034639980740737061022780580687755294411892809420576333356472799996706673302868394513243735967730810418620242978943947598311007601224556492994421925258803607815941025499169343851078897935805893722504131654043424148794229833879039103335264818581203710313783968964090363434775926052457093772610442768942105386040539841367166324302263020570807258335091201595565465020122227717771591900764519453163440061397633347557307551485197033613705906528032006477593148980175354556789847436773555424624389485442722433398867127002907558157259108903559132989234185678904417159224831294572893582433906746898923801436469093986193750010907868301493547841206459135046367045234337278196342148816340503512435167202265044338393568601207320669018099650018584565817718618439828274826649221757108133469290653316389165681591957445718375223636048070069784229821504434598390311590674070799560871026855109555601357243069404984299084491242714124320518366226852133481081714546377985330900760682631166054216057630761487432028152606061039900266918562485178356233051671944026160255091142147535046264761112589963619025031717026755694433272239811339301813001933106399043609838804271188978060657466718370459955890316453781617164611078004565593805385930231492350286582217799027232468597405374544561883441838549200117746760501450905692849763433493114043248501155408871947557893492096309914469058036448092795323835408834423915456233236492244849627068706790047992826040463904255337420959240427233551143690024738441755757595667925054437130354718341087748947656350107228431066820840458992192522991812038832482074445446974575315258687778134564431588610224101595998557072737397157350049933772818463152692982383178186910950358323349785659280393215276970033108188913129269854948142266238573858216573594460665959063499068201578854320333370181426202811490293651204019379022033893372022537860896996239106189342029978833982972712404569014094005263281375953076755038240932091520529422022234948009324682580769089740641865740543893830233718866480219763225738447531678495360566003097575163158832761312477244504895005945972317227610159541182617678279864335052413347935758326512381336808951577007107369803393679916508342197207413089759314344058333142048330281496449887466718365110805601864463961914745161350252168424178915532656974370764848803824726638670375952528725125020260850956428949235313817644024091448592940501655882930353118746195419485643960671140377099200133747419841172970179933928666629552883425252639976485115412592849132225238002454304267303613526081939074182009693434817248441602596780757242292504128434327775398545674517982564108074176601832063645051824099190497107926920908117904805148970069361418831438401778632530316384166507685358293883076383260079955556132976108637783627516281594966081998941690192228967634820743277768702304934373872099002552832568835818162963853498170751996428242955680288497601237403228565612531391579631022626998052456143856378095811896795189479946410280164594469382354044735749913009972222914143936003860416033624051048951875926775195252094854436805242086643482764163507602264498093961707840389712992295358846242205861667902211666196058809525415954763710408689910516650488920058243307045051015078056507945813331938474660444079901095554528998479791666863962230277373648342030621610423233352379788981909197204279032573754730586000645644363567006768881541304687502735506928090342560877911115926531538656031419936303883966985793648241549095372850547201506718843634442483842511819542561081981117245359739894424617553669613133147260494677184168753775621190267735428700766933600449250497930271093393001963082854709032144659493781996369376005242047786800230135867407693409420208596529824905341631621387745308234317069933933085411341543041754340742314869169766237444016427357370729859788516279171511763852251501493880500861568643167563693747379851759637947102655072961117996982974406804013117353492452021786717979600005873450892135161775359479151918114463501394098955366434269653820471821458082916426643493728968319744400138284521951534821372028022820596900666876190240426758448364639318916373340445732156845202310899887344429526707102903917836823776338727158851688446407194585599698346065640133923833487868781049308298429160010879127440809886720744262556186470355668026385223329817511382288665756681677102267341976924044864489604415796917092667424197677666472186062161163125853336064401619933696972589679699269553302003570354473309285998397308683812396349285278337248770247840884108694849861616368920186398511259608134745621070505868854362037939114706447381406411639420683718907094102895624352090777986977222831600767850373327356816441783301863295290883990089990860148387403631498685856451509849272089963382109943526170344153121661643178401632550120977655356190974558304568582183272169886856917403229007430732070514988659664153820565536962159563182039981911491424669675972436576389061200482284509387860842098152350883391769847000667385315851426818544792970262650041244351520104435065603710304876363758456468004052195553083049312219222088070807653440006046507241952977121930294772319307943998224389785780376384652956468015692938495697990839811590329545513473599389182570128630242014859533012397760805292196672684985295607613782600093920670280606609904314224288491469584761119996785302954479755745404052446387291977467527757190139597362778383455783710278161077985756680672152688491709844739304944492289304731749686541781859669399345936414857827767259635971271743670128423554688298867999474811406292152914772098912211962498644048105303686659318144229240918988343252147379074859772837114060530238529403534201538716532025670964418809308614680926042679760094882540111519963180595975228891540593940352875762866470234387307160342144366408520847461655472310690535319201797802820884296671638487111351771440647215048880563985747341232631460689887235843835720297284532522532564233927237336028102851944705970373850665064370678906710836906971606854352822487149342852939905677085606545618674269044490865495774100961655472767774348894160818307270778606926944837076567237500124898419082239251641167816611384206669416852055023059642532283173747813706104057130221775825546627107493720052400831139622496619733930702460008024754562773768242491930839890368400681260813274569549623137488395853075540266744789043328998763333332427365560589779166713155673097418917235058941099646366827732504117188589585353897006716033655844989382638279533239092662899857256484849869252714310084131837359115506030412735191810725824509589108330142625619375134243125122765990771076266381456935184695172708603914481934562750773894923423447826156004367760877818340213882956703405509221780658320947361324037360602129822968512637802418561614084788459105312516580417567281949357557334974232246036133873368294454346825636795125857591586816671545811123236649052744059978707681594476271001179445152812759483879990842059610423611546305245625404891373719255166865791631129521378251612018898834706112529744241091260599664406819409750707546462450693005224729461238304388485456455619067567723692725442601110820135085644768228702181243577917711791525654546953206670050380221551670362245255144410065140826718452112185568203243055747393355314492646264075954729313599704274214578708779944717505830745589284544314503004049395035336514446238129314869393306178252556664908372581780326029178633575581916731988944207126512606493043052946870556814648983001333298498851562400050134834361786707584217863462406784811594708301169885828021031712100949106257769503095389260739797998578438637979420306660702735767221139901416037837286533088074986446091934175590587354923324120891729352220835335242371298239883562175524788644713321452891850134853214032707137521973167665611647133145663366337457466359022669387269152018026696020229822908253791327782794031054768081397662794584994414322493425178158589969671631405637530636167905938135373697108970434271091570114134680536257906458187737087874389608328091952391422821570178630097891827749085041641299350043348388948696296408843688217905852096059270454471738753129314201938091358018023766740026611599706213446541377716990002971728853071785477264652120982918763111171209901717196696011492893412346165410823928647754064861995366958815130227063895592245543074262529927715600685614345670655271884687601082226511467929138807419943852536058086941903760098145257660380924453217185286508955543244651932741932219954586887411660408942432377313528735229910914401163671736156121684483178845536650098411604725758297452872032546482454155571135258196111750720555543000478211924567117658643722022891439830872690721184241892478588044176418103034338863515693040962166317188565165258208164067462908629870461732101347155119139888192915423152460691739529599195699751169532481048719932027675832141680427743093140191875921054559476022263837957897551476335117039086527016516293093167808921343044491072144782894706126550622432234621766148010784249326041447383465189421008548204751983355666273837029188452327093458303579299911259926963820858902103424031080127242457323963146663985279165644168917217914751145151131582846791469219588706281368960023067979714964278125856697315142928712090427873126416835435114883902451422771196503909896160284158530800950297734330501876537836464251508347048839267211348662666597259375913191659489310856891896020949466527217523332529906798316014345688928456938283844375625993931949159804353361150019570269399243054367815019101151897418810416230657422158832371906318348129760622921108633124246380805919806701792821295446870982237052872164629154329470860483633490663360100978016410141761106132594755925749737678396743549787623720720079114610114087719702205193579348708316790850807105184370033184772751612307031330139500165586854474212874356025438250511470409051900173684945984935739665339689535139571751530451341747252548601375823002499392416604140455638723734823336363542960510467184030426231513755834154831585424226357595045898594497376260800387059655820582415526081381273557699997960574969461363160374841045485789130398275340279216776007668739441646022211523869551625427988498064220530768503635376191388121148616823573925204935791100043509847729595288503092386538014431062984198225548872437561622119808920421714532473498124209504740677991425430975332036893707658169536411599236811546173519861570959190679040843140369598369267293162770033263718396576629939941715555682511131676914539639053025199290691859370864437601375306859243825557469794234565699865099410996777060906586346285107401182146187400445910375821988888599632137854359797525237431863153111089986095880220426625024133749401452675118087116821838006308762988128257604890998994667140666545642691929096358309075714067795283628568631811762012497772164522860546658442576701862280463292890623153686493254213663390992471362318647439319430444000267311634943478085189341993728658654651483039934158998390133957190961411514239607956450729444365432726656364373503609340477501794332602010236406445289813361475259945733416200816584825057752050137740103812557788553627192170809360704262443121207636808092082100172047987422547708364956135016336595903777168128172462466786132629860765453656144169708902843120181534485501819001197606151177950645465362026269658589299955770616413301629369528697929063462360318444895835223181332261817733152505065902953365739392819164391561244955165323653319439325072925683531472192830520951141684712688180574770889621157264236316631518486319182887882861930523008954733586823314252624724344620313169132797511973261947799235590458348831040700302685422311102767118716984278569266374600319402276505130858211061765689713347305776058286303894548585112167880553613491986799631965768075877086540980399616594509574692204007393665289257439391204642452383419411599285983540847394339604307454019720032158462768551870240044909086982651237475625747843508960672544489193731346818449595167899515619162646184272925971720941732678162052973466932018339021795044749705502377486649936879866316581297432065228160199055090316580915208878694952832138981306830915828872534223734839969263233873532989742937308893748928018809458736850989783146385950188300215461933370421472804588385965923557680302945770444679695253570665788312937240057897278066833767092704302258496238239041252476931000540560571819861352078659122631997196127098141244873105911917036948788290432086189651783458258742624120618324900110438348805734273805291727451277474168372057489470792352837427919223393794474059941624653712685698855641697640688988225603165128773267442379653083445263165877667930366820221948853998471946311119558306248596946392952637648359887623470749503869460608975685724923315672854468414905865844312937626540332485888638482081913139363764310708826824041970385360288609723689061309202843890393226003171246100707272705135170651167117687274034168502745392400689380502038594010720287481093063216194658110044126666332913621448507461613101862998341898910892627402634328202501617467635434776310151385797513379039823986777093162685220574779963118424469598878868556203198543982085249981691872929653280027885842964524714440745894031642003454473443002384993281813512986593943296346216601965658109459620302661600569252152423635394037808473512410642427025919548666718549844258946737376936501660402008296142907413057793048392035315785993562508687800531888849546832213631679658746843952733587069479634944336952983546309711019848536075135060354764713780838314978823566176030462363771492721762885876891174158055100578935505851472024479131391525682807354631509290430761172506730704526687628187524990274223714960325483909115700969762148798716022138350953818014503821930675789558667134461533807251453466630040465400817000808957543554284101096930799652053365374394414989653239400975026816209984453433194881654466233671656465287379951610291388750190311893068348193971030999257569524457073712197347161190771352810166131500840082357134965062073315136154415463100219092175651332525530812775650802910280257034099345499730540935764058909290211858142160427330440548557888272992641841994783191224682765947742545149444528497102888587209338544140114298111348235777570318755721041120985367168537017468939930453716189530120918471188229003301947913369293250540336930133364288088719670098132487875195658833755755951648515799221623129348338915154780422169220702709497425412589571770687439288881715344122035545190138103103043287569914877608225808713198858998281356040634614641290430992283449549508856495793787600720515464464445283871017446485346626442186962170802169898562948678197872023795142769670116986131982627564024997292908152381464283558456454353696280559999959843362831396921897409601120169799969037404746899804400276887555531790559669041267725063275324734300824218179623438929406353677052359474009918812193231109604952607983263297013855872722323264793517635659618195517284967182478580341966696918463982330408966767097704146688913204371245257143469260316322549108680909729516540313596484164145390363103175026056902361082056881782114716482520390659274376290158088470695891634735089488129238698080524647119792231537308946264111435271469993310811573693301700457707765882904231109422403562815701141735900752924240531114881813237577977217420260667183698497307753176527702405629505567918422082692539872470540009519775745963081343583476793640125847246271392377934037603829958637840269919420200806386629244726702874702856833011092515887603279142537701761320051823919711511697745838405244896257712586561952893219366723215420897356477941006318420489854009394921509907858612728355924104898055613529387601036563788473164515466449591204521774953800643221742185982185161104549259206051850362718289838130932986670230158192004336348486672403490289189489442437690479805427773148089513062571400158732591716108959058794334526353535505491216143321507348490220699484469557680137335406558193255018926329030475256479430945481375961788941377153589643444608110854190992141389017810828918111299672857969119643498776675054560665138879632406461311937191205238754825276627339132281513180837521316733203153031005954331775133071601884927683241135672793519986300475342428269870095320077780175043975532579163709849682110107435234818837505336609481044815975789544899820533181002774951778990442941112672253245775300746322553423818477323625932951949902666265759762210372926970092644863645940130928795895457062832698224173022438268382653759451617744471998142828918921514161198524406171981562984841716110382867193464448428952741536929370200961060791639516076945258055152609739363853033391760365235906934648983304756555589759186075237834224127943648509204461992397311940462779617304743217418590160407873871384510413776319239443970242215260652914386176255975465268759132752670301942057471028240606361083366849493200138314242046402951314796932342186260399353432685761126158458174783222860196276005302780672944940281960607657410730916933450065004682837491424381583452160662452515478246093151286187574338575731915274867267257338468494216164526601741925757154259265715617039559989851062579798836221522286934334258454803594736170411468420674645163003556405920183252253981651736803151142727174810971906051713352471045129310871511443196130761156041546187919892040616205173023685544831115740262366122166825692468879948493502069748599053849511977642534902430344668873509838365889044502231228998242062660736085010258022246159576651471757598200890706253361092270319400517868436370498859767999302594166488743121586025524531846750130737486406602771312360197604880175536566000086024296962896412198408741435481928059414066019106448748341551621292327217254509460740099580478305497017949613669947290413317054076142111950857203681406355035708863218684031434705352276652415701835765319564621266528652051633734897888885160290380734651717090823182598776330728962388454763987965767765554613912625045777386628934592788064471111665633416166047841072035822930493661222471398300446660383266273748552971123148868269555250935349208860955804488706911037996843227017482159904033308100440791275280828925808152070962575925970856968938026078395920662447792793451217385938729672616668862910713486207233772834146360662155106812536487595059870449298627127779392301696385537933700839000498349785116909457487103866938638881361705496137730703677730260294580716774774647379790656302433427669498496167670547391936928911338442976664235715461580604257930555060458751084586279879813683186407912770030649547153788827140648508299637692065845105068205583087839878342770290189698390232922125349377687331798948951668601713024332061017256996606908102480660650514049757991595814591800750152730646082740909913760658177339871373419164255784851445400026135338115895736615824460956891628154158241337560976250689813803520644672147509536430032530151897037440005278617411676339112659824828178820131848623287666238292026411962311099413056470796891921922371962722820346907638074045397222120460761820984416277481776314169246287466749751361395942444991590527250995725934800082300182585566628301723935601095209086117323180623024824118820460967847704607097829278716104232242857541666397653800290176400673925415069744349213137033849998987621112321755531903820210903570463995608211358439986474106586735732102620949267545745295282998453736184812209693758448830202812358392990439051783321966271825440667131637906121281998658319289758024340338473247832095517181515865536914147232918949036900440331972433702329692346755517585600445887262441045572255087223424170708230730626255366137589265595953067925937270486871740253963536039910966756206563138982012209923173941264730725606487171715680005047525086285716019998957403464084995667892999439445043807666190294461864809418362712888235359892893718640842996005378702982077743074250405313120739375164040410054862142886943600460593887935669834861149136174852021213787497442213499662953427709968329904736318368073934870949900625603944203013797473438461488701464557877139754502118952805957715641424518506602878900317643935031431029503715561758405009377599756178318207171202134768739592669896795640150349069187740976193692860421304586613300289920105283063105654328721126405608978497075496360351401122062199920990861670437667701421877774232587045360016258216080778688865899367559322357407832155245533924005070500840884728381874688171757887334351444624468302083687622447470510948783576872522595711310030099013812366878923002050122247385701836467970924934854635644016417119401549161230664962583784995958395937950139980486999427507720405109717516730450846862783413055583180015841985031003152141221342514973104383925480058802339271718876725003675392002655736678495770810698304552511048670201213041749974607562162445717268445090448690519433632961102356003349762793937839981335427355572011000384742345091857379689974323064640349143419448075626983378276849209718940078190702684537860301270846206899376255181064751485947264519628372125773478541379782131569139726868704377523367344790285225643942966458073899901444494337845688041952244309612301128461326038197211114296428734331403804386529339950751307094434059246946709432094087660535884852658671145142144733705246399639011523734618285699142419588175760751405178237335418590797096363968683120246619703629733898648003445911912225067518718574488383054871945876429138467842603300228052240098356755276089763932257386146772920157126623004501865533790113879225363759615006434153969722724006484105354086910376911556720387045147321647344660201259474471771787768459577073022765662596827448105993928831413785415083342744904724456066176341148922649836534255304980775339022774457010329951340944830579737758919110067624139088775906551847445197809976768445251326363901411268063029648489286481953873002780524111043818131613266798017452382859029823263735755686747214857483844512580001811592631541043582920931469242522475382515596120906752838877962100979470046739195753057228185267910739418686544270252226005310983743021325308457542501555595124790693805734107070611061083938592329415750849546789654403943522328501825683853944008965947040379865666429275055956444600547572758811581704530684652334168632580642567576212014294218685774450693235121267449091713023375928218737966839074153552999345763266954725001604852012634485170302255198063177752245785594852276272282506253886693199759840507827644156814031536753354398138150213928029024294269205504892057417558299644300876529405460091949525225064875832993798595613434008828276861516195172094548153311273977301230376443989476891392598662398898538901155904440796388362493882716564291374542887003482095968532114627061781637431431118110310389588157359758550503608383864288283542049915642957884657247558820386396474037874660331255231382030935080782744906061847570746362691575377295034686844698542029119249955575085288890925549173933979771835290716148235663320334082718965846532446811775032193755099925335934190742818329944748149445506495577890300978575249540769182472964860581331545271665139884203391386350716855700209727355373952050708367781559370335349842406017390677514757983714623723531739908598238540467950282853200045783652711676832000958785071466887587411769466346021030511402292677712105398996727924444005960010824259832980089845230400699729349830233914395143850575788855895464714572238498341014490781655735111285999959383633328165902310193017074127275393758305287122693806453928873399232337561337624968430441009076825901138763044851469312786579657345927140433913319999123565480198483405668436475498363922150396031720735889665582605634792068503196651603251452983210078321029288807779038628492295798421345052532710132592202860269961099770478267648487848702649510391522746645557985285058138385336914971407819715835176083223176692639077891250377353659684262181538208568666136780053525913266560625220002740529529912956974254367878129386088950834664699483019598993855216858229890633049211457727924209218291567729924253578051619168089089156438023014969609229614382618268781296749027183012956774940153441503143611004304552887620713740900492695142227573291483716903008988817717777867325711074892356449639751815555814076523657564719647450322747020154294646382858026178638778607508072953739726208084959410665075540763856168894041787115135771735442023053262969659376547071900656190419737923349411668009182342743047045839577855239791784463641458770097099578023987754534198030198345425019309502189747789895187759342427076998801663698437382247151407131805523496011497871423796348511148858717237157136195454494408395206962874223305034910320479343944226945776635395318946550922372084475081154520555943947413507769719773545945355214473182969106682072465392778546055034769610302674214664391501390889373948205605811436364406842374082480271118427796216347467020707279558202539599890416276550504141074112445485000794390271850871898060351085415863591018914046194996046591249796638069982700427404336858255015393869172163281582033233459078977849864471072142441733551253916724419180241509314141512081248647883589471635181497506048955304171459453051844303660289576886716859336687653321996631041604561209408639622373866955981193873849629432126981604089944357187093467546614263029003471294502384413183966215096231193469852536911724327307211209324156891953929780570723123783990252170915431701717187196797270585553036209173448133273680904409731703817490861129570011171362402908111792235601483897929345162277577216560676465583901104730012705651955270066010526899173091740554184610334383707461587546720018508174795117297252152541015986083014331318251283452125486527336023387709415350509010453916908252406830880823328304032957682257967980418558052635581657122092076471499604830069871338135911537264767440459515223017235442842435395984188340702698225951874191567943603955653017705900526978865972597678976413631827707240638231506716897856964511181071113392677912514565260058744420661886356304428755368492830017500853927087887312610457800422477776086647761646598119580479374930418622501360975894918493267733231207768517394980057771803987951637134368579322585698097660338087119850096640814095944410151473301561331293284881547669607985178699918684794750359570925458702859214145560966218949586037834400086228922032255672099623484776183200844144850819106448263902244912166807266869898075825959037031652454927672801950731222194428016998923647535945961573169942403557062223771874264244847709827601358980530123837347075599011753990267097364351838300970338986818480499217124016952518457825172172223519845931811197649364119096280545159170321653841605136731668738968650056398051100872589208976221306658608049716254151742712130977684794051906594949389838241041645446491682503087566770186577967329344276387422175423247320958777809493109388099592818753627018752981633507698606651935038037054604168996908641851090916731089810868299280007483086567204950243973582871294877591089809254012442036893870775074881469967360756040871066031223497086930745679630325382731932560417140030071545146099921931226603147897913053611102365695870111544339213079555673385577564862883956138728667615456811219200274570852701185283197895239338653467054573129864447812727411463643459741258947803790874649648946377896423089335683523962577452705976486662628315710098505184777177108881206024224357174566607930322897388496586494784800434997698661150902841017985744407443795690854045965921546957485656257418706288736370735555872192783655764108769161225503786523700804913574702091369608454870714588032890856011458200804499524703950232993925678861315868384828509342982523253971139088158255764749933374888904608013192542573417055987440859295638247664878866856469797099375055137810779919812412601356353680096355641656055973321472656303221195281697971854432702919384825798203012229994441270587138045307199618262886957105201221212461351016232173296072949459832385195276348801143106604343968164666394295194678666689369396733027261553322181347091784908466161833545177189455028339134499745149548047949054817806746580814496668177444608256963705586718151003977132335774717033353946969300720517559399995584314732204597684277535959523047812347495166724729040504403099963230647559306756925237924736751077107461198350496958368700740350417833888944593151998440129659463601749773635909562539088287179188093291302696056611569920833644001829481031253818124162566205623361646714127395641057756980183865903605456710420803799500091033203564366223433203408401843268326078050401186444444391092442833197195926050603582750389715854620218905753264158651362763932361019060480749441813028998258899080979158197941937369081694066102912608633267386415674067461454126677452538534511265750521955064610657720697164919344731567592964729172367570544567159730725175987622933440096525320793744321809161353115285232171962069621334155238206938614464930110679241170701192426579503420583561691884556796530286003995436753343416204730048718955129239198829716797144648681015304041531522315304778688336984040895541162164598116536305576820181120350480642919580341854482849945108862243261857269278291421721176272830540049725809450679734029335892279734379681774899572725191868733867690471776302294801069023309899067924653661596352931733706923676798647744399735492412888212510582685947873942228813315819431946399510166805618649911168173560783545488444166500766474898708069432963212115526458279156488963331665825173052141481833499808692490544929813756258776696059087750026689355597833743326589438569048649545896752503381514853697714518193462424175155483111155574097858612687927926809380784016061229921725322232905647228571388992449919992618441957102054438970577532171994270569916887582664632515761509851806193419510847840156866978419356189443604039117434436689771147753191540115017290464586246790382569126888500647752438790345929075938799594409569905552831804393363560518333880690120473882957121694185647167521952851785146410900457367727706018462183348041039806433203333180603511646567860199361289010418872538939245236486526662395720125160884185884628734567273708390479345183538465144382236765309626088846999932991890749748866191346002709559914557075090808822867480481805300867063915469193114233648730177630392926638339046277136563727271830712329237531034107080544472445999917276016908740620641628436045141369333016025245181327183034326179913830764251108168950961999476175058236773851393035365001049464169894125477570644928789399890828245810592823802608386637598092276248862466281881353499801835303863585217960034885391955924310111163950811857794075630942455386665340746418069552227519607745101322959276981443498205889505296943221967465970909231924130501438386321463926971393877712268356541158199070210282653084722392842966518724721167365200933746227167087168630861641482971713457255343881930471670454307336033645421029535699939005288354762060446556455872563565161984591438321456597117593297791055443387787766695519971447722299998499919883337736283285235304501183738718256703983805980795649324822034355252113878910204974910641489267158119464966616824436571987459467329968530994632488204572477964554421956552381685686674849779920037813183066722258663323299648857534023113733608827352214755443080487448500403691557176491465000796415841924206162654789198892217146683382902694866711895065353968349610402104027988431504446838976394267369262393314515175590866070032737089475733346426730386429645365873565695140811185222834977870428575547191464446469016437717254068146455071867547466171244382615105892675988417834535802218163699454829798698807892038191127561091019737935295821231639126120370701557684243230153655265596729542283627623039751349484065700405055421362063868905665632793414285241871026841808370602080020819958079281062323459795992510911354625112503716527376777451611736402187208936880719206661110074095379206078615138275267385140986739522716257053085380896076911839945574125033701895179415136574963733186320580961705679962146571661958903366063772877937846418202654476752037496173539704390204233630700709989434659021394554711851633786273842767338160313428009319915855710573798563259402195526157887056011934779861617961803772243799452461739561039782978154100868904460105861658292942468046349399755585847185629661680807912606380503253551974836392749164254437021348289543630179144224115958687373676591405567057022205824339734612810149746079199634543034624657910580346755870433998601297587870720036971044634202472559198735780430084220156040469087390996507598671591079511340701595088871512811702447170082724134838185240545945638232572564049791220683205237581580017659901524372521485037473972696440177192905020573237241454981982147040456476957384963092850675106220893734915695641354195659820264555937967607915493336953683547243615514829918276180832183746333934563081184838636390303139949979792470296053089751681084101419165604557783334686583793622354571553515588710023517499924802169751074208097737223541657614896755849748585705084571740337824767981170983301824443056303368656295975692236451926897447722693067956533875877504781987857429829043028113035850556760148721407716293590860650902569585059711082098515952294696335107780670279216334336068489004229524368782624202970325321046311111391406890600701095028080139963519319229544675234152367179813083756147900933345210462989657099319731387499140933918232243108835305356144471067208196637012020975130439294099165765141791510255477517808567976398276499260935922170303614981106625865262485534512776884457652265275586289340980876705846480569001358695446146747176749319910963678385787401859089741095209064396902048665305244266677036220841440261640878511486752264052791457782223186540148259492062565116204539993903705952340256953175228254830096274654760535033976179767804323886749125002833113690339130671611380623647276408546263341613958223710710898282006749486250950706022779065918379297067178694672434633727322953150506531241894669998859560985672154506047407291065333163138669572321423044600484177200802338660799816978947631646889810897474302200204026614669584334207499584326805598230262234516874681099452499788702860204061311031770902353030148665531595132669495951056240147943729610484621690113794251717832345394715878472498553517507936064371635637122915120503938227643861069321568272841815190155714099953770120866842477798391027917897001479121429114249143881950933426603280496545521267146397717254667787186038962114493255812107949748240711286124446802836013198401003927240883051229869583394775109551253849022508802540888556040654642798005060805583944360403387392645013998869775484414216676877013778107714296757698220967990554452258446104095234723954510049147475901812871141609849183265861173773789741517172983319196462812175701919946723509944841424464937702241832970428211662720964881396338279633888358006443345518989611536644262273614042157914884524141409251584710374502659084719847647235092158339841457133513103464709938373144654209895903863095706493837499680679197669874454080042299710050056832347475633841701319895322845156213262025696954028006640702625935444820672475005416807111869942658086804618602584608399451351878617451238250473162792308783606434904780620877729108361974529712488032628225464810594182612163515946209846349701533750251973780201113951943525740718260516940769174284393751524466090313593613355161861738560677389276980998622157448312090190542269752550605627521641925324037809037964312384935574143946222169922453631053250904066094638625752112112652827647668964615473327027322178931280786661326791625614474597051375128326035433591263400575848494687990809462504235312294253984133860925655930077325629318771969321841256774924617781532980584704753723755940050970610861049336879731563235040695015020902465586980764111651186046790695431231470150325059540403736866656151642826334553694865760905422590046781384388038595258086167464085440427667801747163990526647111835683415186041895178178450333888122980260680313540612383302254243967137602540046949458026569532225778537994035865213939316959306099366837979428073219364093013290429682922395608965896031097712547457387463258171480076721997394829297464969762105776274014898667655816472451566434670266931021235347723379287994576813047382757193993377541180452675688384387992844395107702758118412904649473442721588042061223044482156102397056038826108768057898979165653538906576654372702983140545595779533968407224925154962619336840385930231667224335090784168740349247028466754342009946730840872209276899420789358479444628831675778001892261407378530652786243542117462539620910237837910584345451118625513960554125216694893337956877768565256937799008229562711808123648150746858804619523816823910913615025773188506405228920091792134144778375817300080674590310428617271273194665031431342571899456427864815410775255420735635067367801665086679063031421845783449682792376173917184830290811673000446036131119932245777000263932784491011727773533501402986205351291548472490259625437614744178093964284804805976690163222686480969292273528503169060343788200330856017350168444008076462645797017955197577923410274485474795751163347658313800670986197092511257234820814047870617112378670031359643649983906850786066395312506280305155787574356442771678897920294257828392538301462703581948107567524731779261896369421837054939763425092528731785237859707695149060468844085167583380710593180161796408767652505272777033224313852645685735995561706186055854240948198721648142358834938881825979290942559680870978006034289315355666204185185351304122920692750481871654543455497660952369879646397617806988573961059959133914110373618073616504477346728727538320024416528259718411728137629425579030158386923650779383432826398874460311687572628942651969945817783649483568664857081147598381326163183810801732288291732051422225165478264773445615850906802938848894079385402653459325742593616594934065464368792777653034532772378225301826003056595358382714776017948063602802291637936167340448947120533834236485460657091461721161864709223828993758066041904525905276021572219222909720923739469850099525684722054451226049779957250583063363441678787780005384961009696616462553884055641357316989351438804046210791898937390355232649332333728454212073083162187544898288055923104851806104646447037348386628416335868671082338824227364375360263006287705147608287418940951533955828414533213899307947584324175759562013489631774632786737933574335266026111744408415319546521896948326051218333921953024356153689689221687420112588851807525478308239594379811220799769857231954463249485943343274076174520971660103811879227496450377749632320495208732463343985328773043923988319735046217483224351971401153348418983618677997663970197516332089217069675140670823409241728822397263440927939556790890247680996913117318735963005551825943031517534760999038252906246488237154980026885448330509129872099326983866525160192712348309828335742191189852694739808916163473255681995779053962380677033054630665303462384073499896643577166593791791054445952669320095200861478991027685468759463994904230524378003016014432491347403274587402293129573485129209775844785597449242078988535101379157675116503864903273095583968203399487180728995506894860191772216719386643325139183130764162572540400317032060889175897285890174128338370283242520587077909460201558104222102846607590020296686110734832892937567449345077086505488896103998507764369214482526276336616160392129773819390245087069093863230536168032874326948868119623694618768331205222866998637157081632269652038397333209374499111319277871779734253285749116619220789337298434489775765820679553408526849360677851540880256956882792262167558595615692347270976165886187846288161857903699188276961014420478138012507437079987724328281116223680736736102613699261760425755921462312662913028165519239882816967609614998102170375264691275098806977952799518486710385685024389303173851382239376415115107305001559529325136344772327265717495916394891019760031040959855977669942215854407934649361579833878719501562355825629343302229579454490875030988036514284098022189085562461450918052135460385598978835891908495982160728667969835796933399863597817375219666594655077455792233921220648930768029253189617988723966879373811825053642877568590671229345429363799575167661894094060837454506355732892476505199369008367542177235376610382924277127877304793451627995723000199233516506473055134920406623124540024317414294922568535371692291806850660415680781906655035184136617041181881489795396010328122611888009369004315022859325660927275412960286877372493221355334850196743489615644901092818349142163002978009682328666194822724962066089255730162684728650199164550310950177408390738079605329098737358449982791084387065419699039547797371208927196401356314656259185429604699961133845918320215773105766026994229726412720393339529569389355877695224291203758358648323449872794259894941914072452835540828047235659103193330774862888617060355748104886070123972179236680568433903304235209034474494816181947568090921456409595154494618431984688563533364141792988177420567647630930759696330734371546146165043252171933911191344998956500448850921521612944551829074309912873391183548884824305599134329898873011001719154869038081965621418705555118591962764958509431158963247925378647965410916828890449308855222701423062991356632946565936237387547538464771494747152943151600906836708647455337568349935188975448573334684544382757091136275583382934243115600420832150986659997010897756779936952462187919605087336846828319852068443693648824165334041661827490137735953942028402140656728098972301108064398330026404615611137877829474119377690098314387686724903889862326624213361847823735043675717549703279958014708643465469154672879742753231002918693675212749085935370374969623855951293450309538777248713359849030592381125315354198921561576751707101876180291439343814520278981128867293119293820712469185272170296514904855165018523786065872561650894546296968367515202466591648892115313638642242379066915544739006040738945455665172659429837207418436789325054389762331696355896401089927094672871522132881710571438449434039856538909658728409117158101915150538128532927817764353681361160528867112685656590637954253989523578267231666740121218253816045182055306989391611077290023954006316137692485541284397455748099454889276701730628286525765939207319221195525785210472055318374201966149395212866853049940773252240819219074959247244867279654087773354521684025782727550086887939231395777404203428412570391681207730948061747339522498189484328744350041113056718756886975757546693417840092753068882912998689229848680060527261782553437681506580462310569659873974423003843013805911546082885793405434751036595916079019327608455445093531290293413982931881619205513353877818590719029400368403006305848116918802287211623626943960084417298955840141874153756124823409830950703425819974459907090725459433053197937107996527579024311809379623619022433521964195643790954943137285659718295707786668465303163414025056975517452764377442877361418572098226076059306933017093836208665551018107997817616907091738047449362871395825724602059869870469861651131544888354375326493978148123528339427783125208267520992036245570245746700843695993608650121204532980967028151563091044039177497056025873672069476485315312323574161371524919726141796932945489259079727887147705141856165384620073695321734919172472301735393241054195147829675512411212479488457096696343036234560146513088106028531999686273197848976463178037626400396797238069296790046878677404217609028401143763939411538784564585669989125091467765471531017028452087632534638308048666312221826711155484339366947139821049583773441869926702310975913357630492153473027021264386530736807424994037170987731809041563896435716083341484659936942627193295461435729258527116158113866651318826992791732610501585492950571136317407638339388231158786819013312700502342822355730863541467388728781904335483070604363279355897505966043118711413739958098759458036788489608508126348633716819027385624508497161434623525954909081913644097310610300534483100374988548340496839005748697481900918776098887690952319907119812852137625059764162096292733285193353289198041210288417171560151365398365439923159961362303073107485358460898880442087884004868333926624608993908284007581663902170025871334748622910559881622049877228168868576541459657561729185024540760691959594265930728553743619253527021698891485587802230861679674345550411162764770293573701126011097837053817584860034616144179544007384298921399830018063316075487126363305781031287824679045565954691522575547583487634202257315794438009818637442942439518690687933265990295228605944483415682861886534857856728449647215271222112860005896355051087686107398306293354520406637322433793517891473979903448208778521201254305492029666149628568224574343181847916783448179045548008806051804376633186644567683122632158629686041253536565416674789920924676488670253562350864950304425530498585348698800441922576488404641984476920723826290868233335246002032943664521245726773462194860420714223054905788621300165707300580033337583883261827902879803008738188715319192161883888664848857983649071251975397625820318521242865140089585435870849273306423207306440112712777445886479216528470376000109377920809521310993166626996926385562423450269520881962673339332210978169831672655830115938113711077495678584231714423848101503716032392601072985431084682767633969049379865281682784947739979336233553405448867978944325703551907545159537245344297617952576364494239352240856483843811178785674556715181699920396047601223171778527885369870361614486794247514905159009629442122090266317504819637283019986623024522547955386967154385580551719855805399362491593346594264529795136441189837844030652146754460206731016166249299244420335731315422277837968886849864508763930457479225808475026730732992290804248625378906826164930386121557717273058418232417714072502198196266042070942126248195898100320794090938690847680972753612810354872974281439845677707358959854405882319176254416276326646460212193443034481150510561038520330740621136753795331930946478287506169829866471421266634264121953201914582264173421274704341981528947270067079113043141930405946038963142409072319252942392188722436377375091923063765543906109188943400249098505088719857116929215818053048215050117374721913563454664738348309296202871150945908553434970418414372268394336832243108346466488183809642394887506636676251207624744570667724721781121893262019627644592908926888299162063282706265483809095414704452645096854379748612014716626047907336340899089038287008598697884030040311935723461675402289274180449396819953255232046632905413633219779222622806628940060182636406310749216405793452161621664109284262687705144260470694093875819036282324504327265484790125192517136656672985407917126853113217509492049008648013061406320867580627185655137721619554883711198838982864432243089201687811113583556728816495483306838720605720963678589335256234358909863704366812701178639669182200634760316950490733005206700495147809114327645145874512573740032814349036176949356060814018211969276681973779408646787799906740474858632406015916643385801492611310720449206975336979100212645327665472034812305059799485277966027740811153759383681216053467974533719518947029199768989985496919546653841762463235184332075516787178863241191742436759701645254005275320602261904586485487226540477043258959946305465306747073027865128333267706486953712510788167182595096954343533491269359194744743736770943263914474077638228155837363172184124768429738069481293271937890743735437004901723865426853627571550608158933835720604779696877724881311054726327250658386841409869260908897996118851096421804487941429673447662073968623412661560185209076391746071626790234572608986407713410935848231924869531916337081882510033150865037799957109409009847379812917417934652420074785943739139713979383317627979308548474772621497437536549952166982217436990638444114654025535991639055038483373590516387633273258628411449928075957499333848714122788648451916870007340255488629985147492712609648478650043470353202004244366158856788604797890439888700964491267040717310780804182905395435480742305319868372802530778111077231351320960916290042517701286664708485596506636820680954524347395226409706709922984485914358204030918689831641137517862227314392095508184657520431745684220902359859609954844913001571668225658965252131880077035198687059403237712521685748507734286730217089286434712856206719511343068543880203935662336650198159950247260996363784783037808421373923159870442700820168835358056011839479835125747933594875933818695279853976566982345815445793684183570462218536355228681294183172264998725206686104955137670645147544643462386221405062526622423546359435626433648120571984805707560717823852771577825702790283638715718016637103031038235188651962538338136819203826468002242751969214646510394126318938533796485111635036409520878946921076126596906263890550676471675366691026428773843502396544184122156089973644208672412231868334789904659196030100924578663771265002269002428469486085312290332933784775954277575241294638599431921468603717740040625609381226885717824405457943685005063897043681431587345131456184943527296085738374913453791732999422194489680123474620904611164317905799038829415920270404242865069418724556259663445761802819332649331589083311134093446975291864617657588916247269152951950242135571289609346107737184579626458569303917942920033303686711537945325729580409532778104520573831715278208644302578760217418231469230538549162727914063681287935428160481201201278870938741312499412786577460526685982171182134419318139907912636035660409533782901556545079924782017217813580060883446867913442627221984834466186729095397198875518788817954966005565452246046138301113890637848287128069940332167399464536927334290812073110774045185530922182596459351745589940650723179017698586178467049212382669668625090139945562560815061886849432987090556190358009041021789647618219488836290980979334061179751266598904419335503393606546400342401120407485859223248052621391294324594034594046883659695644964743579025224305739846333450543412424966342881886444341754811033500129207428185571883509074577069969681298353878215818215809656618985910994485165954266129086846583568338739286586882695942052094396738269612161514489814491975761127298389612738742259182666113161307377617123433275711383425172940348840990099570072734081018030436382451709795226483559432792647239240300966176343057568529410716408074776594905263252664945248046865574291423597285147387227631252841601889489580618723012065362209028555983627330216822703022195517016758521771004452340301284595865292670114619069253846889376571310498258005622172033238590756216600307106815645677687169312984935707406390986385828953788679946145462863546385997353416850201446510375449480232063357375338391581652598315691893996723863218772844597701664738055176097100496316705334407293538939835441443775398471511327536277954536037335215142174465895573820080482763388755329502651988479622701465752513225357272709437111399622122935414967050374211334857218113484620168348483399729926017843452355740962974966079231757262201003204528028102861330807936066167674061351377060919821862129268760651644125550540379675448331207845226131704167576561156355445375915465027842637760100346015662922816070029986439137705374178908434817948708527062571258510724994970586672678377641993467617614748775640580819780979820812765092540905109204395886864918319761590243446986568988162957540179873393475788843735540631936641265701623850469255311222793700125280208432892697186318120963503262240219345757260943834495363585185181829519086483367393911787719478739995796618068621024333539590003996849341076845083843110116224131976597879618095189719213162128828134633090186969581298350982176478483937951754026638233207569616375644155206930109645081543214620333335778982714218218690337081096990467995033526042799488165413473526901348431879964711660298329917125441564421034196581911244877635466534232295713317922194440616448317778048628686318002420249209258546748431626476647049079067017286756631875611234774217804484798362571580495516002898703259868350697185708108091820981855149619268920766360039486898943302250668018473878067621456171853033195977168752827183584283319998024878115977704204617411225377775793468685590199909165594513563213195781707893684052170701510365233612276917817860731422777864118544612650742963591812219160092692646815524866342410514571366531783475691057066681811368456225469343518228801054049051188977553322911576836499508428465586669416241372737133328878222310011197338010870392322303493099571123960331941066340844094110146351904452355617251938856658032339073058940177598662513891779920342820961339085326066562157421992278193730396207333722995666696765307530953331257888855719748047563695173529393309552299290829949749229151881153677584151151544560797487698280531099019054707486070102128719300303847842198079808753186960440640272630055063893717773713826410823943121643949260738871040144629221872618475586347478939141100497835278504088197545802054549270104120121000902388414807308719939690256242744172479159105529419087748188635039377288428180691458129008842214091178067508263066278737817953459720986325195267718797008220255760401968624238179134683660626328699080272667550202908012876229118357585814039968954635767815455661825120945450254169371450318804790401518289807667166064119277042532034677492307438162046576486630820097463324232690020354527053289049668699877863942854523080095348474956601916434355253086414049939610807608978195208283027423603305500295434898712659585860741220032816746161750346517697838294956086590104797712136573877321287323035385080289351350026318525581029358334916069738082597563926075760766765080437499756317308957960897539586516959598128310026545551331100695983208351004736716965272943871224655464547301595182282967739998181898796918250103709185411971609194090288940819180451477638309562852906539677814110283718243720980605665230254861623090524779122836841390039256194276941781541071644536134681461415296179224856080331448339571614218548123498045241305261883584886816949222564899472277930192715582381354511313323802755241914112135068915433626818179538891795431787112091326259212908414888975659963581281858973864894681904807345511397912846044165619116510588348095961931795965334930058566997746691351173797234774113013930931276877642568297865807029460733169833212522327661147779973507370479884152551773029615979247040196510645998339994051325012619727272886002073391495648260576050772673419143499683276111046876515259407075230992320096749981457028918618933199862063084388537290259762296973453203997549206911600554537603458111287883929524866887064795357593600862860413406132599040573150519623819776127827612712643688378608004249673667739839517919935421217946681515698638089119249726039470480375625584901684754436393008022675118653660150742356407793472054861031373082691158300504867811568472788802405107517727746707732862782642621000658637539948885575985410915906601236485970664562303543163868896292250790861768948123073645051556159620726381813996401665647523875827808024894365493243509956129305876823968235406426161753290442955137201756211494155495865131124001697576624628836589516402745707918675754781861962543498645641023060896597406438914932005508247177497698014673257748044436226934849622032013650109575102172107437032396619613144189462518838893106284452155150051172403651942047438298903811808224183901839022387515116432691132738737603296717950993526915359054663158489754415085888620373081507774770858743564109365554525790394326201120739826831136112640141498815020855442205561079453851358104999091354933826860403258475496990310073567954142965285761260056307924283636917923980277726766401593669112267855859743664493847810409445260377126671721572722793996768580866056942953532078938639751628899111494428846954734917630480612095696236632279167096562076369651103925585253073523222744901935610838140511982231512804215461059114378707817471639828253828548812381148247946606640284665172329827249494239442711128406297323935128666182932483954032024626752656994465306243030681674229162763848607922218432465945180221913034962651889604890925898887542986560859038713110458695643503641884957829312706687031678336590021377610936557745414908898020858344809612622881721662252410967076756801420395219983682744949459287035523483274359117864045486293768312439901851177665960872828152460635734783644291304988774016521657063878991707403746930098786926208400070011567066388894276642895540964537026467435914619174366462653835350741257682228385332857720727311886998821193133785489963079239025287138081771764582984972973050354777728083005960910328872015173940811653028195095195525839878995607684614271376980552212849327032303821464557588864961064671688611363072934471937022303905157135140157114818703410425026156342460900022593391737470908564485328383125850104859969745805152702954646306197803569006034618180464815658453966593417746848213358346652806483092280508231360701308340305579868640641893815146580741260817037013176479715430594893947191123876249479380671524709343515150557351157448755902728308208465176184784788592664522653913817328418087423008639974355269317848395664965537396831530115871118473509180381516594521111216259489893509176170116942969762536337199830924291834179027446567659905010625123692938345839572353278345917801393926574547823605571592757698271425392199485632700937585114688698054030059469132156372865037481819524484077302772657782863357342548344614118010151412300702521919841621328564989930391499281262535363918399834839137149699455028544645251694433546026839710965141758114431878533397084724340995163344980126641136968059555517351489215114941259310055897241047843967221503396674113192891132568096783787498233329365682060171617149862961508431142905399246791937388767606755213948009615478692916519373948491025569861581782223701189599243959266281647603229298291022507348525611104098623988956277021686884912961407222249036510985613794342837732571788279254040536660723183009512895597673330897249956041989704663842979018651455591497159208511187444470965121605337348821958834270085891435971089320257468737847730995350997925153025382269663548103026739172519210966196305216433793339495354518865964480158532332665158953249489474473272578583085977530952777173722421787447770590419731998065257357967204425701788737898224866354661993756830574923947235812511586661309828713213043623667253389431301972456630948629547886814901123406704698467220527810028962770323213160607554927487698425537081021687618962782937551081205690206292643391701238938982196777544074752391177876030011736896695213085345212011849552038551503712107639488357535881250949311227025622471246235389566153597003506680248026247696434856515406370694081629148280028820212121571904275192484979515011929481263759259625947799618111740264709010619377110332764500021611948583176998471699761870931764010625589942312380836129322842637552744820729129752608707159084241841361532480402677797477038813149626051312117587580762600763860419528137367870281515570164937183353875087435690220832732297443089802548717736154277124114130762420097941823191801361611528017780478867602493967130867505364748145867948785918409030955445120337515619222602715707795692864918685040213406612067076441208665240331502825481285831492003487001817253919571474532003683102291600801772706360809443281764815912323808122159502615807348112482203525222802895565980553761823508612871926825893579747146870700644319823907414585877668515123749740842811776609982909450954511753260237957187791486860083586251251623561359286683853384747843256962609474901164254175048270011469496236731278651722112648312547791240656847267688546322564997345233693204855795644129831941987635904232051998148756401080190234244880316049239729107032534843625593660853871471224500926420516605010548363191734197485543404689082822400707769796778006643063684439931827568795860270947169134786920449953494533944985694463926546181420341328859423802553488652470329293506441039015203219884606436217416128411249069936523741879470776255568624669263662604299295309083726741502323340309683511605749314468788350292024285730638342554480566682094331303526380406680981259712348686934501041779767738437987294937056780355901757357157883776394746354694705417513202205984388253231537592979397333994013854375291160463458533342438721532588150903804087327700583191429870696046853542946095057802074703300099676363930567170273886234629894674197062280937254494369469206271047712109848686584882552353426960458070867624620852212430611532106837968338266781356927030342250064612062199100424561557690998407658302514205369158050347277855742210537230782570606106864223419904082224744604091815803243597977472184806167831264501044959055395916994400756824786808930440165425631325324852796172822961412489269014743076781247292403197153989120357513924061987408571721218956695655434512289824519939412742922890350624269834993594058300686637084774037183151499912916621895855704992995193487873951413324867251768191778409072372282046419415214010256226977735922584014545930554055275055184617320311845962551767690684311518030356883666186016077001924144027523838652191624695936606739658751004382911941076505890046852669241040064332599773737301592732698880372450235790327307948677590859572233050249806250887124867412140345484555874229897888198089898684887062591468931272876488314999977353596793819625433466039264160529748134200745814242259165637843852068623558775413390050116710436971138889394986944301014843644469894362688285887874655947525458954712019347869379309767371112591627871255075992603341329350764150130149660864066883776600232033398258699735323017595274296278251596394827228406905661423695959014053972185184151333419313928071606020475043273413233724365274248901403943324902566948352720208655240400834604951552331570240877517798386099424198612943117487524596393383841794400960404390885945273071544750435534851561134557595519444573963055373901990043766277026544743664483357531407360296882029917737382333792625929172794731272282271872825939248514586434671239953648932620760938523563444787261074704911597977232058923196353105174080089399383464503970423192601290524897523330486214828503371529163235861891190577329701815409465132721816645009660880564221378891420442286959374409281963219559616926362330457054136785146290378381687529385972104075173790213522499119338823525708191167784251054610134570637890832568807071709915826520670150366989779293110736482671922677469737199786741994265960981227543726512823111249408757920472724272427299353881682020286041087934217534137825253646123983737997413419317343217529990105736587662433046049918700556778850035398406018665879169448937995754053231066206368530273821905347813420129388055411043130743771659446340265272624133585681328543134837176512668792270643542044406978163520598185662514638053833874760479440369964982697077138867204907899075784409063329430365772679996148448051878086440040637538113911183936750940433558173906991858567597051401643189063983941522351725405631164224337810174266817763674368822654322223956071358559860392164262455806628372656078604165028978145904015469024691758281291460841249599108824360489153039470719329654304008536632422069386917359095154119166285419487883252511421639174175884862168799137435581542902017185890489230989134386406026961013492311276782365251252861867239823507706649993731035913466470083383819621842240907907355108915709816193199872025500153262930262961575930320939867090242863192668601765067680999089560694357322996502861952825853100721943687489013445709236974357790100771393960738009047663997187143815052486911855320617292997971317196806268172889364006197549077378541910515141490816687241667647095374240614766245184747927358201245381255037293053064783383445327418290879861657181669114680395409916412686676478848250854278744067983535594139101830546332838536820064395639614308853915346442434063362066630073513063664298749798882039633380067847633776033297795673957723375465205974888780361864995681734860782670971503771720671160127943409756426197041345738432596414550106528542641297465748952106173916429250169141902254481013266826242081485201537826981304349328993755042025101096901045989435998694354889555726107597704006176079888141599683482223128718989011928338498657171556211431994751356228612620063824710105008490039232500558807692745613646622294968379408474574976162297903542890615068100440819769591825645841238786190868730994417088510977888361577462972655999971493881698914372193055485461688649875212811809537246245692638778672199859639643752834426555892457866256264962437096014136870874976525639786031595022390653583613573875824796121035808165601642470582953011768972897225839246715182678394436902910067288777070396730516787673689432489934299977044171715280830086999616680923400259858541628311763196315272685530062919743541214696772172431274980744700082273826070305828500438119912451739645159030508853462526595742223120751438074010286375989418485343542578911140128873310354930068353373397989503212467077109882423032605909095532007364953453250436796679618924340309157285811423646629133177699381604687174776281964228757780606071363204724242757600672902623873966273054937842359340866931987067005827218025430840486444241374862490975666949030058683419698452451918572615224769375086403747809462046609378934283071237473839242778502049170464384236183026226474100664408252507137769379932085679044269972695025610244870109878752301465196408259819165077218486182382579461907945442047997900073608055889718940405052014492206201626529523883352248059211722523116204011611568176815743499890735486956260108982460980766269817390550450991524699384364674963998176056954481720584006524723972312123918088433681206250967850645934323221360894061417301213286908364632954220791282088765701553058816958771289132855954823541739278842844148318787252173761133399760988537892195589767118934118471969601858607711005794822883499493453672527310500441605573055912588650128903549494297990275912252301619453283857737737665321329402265601950144596021101025244515247957031682994559026603107190322415313785533629384968709166345196072259337039261075220052663624602976160707069176097015571798069820223455768314918184995245005291680110794356613779660633418724855264250004798516798347111460422878943970138506278311680702310320070808497654700354292023236570070668373400844791958342379481854784892351853437311108121103748956487868748829130380763065341400023934089251297349035808123940505722440419532125367330933620418618126024099290810043899315602050999436729661735241750941496631485738696022013835546980937286105897520970201163191410547442514346730656066746659209319058854674022937066270888843117141431304154351074077303135836116481187120720475578196217356620865331734690393646762763012616718784524787892567568271015147360798904386678101343911881463083473460892857606046875803260505572776610985215781641584311011272036985180966152342105873643150509201302004343425110722501889784478645954237883676736931765444321072218070231739993247097375400288503126403473733883064953923129172463665794188472819131823623526582219734919106981131045239314051358149807769305392980855593043258996792040529212121851574404330369759253134747518578745127907479384616956376291771707436140891057611084427949457569132976614656073102812353681880256514078268427583920851380578604743583854181834488120712939253508629645403772087996790927368374235432239293889365149296608851396936971289716565665244448058714269572727239017145263371076853933123056993801938327471422940177363154502667325876000857105375825643114386539179965459941711367500397528790339958814854093894149401062528147063283924345928676421155684997315563080633141953326905239262254007936054768933229933643705310123590255169841825157057471208861401092259966256421817242976767721155568170476416032730633595198279049890107382504080384145756706578875321364752753791178619702048899838178343371613515693188575669087523505473083466244158464212541962372295675788968660677492318508474994847434772260115759372178237346754706637180374658052500829082484141132658847992545056322036493438422915293347693046835223910683716810944218013663833117081105047756040300602943223490147497905958546719331003215534193017520468696036316240904554086812187128282615687363647177384292911689774360008700228607036066899861491902364001449240280471026359603995717130430839244461568693569320527452592513876252330668263434156573580565546621440866187730465306599518055990049415730504230784653159723764913986897588926948961830949010012848242568844725240550354268947059674512215691069615254781070590718254741460336908143359527582323638719579678720066351771241342280040131563505634575503444826194279602273439184218554753826775962374734825272588644531332129187748573232762384427177541049470047916445605081565246771131845676869287783604480345453802586744389301484140202621138421662501746672420503474270609980091819352558674225600954795761610117504421886310617602987520156615284356194349227754226510179812757175436698990198797091652436257870395681217921956052728648105817048870286443991435041730627231959360963251361294285913777584619268457258393567140525833522264747736576445540746594421825514138428748936724604857378882612484726608899143189262285142369423463093690724663358586791101284947378274277424069917298864318580648227345617299220474344821873742423647576679927623099241634528900532173200329077435256606752860642841470370360826109522303973859510542749783310156703665610170035531229574755445974076717167216542613162146333655766342450986956408928984543972045028698043475141376076791963048101727737416293228734800258348610493256898798348162143591620089078489391655307895781395357755563527475413010594374468088094404056501657414065686034009227060051552937561492042525992321387664061789067521335092490358527615307462486737762648246229359263815687698428562463742202938464805914961882482509677028619829439922956879177458910874612145362818271695579837929779341798827675289565327637757430271068947782480054669797892248335084808426729406922527860617095652973036608000789573877400506111674478476946906488927621622322461727818142014568643234051696707998210836922571114469293026161954450298626178968010072057165985478098595787979425166115458477193513429908774534654509468614569045066320896154744914744017498842760893177664068149121552671173529107258234764211457285637468686408302577023767491064433774966154662132901384616165387098543703628540622414671938545459305453490804839169889089063079154394456400029995799011780480679693869102475812736151085728116549067642749480007821691056344563007028237388331951266533285854763820807767148415724183841144036432360543545292536147194399355530862278815388197179324303744574001870539028141145704524799689547233515920425383756690869722355589178622547796856157067037048357384906129985990632134121586290200350026552183439824667333507162590610964666825169456234527164213774500222061561447765038734952114727221838641424794112538052715692275257773323584373492183258838756784872924760891458516925147077200781803456763594636809274068674637104240811288324486646393758085422912986135150428435360009602076056984021794033121664201246130301045783379842512033710021177390178985529488497742974901992726043924579122083937012302076175588470191676409391648402574118364183270398132842090492950174855857021552291417059327391463751216463620460651682724430594404219445830948533351738153873112307266612382250007772265787851227518797533705554293805373395919083703974308724760315974581859709602771834630079704489375870771040980186530380354664149676446075799052976129498015278598350623734984101059853422306958904899250694176216656322385291695419727330304618284458616043639709562078321866975925043125833505704159303008369765119861687243900928509720901609638354413359973020679126085638913440184590887158831199657229339899444527503925132770572809298549846990669984743933815012255384764297288416096248829012722115219045482775130651435745460244058153974660641740942599678775457409272289221504495839731855690249623294356610758267998722890964840531891475200383510817169475290438153834748364153090942919821786274474248196221504326249744242224791430478180529975322626603443530598942783886328809141130110189621248767517021796360603964869361891037560727462909876859454246439304519763047345531402469225805049567177282386619503997669713344448235403831752475562145876425675035008469011087397594929101797583599864175967821411650514634832938734095880397326601166698187994382030841771834846865030833417793618343553575437602230413422199380797290325616780143885974200181867416148637249901475771862936189398088128470431232844075879740263435326802347591470662013874674551125647451324037656389584968713462647859040232146430676748047052991998479223450906884098697577189586803284202207258578888346890944938686648502460456457910456506412800382179456913180436877856951147044945234918410718589221790364704280323726497621219380500298853376834546191144569919530414437068391548097219023856369555900320953125324861137006100215998946883441186657020210528930681310553070852166018178783939356377967438593095782481005278755458779660913798901169993435080807212004750197005893329307765597599210646414262002696201704042689903752368324503433753026458680191155911146751685288140383072487890950163129556252081955318866353970096002075270392180365550042659410692536132597911057310403164516621584064680162184850663983040179854186934250239098842028766578660458084157135269340091951121683502370217991806836923461647942499287525179676175882484726634674591174348909314071472253748406276788073559325074720373207040214822169802365408871706935538112999302273545019205728727846302045313301088477970615427232762051131326252997134893639599715470112786846520979730942112143388265915873271487836299314474322982980630458695444069711299485717502866832168537565725742937170297715532008287759143459885060734422689426874073404914176751004158137400153716355231702332339459886687794171898253584870998413827554937345220846748099113814562490919494551413909332784883802736755250599264332620007907590470250132515845551658897684356330931981421141540654180424926232884488613653106529889350969518032105476665352764291858290065830514048110857601324059346495795727313678053289689027297849770758534646860378235509610656345436425049097462214273031210875697857233956756193525570351555931889112918529608560158968554150300214239072894631104333693247451209704450838741164987313121559450807639791047788152117788703936501019435893852669557838356116601234877756129169523050108211948284849621741879221748020883821586135006807158691416062421828417751697658789074584387743412592266714893258654618405037162007363382631870562144957058980599536704362462498276471141858152478629966514157401550046714194837509962258319135287118489768396643644258228081609002788023708583071140943500815131889011590678523629183316124207237052521679590596478381210779847399191431364248983544410730437763513700312147965875217610146764381920823267461343054738598434903047922841956640198082599571934704006292031706631517431258043914137714205986355303223138129704774646093754347828044598998372248817606072837597521095563232630291123770683543468888681878565970470259904406405121869587629522629711903917187927572100667724328798040801495858958685929047098633635789121155276903198267466846448124692761927859039227731441611892992598447384292034714929570585684114713846686421269285665129906974044324431582944350295040144674713520569660021369545521466192325435720316493065010603775088336344447456120776365667013642368438628231435428567518875609923404320037897038753613706731749219047725748891812240039192013291437641568863666306241551717889050238008400379040414624033564240940167764261033220954464432711104040370052532936321328667212481254849978383484050031340249284139856417756691891817736645517406202320318042522269614925170377803502583458256160532316006523186270624533270790559407651365060709800837209768834638451090159590571402871209212659823704424751043936126630268580384057762931230626964244570913096505456099786730725204955929751597597082249528141997404228268222113309801534987887837301964112472675748525944187071189700650755623889281048323569078515395706525658868195269256601011391388308570899970076576218055906853116123889769986306286229957901379387821025725789474599099241218384537696652689006826305192875339931243296427006532743937999267242919491395764869731410655202983414877059883316841114746589555494271271488353912101441405386776185088420939646143526255903000223565096975826208363823178515321436006802837920750840724004287526948920110259343542364434480057891148461108545119676199554829679698490972307712724606681888682431460532628023358021453040225823849162667988825739671508501110370726357964239646717545366513955658337423641115373274672725854324135991890973159814340892195339808001877937716805571534578618247742860733852898830677172768227716027873730464700894170659445850097599518253355669555201808760678250593593349781797702175351504590171804772449766667656776838610439632458676789739777481147670079711347874308326835004310012027389818230361480149518723236649007881925925843339750522352876030655589523424664840755051204472304763664797448954897316952593571123151857293917985441419635043721823001681301232119310541244076053115270388530240170398606002846750001638760386760344830856740911359691757954027704543067526080692555079851845162433925810774422197064821911861541116858075797724814006218260542894341010474261514643832676896767715085207437966751176397444387232056597754651962099861638664677396557166372908132645284076321191954657801302128788590500735566414147082800615032086167308188546054811698586079975664682534838986552809515544696683484514235328642774965657749327142299262067108741951600242142907385621611806323682933463793574902191767283722270308184082537648064442494444302370100433637552427545631956629234699966619325068221337192149821825226406952495138722752493305282125730844848800431154463624156404672861826887830436117108059642567325554838580146146048886716532325255067270896659469168918010244928333278964948705237656386630254468547876504243108037315767056110528667022335142301020365574685608992295007094173439120880238956949522742914547563298480816155080119176604563434400019557302535285955335748002489317577539487047569131623450657735570266239276316361588563811443716582425537247820911429715673289552441590836657399658365623448330375178652578356548543854465770495420479867092618382147736544345016429608206469795085460701718063927496988325672987043588241919956429349551349018416758535784436944686485910483875952444569588916559365560089838012021478839587566314773076559196468856256210613076031611992662207313708194409522402350299913524370357709969349478078807014729627767315565339126065107265328636005162411979651704060272388597738674265472433059389382356943776040809780483832961908610334486245479632259226912011769970989640652073209857736460315760334056666336151658535239056050243660144889391820531630631002691464401423947990470088608509353174548849240229215615814978542012905207872354338753403901011977694413233508698427716667454332536003242023256289091929050839995307976283210256990781287120845545055983118648689089363669898396090669964531091481248018035610003471049357195474911472545043376609979422667284134468323557106577224587976866820764138028762125145880364899874340354868444658728185825849318198626262030660922575658121972885165144164861981876921120321973221009123219675610995572321515014682151008765348306421779329968096462115856742744257913633805075233599262795658688911692915868987020960479331169834605754725427632291149633570065837946505781170936353185251985226234084372306149600855498910431389950751723501469942243132154725343799095803937952428146963443179891076031080928496093890883325981773598396485379709642070470427476790243495749286699303578318498299684797067620995788760365080581675930205908426379550222337088115075854567309273606786176822226938746192409942695595796443630010899061503285523096046626328232755821884985790983952856611522890528310861429538875505394843519708640828508562316779521929574305109042087371830154414809458231810483451913495074178182183334867305504273144835627490025966787449475018093387078567568805134348860485112990579097658544570724187680624554611185846716708664354134814344242657234270854918399263163124607672817824561508264541064170992044029432677446581287470305322054802357136404110990767396696459355406318892156893872745644613704685515840505641047762760525267064204966020644278774659341295143149067582770136019209325949225739476173433727755517074052064385817490952071137569245640257522995593681485390160434972403700681957369348713857068770129371589761429435416190730884479261795121573832774492558229639540362420661979023878416704542721046845183093969704872153028564972959710807559934120996842194513596437941393880912666395553086298819189009309352095875868727967617803100824035040982608575355204110845933262046970558134718138823278187399069470552439270660330636770586603071298909333466793418605184354502724133701540823307405487216780395886966528992673938238314219422440035986254213376881851262970258979223293741618474746395393195151711437466800083991923377677517898404657217941723765674296808302642046776190400176293887003253203674218323306411554790889696480432385371118162635484976747817770830594926436402391244796482399729099845872652221121879818211880260006483050977256861023711381815798881932056970868927654883304726395124134382024190679413500279709141197300392026749339444245078180737470094386662235588400049114660062064181541669209544333092667835939317874086108882345447292106268081602005675542734806387637415509555415970195282290097835856999426104738381159553980588800103945088222490832076598975743897124668754943708470962706387969378641867008090292116676420492242355437196779258158638488136681745388159268492939770662115585731501949150169520319644291444836759528649977061198994154180615960586963176592281269385847429803269491652296824667902192763875764516609026506211760492861443392756577891454799673419629094217354900451263279945053215895863453498506506573717161336942583410953502924273144068865467322777208517132867068434885549319386895832695560339742740696938402311188473141313225849921807247745028065725080150980373938608448659455957964192775618963171526566119938100272050241765167250672395664281316285478651150799607870156365335639709997388088804511653853776217439030826685890756588466030062881847051225396261997220912920392898081833486008535934407878273389528762289477153712176833955237769332510312984401350290427538186920945130896103571197934970560854511836330565144542486541641168929918838577949567740308849736380912829147499098798111601845856899304370329474063094419249490208965049386402983763178171258672858735811797008267139580084529939919707415478973442640496448865677097462751841883781434467944877197539398672858414436641890791421337162528340425962494520013792702581420028679288245095782265707796937921458078977041375759953553713478066667777966837853627521945959179624118887475075854527061383656180154057021333625146283634810988952588489088739226817852981656772724331548713812483037936919544615275895983812921683268297364622161921448239433613119374425184640369713053886222660267235064056657682440424265734444796054436138965087987747596240553298147341322478635902579494271361937223171506378938353323638781150892880835265932308765080211337442127341123970096964057445059905765462916296669735408532795801081365408849406002119756662972743371247829539994366157999897614417312281497455884310323417285803909905449495514603808829313769530626793637479198202080053381985255685917553892343359261985059661567587369295483275194006676570730285554330293077172399459556002870926619947354843024287642237905494989511466414869624775377906985240660552968957919311808583578881732668677263278803069969584575716038020493978451844507210462902242133394123413382829935467247483989012926339882586503474259066755975770271324550062464932485229469968620238196466286182285743203850054711705085552834445006986043215126138122337789406204666642057621070279978409842046479871416724155802487197480420136679996660601353467651598070892145758686219442213088903099387995632347099554528973315870110653376334488659699909492506332686855724101650466406102424289634611842166312529139547484482877034050411657241213955290621584597710772887391614872417598499418350324990429970153091570228453298965101815269679977616689594258127325781628096031283111693736486804762085871379115043862585057430020401418091518741942646022153566956176892725601857075145564601229450833351686972551538921242918580340247726965083886328425179850487272340008674336020002330976681448825061784651203700906685767008238699780649088342195539370004985337240347745874034257015062148765876176519926902469971970741264840446134646359567620208169445471768062850649522999256314999448507844742924253226690803854642440720957116224814749068249295861392594142860510273624636535982919572243401090639389097060919575427077148312285471007819839376459529889061811875694202574720366261751989232526830255759928224236827163482037269147820651591259040691920398947278203231936059973208767973029435393171300750008088803355889604128967401882023968851808769399747566486519550206063838904628258890651939644005953683981708902707555357457426689457916948224528546963624770651942650776796334136279708034490250572189087008368529598426764964834715765355317659446006883380765350665995339427516920489174083956264660520692800563470905323810277667337688208058811422608486043778188020377484654719540190147115886660605225250483914822866532449761295463485972749694369188187425261643601500361642648417766042580364879355911517224244873178189773330151076969970880824225471198026260953933020142251058803300442544783481060064188020691209701316932509524586631024420744096212180838841130043099016871101415194776726146867923530203704952386299973739628197321356559764069504292781676873062984208244816527215009589820381959351878699268114070633387110297970864327329004067512201865548685469836741444763911918915585032010168084963070391840932189545128467878089010131071291544538251779288535063018049314917937425487074417440253294476218979816713308752057944672137858087094126715186749467148511627628521225151675973238393226891016969096675978529157904139884592522082284714133433592890224026861405458462450502007230058314205595399599164192031406161400436170659822242595275254756822603946468095569478051614438785216427306836821650423807003000626667169296374279912762467058961188231108974329365105853548262481036749230200024000312201653046381870089620582068651340470284904116974364840184568569118090191866968130411957740284672724394652068018485664182789462442360301504273850409020725948541072870771672255653094356852757284098934494822472697411710991914762901353764045068023372869883833755373850550307599791286626282714681343749620549488022050959913041366786468041781815993185365456723219423316583325101095063439363804271781858108183099902256157332975872529533799100295132406430080159787252612964104340864040133919957018788718005317411948045734345801581794462290187311049772400177796547211043889486248437252850522626579674722874782015867528479662223318529741614404075918781477535232946554296013927802481097032866758982277824270370857315869781144393969425279482501078971782433313278596622581403852858624057798474949164990570146167796290773523496355186902059902405809040677463957090340985968479072425611807637819134390423519818958094503648763411179750184309673136257301644823010554974592116234704961056260374975323957034337485075980200560111574062450686895989634596957741510361109953946911987493685982311215373641380142546295349406677838228347740863943432654296152511025478845654967447532011113533847367856598170719796671255666490712314888015235279236143101945487755742106659395169440577072434300049336716013794264940661394260197792838237499527706681350615344495120327212131632981405651634056093290696202682046425090060869014901690511051376056097341170078206467369097090770274714212352527814621717229890831020541186607720603123518307724387082524688054439473116295782313749827198786655163696600714935204795878055112317182924708708786211233792070368716504232903406520709292620251961693425778021805492502491776817603800996676090929974611809960381429828080487360259554512911089208720185850199791165633382428321551974363410967114444970055648556158617853532345178959555377702914568452375490205968290255338858305341641141563992470071630472201248513832559910361573549811347498362887095569574050196405317982386915930634373760212514704211034526155494872182804988139771877193758061902068028993334233729514059230533689778862152229612067187767734461006015243638611936235936313696817848948696161771079128442364543952227841559680833421658466890413207053950847971852030974615923708321442432459989044632838886149297303563871726727050019732349320483938087680274930820984221030883171022666677172346618423451362469293571428811555924596824135862477560804546602486628823142525552147141499639873437174669065190477841176551556660177388731226796931624391633692668163914666823536591666370940919575307079208038160003496088600748880528766494036330542702767441701114555083140454261579463988510273639777533877956478451456163572377267882559525868074368445098798914062409844273154057751356292373260823133471209536089441364625242540354610986114825334716073952196071555518635833895057959432398200152616464445686034818378506866479095572779282709003872432123804702601295365951954300220343486951899917025027470596361640343003314680536883350900000173954241206338259558651915759632858981389174403937943792688326530625279513393711101525105534548222023063841308885501877421631682892841098851034067857651892937447988739457116564387030234956772611239855381980567078156329747838842713451470938440315281534650730390312447745515000994631096857006467984557507906030808177243211754463839177288415623728224282789761250629525051797545433577304451318901420484869629605889090873281422310393421850626318588370421882606627612421275580397609126918439134647434385255883922777410161554624553078948603978535571207550407483365325240527906780495928112188347198804667752901265271283630500596917341510159814592987218665646536576965467968750670744597607022415894782431900868036293338963562863197673449878279784264606614534111173724559033148005705421517815597625494861369906261101316925111260301971996824342639921886454558442799950448205161371218351148677250101547967738402672480028846425739807393425127138259828652424869814626026684069763336214338706723907121677242799898804744857798163929849458834217310247946018997785199244081169313077276255162335770252397830156179477226195284139740686617702410945386728768536131200848313054317202066278619177355378832126768890623362036227892780901941269768558441719334376583117323213650105326248655837448272738297713002232989262455240609498381829286855071474556327005823588600395401272815864157158236965405812833692198121812037229227065789206260850726072023766719984439818082729382765824243184116337553290890186768830973144168342376250089381425287429188585034233110130447362874264178834715132120232785101127944910934546167923068087931464776549030219488333375236661267235328985595750444082240480763453007650856993572678032592201879529273446671748235990496587097431048796013441788204251228122112214550518151173348086202110983765874384418024369648089874053685855325373439218762161351297321882248366554968956352964035461953638126233036028400945587958064635069328915838524337192694465911365294162220887556029709796498013864399035660964200482414874786665080704975846895078329039915662169444477391849622450167542818913560181345036751486132234734292972459767969133813590871657077348086455566077825437952123692979227432883933331040643129327572845881204856672345039098210988512112294289953766808538676783023119805315052892832610985753543262006028762394738725941034936361558972020698256668846381767567086990830810289763017749329920855180528738291427615437918572332497138315658435987702792916056871264236184454599615466517575864428900311877795753626501113564073746353509556861441679017746245372467512200658005237929766459112761372565190183113587732917923010148553281577103325563493834915385492581772720328604424009107646895336589997298078264995336663531940930475318774975653251806254848349343501587277838347848460643341422668067689099001880483783483039199489691608173718179106814716688291379722122427323443977659213430764806525860585543224704470389179074978199833543252241555367776266579057062586163664331077835056178359108227578601380656776426551080071099478882446906896286610310773125439412125739961756581614279797832595056228858516715844979753362527447111545898741485788403740552375159167972505729480160416218517151734392179884846107197034956373992097235506784005070995399219856098664235290173780098822996780894903577499420679159374848800821511845506125632907865190845731136115826361780852806564287107304779674774378182252741849810120507945356489217644246370531234164374734242549484394244487155578247775604229901339888088637903193582387216664224850004413380965771291229953107647069159140422986253108093366276333651253629411147420941190834534436935688587905530578113048148298586235597885098895717100246169651146326364700501798496489695991656419798745412807658629726065143716433834325373823743447351979229783505678009554664068633720274827686927973733144732604264920876568550726495626184984028683670008682386203619444915189326263494483718907324991714958815293774973933952134245092923445754013270197026529007721957269945212069249891469196597964583540653858116895783951925435628584787398560068326050322204335421551673194704375106173690114743148952109750040427794938496417847273185267793960382823548492354944793721667337159900231310729817119303389208876241371776675900271231193853410350420224643587590523400138697270267244086519209431632634485439331968860478779591152227176687633655309986711745201055473761266900335830517288845360209501106527956036806284769270933731524140072630682290566688670551273944209926667564326136264634276300631647971678187830084880865938014616631175427435714785656113541689661398063591480394572532059503379985121485310779261853790328315877828830191367135245041938414973159973257518679477946881894507544218345978661251853046938941615640366509944729895312410805471430674151255701435956675002000062375414586429286660338527950124721799017574887097011222954771365796752125479516163893958309869322009230056137545162346307575403703672507873808268130745873989811202293358708245820534723942468110651448805862587596295221924148914630762553603409249669148301648043761535693120665384715838218530013769199048717455677076013245213348967833447515546814967882555498297991576826621096682928640989738841911745837538790435097239035166746293768050475840226586700887216697806078333081047298901440257263253545525278480678470568798273080679676344549127758648765963056590246170781220054380790604620356591768782308805113708896222109995440374675935859237817455102571951492502624671574748659272176747163170811123256945722180038034284965995427217771422425132210944894425692135262515341854836795410235715604770208062893656831070200677588086803644055567067161859849298061405851297502366136463659015285060226863953364867470021268851165256035306263507635391338478562843496340442708212433671028495965520251346815368229949160136180287314574953390730677403037297552863625617727413152250079140417570518319405933418793397774194133557315312620149628808072153308014210669859133956831320104460056024977588462942048347123620875402346813273798143888948660389046096053144646007177448680166863062849081262530119982982332951935999048501642799283596665771443476312051290675638942978505137905200945676497943939827979302473498625985665872039557625728992221750209255577302604211025129977750541425955022725224922975927022528288120520241263346204734544019045888994559337887134920488200263683491423933447838319639078790247359948114746900879236563106105994130035411205390668854440470995965815962085452798593015717530402496158663997646259900868939848258852873767018861652371999514017568596372509313237788919847067113083749207774135443862424647109268131450889724714912275788884576784885673603744547448944848735645276342366161345054754166861003560318301142005266062756469178559583887971603150736565929128719612891956091571550060482793662663331807843556883552786911452823613419257164184369326819015538058673807281550212035060085059155382176882294632860997320092288332792429726177650237112452656188514656064657196969607919875917444479749618044471854736805346346336003343907453417774814545636868897019674242205986702113974000986825738286092165783657060100009299030063344219146108488148885826661095807235414431760840373203841351465044325638533231889138388191794991509118970795981156066488921447599149851662029894643647234700856177819798206224454183785638810322373010543926910698399749546565588357298426532102061063560208886177542255199813059606464973244001184675518374211040090425742308669875396365114817899126321560150372704718485740753220598684335936468334819417993210021740818231450029427371419348879273976375593780596320982428954793747752099270631919444456887368825954429389689658656734741657111834001325371676545147053315386278560565933771314828461363790776275123536554073374538908459054261428387820257501627391139834970276352170454611733054617803123826389284429382227869004084259127594040317936532689091769088294996308468336708397945870238782447732355261739700103322715114639572466578844561275339675760308966529451162313481573847668968929119064238077611711634744656939880840837909574194269724240573490641896635235480126476613871864026986142313017835705680899579745193776745088424590058240030606023786898594524962582493865133066562594320245054640622625159933812927863330802045140840082020156481030868893918619833258311582155320396282574964256618718356161630096787372005937313993432981158773228587820745006760076890772991714657612683336388773362505993346989815063073706479591433073115538908721203479619356874744565287183561654324035277391775922203742059387476694686467360783666649139044433542556496367218778720467737117319956227052974979404810377366796962278774354456082677353772889675944343303206293854374598852529266731772204543419447645518452454111561354861254875947907064388491856763049801701025428073031575919336621462069925411447348396771376863022932119006042642583802330687228319270892896058259386589226775073753247375781666078326156396087748233263606582903294281693616458802956084951905916191691302388409309947602770195049437084122267954163969477964843750754051796039118464416563022738316847181302064750673049107358699739726752093331873833329241558218583368007510976786502561349600835455554944137934489283153156342355036283907924191437808894858711333075643850649346455435823937348446356161729588521376746927862241479995727320264553519379906429820372762513187619441056301885867520272619858300412580134931470756452312493047095024931170870294313820590771836939954692398218999230847933547129457972163996065996597893193597435299231799251214004229100150107648818714609772332844800002162631233422262856616947670271930925123731414167070361765688276583684518559871664348099606677707784192556528173363696565656667731183831859119093272948257350480536272808035465271371284560026771253136795683481625642473439496926836284617550103962968973372003221131147053091220275678474356924411273189575819461947518177606365969660013975820690061473504363914808380035299440022801849562933875429794655920519069895208464295344208969009467794596344042165106824274449873084127218816749846957194677610971733327470229441116792273106045862024717211601972190438743020584134791093161155322911948659060220406229300601589053881554629746863955972585681899074145152634932223566471276797762424442162152659735161294581353631679704445723231149201476753956371344842049458290524785499300201152087170129195496917051969703758508447371764803208814519736698441677798891999013325742936141551590804121393600181383301550815675102187547032840001522360494342675089416316587660557120483642159533284836285052288409525292137541492621320256912467748640440064311443076029249455754308853925504651619247979477201763894222635905804758384463353409676444145478445419274496541667834074592300622588072680822395610623028817106579618877046749239950330966531632448558134324565161244182709336634624944130995395744292986261978003924118506268685346857874826175980498374759931332895308329171776707866369269037041745543057545763504135252767051693905620881934229910540238061984082375844941961475862068186715530351358193536734182911801164405498456692664583364417795849959831630878120410976015428173045861671772519384739067833698151763877482373548908994369704916796569255568330551201803771803482766039206775600363777720061035631109854166064493939331541595802574988808481717719778449413257733969543031217493841163922068509951295925182566788659616696795099698686268089812865644960934581590136906519142390867917815550969630878852362085039949739199055863353319194371118083071561397783017530597835299912569559314874097019836999758561136927648711120579713771691824766589958591682621150675570479460402370054820217522074019835598530143038150633518547939381817045197386156127807692035543628391773991317378497958334770475304367815360892861009975404717448581204247929049539587150304641970294525896651983203697117556308311460043823331106910441135149332317460678027436134885079602801506206621208230318088571994014299481044331470843271144050253627015189896201593967537130821364193121387889117628988807955413116021345162296031443279546922561299610638340021351523338198443414580608388145142012939006496076036424307259377682660308325976118325606602867657577906835398349673969200191799612738111217878295819801551363762783421315784343303598959321769373973790857567567213559142137564870195907988050384084603992042587104492778338822721448932382280361229430522759110384641848947654156506122212092760302935258919474019357062642241034605611216227117977571775513931269435933238293814428006423977572695917124170681760015560815981279418287672447278459996526509913600227067016363869275278617741310682898696135979888620540765927269557863087342543153446454620891389447652819619601699480415109209289270954687418046450904087110584350753058258007014466531876119798698157982252287413982767906648213782518080895149123070562065678853738576945998070189908400892402114722838402688143826041200845465322249835439375527917455294634223937288810297214605222222560661633104637907478105371439286500969337327166991298022961557000971262457449269132311800370912201075720780874185674843478314473528555686329747877266190770892376327767769870548621348096425436827233167321442720216486089996478427816384731823841815032268869367058113538441638287488429102009430553978964875473059935406832864553111461237807296139095589606643067269263909159502711370379966760395061581630252704992712974982876786132851279405073908522957107189203727387030974508987940281900270710993266284135118979407366312197845023699429224823009703684339667785023723162468349300666642109741812618848459122905959254616325772879258607911677699148154715533823057611804178180276521388385382947470959364485579580886300256676791712173183380945993686900657008420207074898214758471758613089403727857313237972678704764896968227366042814044753138180974838505754833974092794272247744187695153295055013123499126807210469576919351517307260780267081263872844311431186816961505387096336439743478284014673121770156858337872184757227624101683745021370274166321355786900066550724974676241656797615284814365635357142803251496892514228082315864495864738105445192517499842867138172686948024874197874065909553668763526554519810547963015785516818335151957058889974263892212720136388173718144653365123256783553968176182933555411809831890919639458981965413198486877360272180892752270414410535790652200825429858256111817453317007388083983595221176903097808570552413012990163005872951104777305817499257339015104526783343392705379886240655978486145294547950004598076562427698262613280475200955938184092890503492136996805448601430685666525170785842535037651020797320771873386595517635557632358980669967305702506921792924941025943625016871970248561879014262108535423261130049129855396820617158269600668592762673644557101282805170806645014417828616436998868707453346056040038188106387484798045205103453040757811491129187429898269666750921078265880210786174115502767610952070632680764567840658624718238610630969049427713129306461210867857774732211383302715602941023689497092573833723632082884734863961415858066895226517230800760842324944223820391008680080426311067224515939509800051298467049350439944362218008983171982435700963059841834200864880646790266095967704435289308853916659915648323326022629588955612604387173712458471016068807665555682437693925498155484105974370203503291590803233536228370500681216960646460183745437130966799665650613190403946735868735288391279221766471205596698554499877558461942429093120838118624409802114906937672990946522843448227914894388700032609201457122500963672343789007715783382200398951299066822705907245266700022813376357573684116600730344448492695763635820187678153028261542772187265504652579683610319691300669253109040449619121567185550321735573963091173381750173151676148362701078294138809777561066573010499131085216622650345029801523877514774517269160951200927511770260784212601024437396008558586362318252814503053575082212221358057413378138988070300646216173565414079736249554836622627791513186215983244437910285860438148749820775086280329546854464485450710602041377896434265568644072711864721076185756929785672382531251489959200291810235232240943445288670171438611172523972293494875871671716019868027743688570190140320136742355815466411604578572000904727903849278520806218052799190688908068355291270728312442981740446265027575270738583347609225723331426641574246702567639288155179692967847874613086604116727730419941278926248580203455710677576376644164970677177495459667190631681625230621406701488044913802131473349931955351619776127742095732843884290889549761009361152461522207769685411486454881749775388461025910744709553163321158453478804105499469544607060617761149717250207938003723356941592686436116729932017180385325330081913819767015168565546268503243661609962068370937712813343279904093665341055380440425924063788466517813669285738518895074568355856205896136677245875781584686609250239186355219791150387089265639452021091501399592090948922358268961936557589939461998470063074724992222397073830361537159037599657209885554137096009990819338762442406965185837373186628756885239363769143475528025845115703895567228061574797759371896759196077203593122791021434767309725393992641999764339238023024199451644018349325811456067329888904752631407015745300660694479152929643592039683866710098799910236722930147378116673304032161597084380246657890118358941790001369821326185040180674304712269538581552812250927519950042129908661396907347825198270093490047183246864589203900640668373510031769884276747475719833561594144301020546946813521875804340952463694573864728105086810935596622176519418677266851407552623213783107531795786433570573872338724488658511936833685115028830950596055263408464009276643571280224109153785153532982033197813013715247823616889239308394450802706785098702882366891846798644715548297346883060617000026798670894220229251973453404422218918490057364473116039447149436723175221695420712592106284261172882872421048412191940936481177862163156609325907302697179000871010997051843934517411015300875238797135263403590225081923827291822564155249671326607004898593432031983788434716709199005195684107351650514104847070006961324848738917307547896811485734443073636228277456569366135963384738501463521081096112743945128073047227776818842187947642539364986794712065235578920714740606555289642217051778075901840781329897205884577904792299034037217843225426702345721481370998228528717178129282785780705399857327019600237580541951799649474356156092124940665513908661800438002559180223071615897034086693927952755937925935192467169257863049814634465385950877765052340329815467290718721031490888444730655700584716310486505931088620177325390249209102824147276587050977606883414955664145314498076133887936201209280325374113160107896923076810975257001769055112943570961370604215408309834072906766790822948228920073786088268069019248423196483648562781140141222472969319833962281596343084248221507650960805913080724837402569791023237802876418136507958848076849597869914533846552891339787120484073403392412859366025100594939914977261772089966919057713083631152097676598039820122904528537589008523619405131298183790553813450839008338948189427472059799853776379660837173429629958277809373386839157154549148264421678083008475356296641717561252434810829148407688953634626119275937613958692204957772192057131727452239004663427967845239415828388288974935446319327160908523508952337317142129541822209638173481393210427200472119703001205431834545226175626319205588586476305928387798955370932875494321700711830414405064888318753266136794476991247640234725454422954949560064990409676677878866851427714584690120599890528166045663845940815542350067073190857355392297463322177173331967621269379305192596015466566179607252113324306899304145943231517894054884384013227700189532762290547367899749657749499887306580733596978676559463883934610581583846756930746074488906194168192555153127863075791468181101668882493700897300513771082291842788879489760605788673829443436169693002417301426476607698574570448290897694435830009568418888465391611348528693551716342180373622222380180745458408179871096734490218514920443656186782943116796913521043946825893241285523356822860446952696074515012560293306311018092139440797794318325317832360229126891593103387960345312700043144800300158120908652035478345994147760685873789562363816160877945113756752247872568184662721244145393987579241632756834344037934115975698877362544873805931661043679512357008083502457802720204657968475244874411198241014794189473557977811991147909223741983384577205286228969486759789765708319469477281983367542189855089810673295030455770936495704377942855018420796338030197795210062958105215093921804589218680138677740212741439605356099108642940321842832448069051801987234488354053610967510831247379945554860131949514161986167646829098439336656675027918902816361870936070504458657885554649133961953884148715419755893128068423376460425176129081482841476538291990207202542012308458990051246753742612583628589672781607474285678048188805787130560766316854331846085823899420741435752947505783220152594694180193749075925287036074644552204848529020944423173791931827515449456695698813775389486899146102585299491876969813416487969541077306975744626422051944768719511121662569940331876552840410448206122248054521522752342631349147283376811812627877473486995897295826381719385967558251455671839149751011530134377515691641011316696427309277407346128730524137637029632778199346320217450676494933624395201861315614225769590970401168756973603695749203368813636993155428658944149545330527285649022987945837157238527851438207906198636130605150842604327365786339203895261568824201682059799962706107302154740117262811398069219964110359234447021768650864637044819561288841579239765673058023762177671162367393594266691833040953851252432532367874631547980727997123981652722231786127569171583306265808395291615413984994709491384323871732412212281624062719379614675292501976598270724839941984681710264359387776497689582553344588340664844973528549245537782638860515745871313098696255665067757732039609005525414841394211873059161863726388818614832207631592148114918628333149926764985437242038404666715791140492098552976751143117726284865164714870523361965058425629947357473417282851670633415731207000114730426731521444614929702680925263410894843312693719626590171413799836722013676109648798700531352613385708573393866784763539615712650332810949798798334819075077042108818720024040011643270045364244060420556810377758446395825504874960698717811026895470538021318959890184328329286507570689140169994330542483015802900326806949368836959502284758276237056301262682121537947616287538342937656624135052451706965536901631749749505573214819424937048751352993874491051131679505986436523060329287577300584494315702996746561532331006484967556408321291825619171806704730769455110991545184710189692987199210847315086269207856709922994250666061285306398226660395136988431887579468360243708916861548430040525389436651295476401924108147512349367328799382256481302010864095598036663855713335939564433275140480518059978348637055267937349227064302501914424641274653637155154003293896962306203419923720622050636874393975414718734518602674683809844354889424763848806318374762688842327005138405168328064033334670436306975534484399570789731749089608730803311776044080628585637207440929953764899183242302730159854472312420528574325734883256412474600176008525119831668455687490627181436153299516436030919256759838802626485711722268042594092180743285156734659269676874965341269381980708823837015107357604715735519278306836854475839293442932815076025103054934729580060571466638324159003161286463649163881410502034571668376704279989829341925319939357843543098990708242866630581013105674905529876764015728817025476887632043523089196131460858784410974835280641070437700291793954871307262819556269775438618606975701848262560133286505321578679657402500825693364551029225298221322906872977336379843200695679364758311182796561959451216757352020422279099197684226533379901282324378881886950594173433429482521350364986655522166234754624632701438436598782572140169706155866560902934366294585513591488968509420521603276712390668292935360451442763389632350750354266973021226499526607788211748821154619283883777811194894832960056388359080349707459835908940867271713721969003282691040310680352251278774930461451210842041473450009418816064234554679578970123451068616835730606612862954646639782656051311531686948200609073221755685542772257544577480045320752763188421268295746878131937939826806660382979108485381899172084353828395104409032532232443820775932851940564173117338845038590253208047410855434149342662746994772982327787881897117167899020987508276490393721202182354119548253980014462780376460423485607893071849737202551268199056064599940548652191900559954925177355484185922631018561915940952392393880394472343773556050148760911764428066872825825180884165226859104995586076415119999062792039237652715133982000857138167794373578208675112552290672991361900803508193135388293205478881716584262521536307288498310157390314890358141886351959084161297711091981179162564588820754090962604833610118547319688419508332353433619290961179848017101357288075192211278926452315128757777851998201225803466302393100480320597793557435745507600875234155820118723456213746190666334411872322356909538541915040852455567602356198974399659958487036248766337381734189627044115620305293099959680292147232121843902152844588768594574738908393599558068906635673052134875833124465384403150822244290019453093766629472084762364240788885973779284915442463186083245813233784004742597548839301164660850452467440639452405134358303485686222624437438470621319723504303010052694526516710710468539588422696432402500847280121997901277047538094752445922547370253944895947351504838655206942775570875502886435609333507038056237317394862941861869275359395936753864313507943353048685934517360878047617880319560618821738432012984563026580508488600745019862445736211950963066044201208918915928333119176972828218763882134222265273563258781107939823969792136831493361829064666799409392628696658075195678661618300960330670128009289023460923273036185960838049151340207653743669032401771092204757595368466148858927492275623235294299827655141374658973557481678972427752351354152997423778991662519954334650488440118854878087569021853504032379170298764046187391070983849045154392887311203634489141366856017665732733136492189302141566458506527742641736656308223676004964634141822909582656177998559669172426982853987440775678170835398736503127627565066541033680715234522962908329243994577757198947810698700126156359824212248511428600091675707845066863590220495726103650370559434867164029024372093216880354820784727477300902438869962843859721487462621617315919074475434396955708740588410296726577716540244941811984661821446842022615265027598600921536147418382008887557705138174693871508416522819274842269175351845200054525773031837744035240236440403236702036621118080132863444732269263222445855663677531265461385689699579564737345219343339918420554469946930310463482111180070519942431029965781672261482175309390703326969212955400121360932311606466579280934156471474647897968325513206241634522735055445344766562340518129181719763781774503907356018434730602463606002386024121272110617731112207614634011797051597147234230331419816085761543646367575538457157454111593992202984860766977144300763751657543128441487197309095201300517154578439363454228681349054853455108694010395057744420711072572751713166550950938948752760967840262869230782161997535509965684880021373378557138996883419492406456906228863799080285788876324001758894808774806904148526490283831870145781666808224341304698947634713204707872464180945839639879835408205717021114181189376673216424121658281984328351659810559281792050846058078894141646198066486995619523756755357911722107321338056384272392424315479061062054231874383475646613528755508612390208634361767335399014172338959517415509534639075075321891123437862363543863634104798571710676040472294492515984181502081453601152036631421898794970873243412582063429811589008865894851202204934378096366281083900559556145997375287478070440655718435365087191911721201220196741234795837507659593345791008691316061070104225647006943761537544969958222574094149477909359703199479139365559328277999009588409169784967898647925999961785760472261573134680436656952113612042655113030884785764906697942829160136202705300521150472476814609585274762606744947439579525158577011325655852927416542315006612161565981719292247022919881326310350896260809126460897227514571277349354001331137326732406023236341697605712148587532008551226089285741802781152157630508056555420384972889817462780009381095164073268734323281053739165811096942760357409352813866328371205851878130164808690241845675418305875569225253626990594650199615260289936414043358224209269637457627426481338594121613516278305859784081435442709380903922409342908173768873529489991686644601066102534734220471264813796368662270243615000766023646242932148988289144526896649231482715130597653705237335752957433175507610208788312049297694157044342537744538708123930859142050776643447556635294221344908429333919119484941943639842049425839800521303657762989839024624475996072916442843256311521860070312517897028212852997496782147078051827463991972681228118232014010757332523933974535572932809632497688793982039660998775544173903787321663719714282334717235784027467557472520292613618690108299709761597176964002851732596218878462101961182335682479421513797835984158830327154787775496260551378496668448898892716106847580471196922757603848306616124967345642717483404276199146202217440803102841458829108972683119973647533665965089072285891499960580911470454054969065814188120572066323187775543140156781766341538509712353847062419774886986342741183264391370694295823661729563395475821995801297807994047075254210785899395085390835582698587075466635035182821104272908787640093327946475294554649254349628905762752080362076539564894255478047845407587202746482731554711676978636721589942080906361260278131780821637004065421429584019671381383596785262056419380885127942595870725816903607011327358463168260095433149660621145406102763415392027311703049265796414871660324662564765325560895559457322346394951959389560815064970759183161651286010971027175767986742151430010108486967523286401872837411237516787647436569775026523183787426009422774143029878235378546534776667793150508075001125453526734730716200973473316978526336098087821132632218540344656761195597075694627233962263978891911454029140761401884742084273678977636588836332096796784995971274592729317057667168203641419528991338839078992891645781517666788437866727996727632155482959318070682557851141685018567747004522308618403775175245494397066229333004359514626238181043667905984015430139892046899233215212614395355230651242214969692759784266986259878282628050399563181035969319146128657812233505330461329194524853799081860650466528180304132974130096908859455148843456422922601076101279098716700138151233442731297172529858593277393511128052898839389965079047605693223264982852796332350349918835279534466965070472256880524491417694011178831189932431588456725648458621621801371731292184187741542375738561272399458177878621510764934636292840561214110079284313061047764487383198648664476859693495448532243239726510838049689744624858699334401562609053325357478265520760872105651482484532520774141710042816682041665768653247357315799099532838180944263157045995479724172557721106292872849654940559320351345531031110839231667177057302993731366856764701994575577314727905805082007471657515411473687136556258649441911051343349842081385583556928778342533312025695615050056678098757636346501804870236238815380299314368317345076183646818935960467727468781541102276933051635849274641640819653502322031431046411259425540228166988132301373534291338592338111646131034604781176035675840076444153703895603611552505850726768822815943706643400710605319528499162873954356487223510111110898037248715313919039696289918061303861563390303147371631554420334590550097707077472517311267064798636569303640377469452378620112032276261714427050621874463844372806674307592549166441738650019254649741382702755429020657264189667535153644939922360042231499619246485891752043946696241915861150544825459003909513114991472328549381139894866811960991630450705627597752705580869928985392096817518010583440614449696379790515882138049986840447203087789931081866609231376838437084883944650218617354201855561415452658054911847553610029212569114757823990602996948611649234212951591243073916066206729694867544181138612537764895261184034760653163520022798497810004126315918856444081880991067091050753714452312812356454411374805119244258926758397168173130111880953709172173126504656639448371856744825694141624519874531081037818415535510161210470292359921135389031399095284947553504579624587569173541328549393440987466662697938373069004712561590009710851828593908735634630615730255416062646091292249913687585389000108112631428843261212317023632883477353128866875351722728908797895072762497483233416753599561694617668290484152952103320541591011636713185705594005039364466730408524647936656948976324396501198905832825145980672153100386662992639386900276673577855837635836185826774054915718995544094343881652423582726685114871263102821595434674972471991783643137709359518696457184020018688813752546622124807566865380805378372007162048731936262706897959004379554779471227884133085621721999176390544696079616961895366013703965099874746099858968358833487657819667939156107019783609484634521921175881270609278622629123538943176173728824730638831421249231680173680837366973516970926625932599201329892357349034873702116603176945686722383048887373011755478181644577711423573756731208794113073465816769734284850524745580215165363119492976595027381851512612953311952039092760085569793694209994646063091321848575375988267460775953756916346347443463543981386870530989051789466986851561642432168362624829178488007684453613121611722828671341264154200375936635111141877860549260552317569176922201074999481394642024311940644185867781511863343460392254665902001505747146305924249462495935620728965888044637280925609592407888670610026811622937058945351406981159212725141743275779245079106115812807725519476009268117516468021244750901396811333519273811920042612812306697496344769275108623016198880526564352155806483568401618260131210901213744888873335614200220270952650736632771825318209869397352896430967896693889115037484392374975676129612928779916815369108956512794601395807216477794112945927593119465572777102313619883699391625293760487382809358545574713651406508466496790527205495873953143501271704126337881434583727106084368394164541243709397318018595437138605623371961753482528148694036226333668080662622914371945718583549834377350196268477090784345768257102208911621414563987170990601039957096619173737118402062830457757266014377098194441381102291466544573979779350013715229903211301476951513299607499050654376813579716826562647047331613717569083405340698633151754817458291122598010897295457786931236597574961017084827712334617002626588671342373632897013218258957185341738627816193227801989770678620271321780949766945454347051380984590066663803267232437554393975552473971892114208585111690129173335989891061128930612984116319099609168028602516409652563373605078272675859514796495440608124149279387857305962699048107955570727367659393680353457038836751111234556078487766985394524614310945942245800047467396448931645638903347303018434576085978464864647853073734959518059066709437152514127944586481273158986175044602663320571586910459946904247766342843867565767581601874101437110063767059627948674584752256049833875358296872599730569638073969600179069755352558509105198464808352043309159134999375556943591928631823554392952248997520913984685533902938169795932061502822797670203151975244343453000878648038212953453582108755295890434045133876592804116894829817342601786717411287011948022080638971535181674089006877186378496181482802186444009172127526611922790335554632301323532835351183677150273992852191812908769579968711395023062727722294127123253765005807831735179414569274769571665405356395914351222503334453885115937727822539740500179781984276710048177683224657864190040959699975563283894649586566451083183785352017348048260724076426198900270959188009615690459379680209869308165515931805935019839039060349096963258795025555882820221877439517009666983780445341214087520393445241024191924804964807145965932946037223635104356352704590887554998486605177928761135677397381678944307975049130215429858017236636804814132833672701575014672132476202672704433362900482607332321472190008821405059264069020122997762363230301588071779442386084523414154279093991332836779356098043803293660899410685127669883611814184073422675273720075580071871828067454690882613054063700599101272368820409782230504430674951347970889702627545110394854492157021181940259115592477003622313587823832320095557049381924834536622213224208083447321713021392236792518715428695779763063909196730205226263487417179001619050527703189839022318344831109282359937566329934409296487533833071722319124002720888973891587138923676684263252215930332118724409857795010355693090984575542314248459520179931936800121110834858557862636291159456415713925283127985638255669987928981271771000307968205026707266014575455238236142827342645258948557816207051008087361034082464731295182103522570501331675075042446748351760826232313836303830300807351954853349711460291652104057462046978014534165846631260957914682396928919014956518946944083393504111585843561035263897771228451590330507860694837905536765355136589835126639720511521953593059710939674576355441695301818597623977020428526633828786771184183575811945965354386464673822474826902400093837409414337359072788581144782750405513107370688249713326227044077963357594499036650266566904007701754838090278633890179997349079127452617294942377648816345640568125631677678836076560383572604865377093008535357711150671949072834986776224320605793905216170448827493343758978569757463746799899966817752533692250389616719514317726215220942817990804593332765490457739964371417774367538566202024330435236391137658289720457393828649871764248980473399734610737251366372476899309515702686348735494708160258098977674290594739490871269149263915267641123253964413027347307491747158491119692862485378607167794486503030041619035180855921879848391237336523295724556891080613730108403660400056207855729554386839797401150779326721017936003133627055608060583999877541967957549110117414601008000645632586751629607506012670971259757136365354167217487245452736592970468579216442636813934132834224785870535136741211335203697824878136125259121008188108226912259876836360421435000094130386247592870291103652076978136817476801349495627922712157888815160196575600366678421974275539757370203889080887747541275399504632611733475260946235574626153291589425692507354392713851089395549369858849311508245382137060432087538036436827533016628143526498310463360942023782746166260292867286967831261213306324664772665435679621296631859466870940460629321316658276696504022242513019777325080000268131995359285154909646609500999216301741457220208362307328710608365304257151950978046765851058391343032669099300883461872583900833431552445584707511710361652847374018468356206614556072666919958519671972542641783398017637752287520287976617748720832813104336118889629352080196318051924469340941758023427644482789637038044382277833790929262757585233660955475709344913470777311401937415286664372999325736315309379069185801514300824735453659701608451735713082747303725717399197962209746143049165768815075351786626813198763959510371488697929476102824280311730287479440232673840967858647880089889119313458502742955101776729072894829856099141595861424071829861408658956480917163381530005205503313334511188761304964489798530714530891724197402265707874894076706581949393860319290896356514028222019519390905941887317330469493966874446052046529974972686133248647736588836045156690226829340573616790326065554454424254298620003190479418865540674307312550407437309509178855903137250365497339461817043659704024398299941613972042159211986419537652254532645113742145151681947636004099079688477655568239559586372793293310657637161849553582074551181948314135524458620566868159384357724390726273533908566334657534607008424239170071151029181188179060040301415670878250936752151518118495668467724702949145325916436055105759781883415056014923477011530982035150696280488044138759442269693999917689826359145608410621460738117066461751397025834714992690453896531532875016818562548467900416165573105396782858329298434504362402984611626171729643895472547837727359050089695442166397172603529122364674665246802082758240003416473939132607925416947419939291568186891705516584324557969923767559748917579377671506812470777276762509850730086647798440601033088309605246288556004063691867928407431852494491072678000012549968664109920241607774881584361510708199173173012730058666792061691831852165664572320359544409905216954711061780312169292104456000989586983396122954253359412296186441400472831934394489625489194994182078558936221849784039487198515812380586350034177247783328526526496627246931898907415338383267466251427873388202928849845251146774193839076574453813315866685038487455178992046478026772404274071985599325154282397689752805930114027013442394549761249464114664494548226143672140330289494284159553862396883299126799925705765613483020878839972698909052145585246663041382635193519678900599740691555201841015934730879076498749713550047429428735223853766529302814460579093748542350225040175034631766879399311280054442841311440010468256887052029245924740668798087886023481141025905156638888455350890654106470212159751089562715661819584831402497023882953795802867878340909901383282422", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n900000", "expectedOutput": "136659123841950275239181517284515869280266305806179930227981617981441121624155972595242993012129171332252879800789520006669339649391698988380170661577214141449171462794451833636622797304062702516609802546444560191712896476376084232367340871267996711978597786207457122790163305015394574209668716660235363190643519383585287523290933982470051943147630552110881897383114124298308344586957964191810516259717753790704560854253591324596682662196653206479072642359130258271963384986064484919428830757152173186807662085036181852882800976105690447267660488470558190252017088743646447501810012859498393761978190966786373755314179336549497092528615654919541586297802650590848894816205501175684208949307300533264336580687697908504909065445740522243549978718426275065613988934443880516782789956828813134192254743584600391035315576936902795672313220953066029244354346921518030174060824316562805899253900109400242498563207876638169464603299232598166990363697391465834758023228906466316893162557704136592942053159828662259394869576701560859120584494058206280298975528748225863842346350932685590001519156375744268827433749539749235613697624572097813882306036707934238417301122108639245259890545915569116242496481525144346022082297095946864101514613613640318975052095897722695004280980757994142613493060156586684804128709256618354150390884462511182592807776877601297894338408049529074204250092996529218424815963139964887080691501388235219618718810657717453316893362800377676242973404903853357796109743557670972990797578761915711846237120167859673062439241159361981785154896763325797799253327369460522944242927350318814881352272307476770093100301362068835756117562417725456943776219466447360829638169937520507351580064676407764672114713698949684305687405243679255753630277901994779580388008211246112774841844215353462369224767144152739514772450918770889748803505120070311662020184770516809361164200185150053184463161384035927693110439019841828368933655416488367459773531878164910089132404225518288651249129966731561561893167499537142092896499303768072617967056269993255893581161860311836812011085247868847787746564843421580969372182218904997060545523007459805303514294112393013825897021459963492081941227755702003497530051381125387890554826770111960261195426529829352847016712862006664127317306770882234302753240238065891825774842233544668271685271295624074195317809418181146813692128819140756631062900793079978256004171723003366816190431910502619641666456859930969904903396333652439655990909699129058033735896617664142481909094412886229625739979013842984546862458991416065141083460514717227253970323456328733292249949330667371878168356440052767359468238681901877228829396888016153012590148965976736446796826573731715427392602523883772377924735336984178874836026924843218674554091315134360543695479129014804014188446254623714169520235182508848756108246315462104261439721442540808898847993985517165829629229865245069002151517616442316032533483486711497484438843834805904854755704608663165008898423728153671594346921186040726618039965723012481986847749516273314523992358359604845242722044091348584354530040619517928824956455590961832736559388680295171806803654569053084431143606414068279694001037321617838270590669278119662941663211303172211573861903218634683749335916932793098100205730313024204899904633052531773697718918107223759221158714593672288777787005016985539418333737765809731598495825170979259645999613126908756856851363712642322573567753446780273609858472455359700052984918693316500701739233079641752833505468267967451674804331543267298252941036133493144573263856533340488525538033809167977398884836488079153689487967833151769370574245200282516725145966122374782784008854210825703461409904133005367573547447641227397739744593240230022326076634155976255985099443648582268496824241093538537413021520292286041019515321804430413145825037761628388214935578490991927136382254455084766000599412348569848914242764848875604962594742120121796473010922921051425784281837013565413545480373226140245400040120138184317528845736512879170972521264944753628246755111323236161191109937578318938192505627049483916748022767951801970245660452237799937456057435536974048563142245651480884125799225687013553858692663109360238613949315593015714447340766634872340841625968202217099058068848926092885719090025229092800804568930688988406576137679878410445714621675144012654150628102761483372454073921941978460927925005314165769420516932269723028372994394955559432726444201993447816356869870098967488171332877754280852562486056119605501515612260892891092467993609459262986103008608247809338010604459852339110038031008664602032437371715550379011282582068756233652120125472187000812420748860504634049682592943013833418826739851874657205345863943197070418279004487597822668902769861770219975889215047656596910305564442569857191140407697866628265679774932251407449088666740837025553764411374007502717002611526254655126553421400904693329735058167958683420547960250522416747476755355853560166320841534120581670110279100004648827943010520514193303644752228037710301040651852440302556712463405495782386620511537520260053376057940510375814059760794285028174245196679292556359625500934888212928370774543201265495585577019158292937920068989871582101602559907304131619780185721795898708645817289746714442283114854211565263990237609420570043414820694002117398418530798681226620327874637348938910352763441115424124452077263979497895910183877542952088003442945315635113558846574660470440081081372991922100529341242391713508851938488514073003103396737533928531972047876256485988242507088129691662096337338428036007052830953189714658582994434777483387202138131799541799238259346630869449961320521174389419775794109532791338012285102499940565770999830060862480824346858250693353310881763723365162412634383815711380026459727856780374227369620646096857824721721448432447703635381868120602348544769808477425152460447055403253916958283611262208656075522889858482443304180378021129125917087154394917874504412391950624927728794134337982543904926712475347917949734974921558280958662759044870274518050276835261052394341385667078599547655158680174093618410512684435485644648260643920595778177986288305434077762942962200574915193807475562542345836295153635488753629454475655315441128288161659587822921366296991608624065766454240866468614618639346858267753435572874530778561851491214655246948360156584728524191847530909007083540219819662693613431459531390409175426586742881420692008873545105983455027747304462923123286763920323029532104941657751912771751036861174872222932563246994402306745636523012677528295259085333182982966720913611630957864913771349778688073919318976571768467159284037346930346723876793009645466488676720528623727723147999565283865255135833497196223529575144004875313466129624639366276666110342507758462717398805722249791336083789479733549887397725436357512470575169420841920269445157710022797263864435205858506306499234949685995316005548145115309256086595039400412442669309575870870124691491139344689927520474267683109692024183140073232987095340530157953204576697067548774972943665587483664597274328985637604887107540136705549952369399073904260732898907289681707811948830108282635348834261617723777880619794429019451392673196513191296136118138836455631104296943062544270323025877043320288689193410533768258581283227617401541627610349025792016054797949289969105056964917051157054735627168370106128756167405513851765699710879609999120798459964481291836886722764948461460186996349841352489029419389321702533022391522230165845616079907481331290794898040197729308041867602552781168165391361136945543011663872694398594424655223852418184949529120544530753025768981754494859005122606364672022211852216504547371937809860862532256772219649009365739918850202961541901440594487250912521418540187849642030658600105281058812129467774653431031297060004288841378180034898036400329795227487641184747278970927828334283506877623678429709272106600690822578732441132813884079226206631190933159054961256615034081444039586362503347523792204435039741680790587118752282215635491979772119159707975962704496468603221656664982742959922439643689642850439411163759279977746000355211079052677876414492660692774805848704031538022901494363644716243819577894335131670089377016741690247167801401952806818112325682668279346192569515890922237460926239341154211837180479559842317412374195188976790929087806084064254055771423159118659498243044121459146624158173470130905795479897559878697012613435685811501470677342259947508636785705611943148247995776645271224681516476035543329469157818109963467634021059413150276212263175536379297280147194559965080274270976175963934223501309129322404919980593208790257820741696283711147722446464738052312220129354990926026924303065810244112108425467712584275990756076471939256296914423357499375814440684506760205978356300589973241616396295024255615063678603684917344991839019756655763667251320927348364279408681197571194654734735577897727291140598846282921894109780911233574988819510336434691737964618123129600435575189717525991544721581064663075600536292539148352324593418191222306470254673440670791257104923723587995202585174612080067379652847725863012976285414414517788582828653192643608300816929205561567780182354915447270210639063824063720498038138684278453508519392486162700841102223017189241401732835481017921689490735002962307700047337426441647115198067389090472748864258117864905478339876408248284161427702117432257055661109671862597276230815532133100734449114595424997012157607515536758767713122655850949293961747152926359385361409206218229065158375293071866231899823879399711789536146025400198691462394499740454149100794938516055219426791160504350513030542823089369393038237282851017304980350263845990525699746000610683684722382257095978173296458586345240648940753310134518368413654543556766516284638712530045706959089212458180203217849827538976052688453345905740829445515993416455313402020153927233274970375295732234248814140755028194132992708102358293715496223274707755835326025797880759444229400175722097966156580356556842895129448356299830978693025874262735345861544700961744407636033426678340326024354162047056776600037884703422724920761500821531847821745988299681220757795453451203379885048124693142275061072360222459588016450516004137105135735402045214632498534551370198932036757773322959889351256975180069306361634763763676069300690846864380047046297440338283644263730910051846493300947437134635664519772305478699802924996810963278857537735262548660166482494980517575318716910857850560564395284876913568143211278476851374981155879628787474505752008560292646337652163527851664275581108823676880769515527819934128928396130064459363133799050339151699212181820863717340965000885397659913947495255018261067245020204838399726950839670763565727466142898531703697647622866649853778842429659763345836728424084956583871557883265979334924064024561897267536950436052651272926821800684715931535114220490118815006474382217607761070044080828232505004651289451846158069030232627500730624373798429130303682203750467295557097512331923825558176083173744038241647025387873164847757559666438904708450388969243670503940681264833926951631795373178432339814063073687870345387053726940996529278992024192296546809110620446672649165469342714337649920393450872769212810630327351230618856737106836662045716722495807950381576563722664398584913470281516400323567726097778948577182856145352858895664414918116186695042229710405366742658634467904136035906639556861695638372487455441234178020018226656431401294521697433124342114273245012485113844829279534298142566499099123929839655041357288336826284660039206754057590287341756687289587903784069159496081886746241986950823895633043525776085138639677662629418299823614270163489418481373085676327942366366674828522965592896616120057710588982354097323485612178371694180993216452826481348664779868743435403966097273360075278463406549480938692564835675540400041449284796905925005164620352350103013930903327011447277452676085849916576223119893705474174543153385016315639352300725714522736909444556692369034082974186689687826673465154359594082378688433301263219987008966835698402750639571684782493505316455587150763738824541487067981658199974138624115543240085139755500331359160365421099537658609782712274867480016528850831562501081487294982522296267395511523059785625218971556415310161374998992452729814251236375509074090278236931973938905455409607707241590061806661992585561686949052040658631108277579131583704353546556752748075012103217126293523786881371590641476622685917684024788296722337280893834391505633333212489136467231079474829044034895710336133368644567169065351732131253116964040726907956039346683392895886804334507588766385358432200050250155525210089056280126387916714252557031050273233660495804295424326009221927836698398707258418774805636977661580786579243837625631688750104648832639491098196059392745173690028809919390404796990485905201399143435955882659115547096665560089973775746644356813814025094857051007163550965295757939097657894408243121661144000058581987454213641644590891779399855605127291429480265101139245788098179750182527700103911403408820096567264688371178571236114827153117418702082258887334925643328395281035398751517639453691480625690363281925006043071011623739156853960532018058142189550085353636753113013626942210044824581272225936750414993526976295377464553187482697755374918197917805829557351655324204716102278499506977661698253148057684271373140871451673523885509492780128268693283080066769597270654576481737197416900790107356766485373011750748446983159497174412945298646792219845312485610868998667112437702370128411749448989893827566844146400145033008512481764768382687378811812932119194927583817835952443352961229412606472555827121314098072715302601653700909641040149643990265642062214783758749468418844291311023523229510675696124690337824964544173913924966594318942268812043574994611143291059583350586336043998885048611751548563395059035476739429038520992313048055948074275156345907418488268239092903183368238894562262631011665244487299841841186924513133563729713726984192069446607216328779147006653966373579334083881499980085690950530816113533555721721259502580350229897307800246346564906736448493186952003943745731890348298835621113941705044893190093743643375192774026213383957619822355817970840303811692012571909963036175681826159920829719881719405202261880738926531999875917154288747032996233250930358294229070312366630486640808784510550875300090778239148181991467846059346305286657983095759521542420377251115497574827845977251858358112390475838225539257413705371341176302507224031992753449226194702679853795655780027971467637586075704199144746869337153970979456103778416758680685355957570715168333575562257848923827187347466192341811158396636375478833502114028439749571530670392939350408599095357369804691876362804573515657074100777582996031045155848216212463904631071270952094236419859092332946807379218589647049641763562483845157766410226991820559337706109726298739148033759484064244086337627551287438048314886053434212657217395013392092989070224740186486341942140273661164537050366740788373714888282479797157101939486923884327289924157080076637929355386259733539471686748772316532182551567434822136040988378280083872586484493974017511857792425356759332999285604929790947048509770735840003616800316205739964808128332432155000632848298968572309873635452023314548792728147220837507994679289524393316342136147593239008114170034870934652305398640314887508475123692938004856625730268192484758234561788792513238957882716952940318837389603264576545456574722377088530494192530234863366636661929411051286753770671907200627367136006466418752635647574894753868707561945328837170598824712421233011469359116528221642729341168867882057572320004207668396175756813412057079977817776956049177269870919123677031437409615483083067138133379680938217959718457228189731121316923941817045900076835983426511768049358764773469819423926220852144576042633014470906402939829911296163290462059450920842837847557901290183379248562520635261317929510563944571808036830032492526212127085456268921332808806087921015535878243665550765502115412397497142163371407046695152268004924198072439351647588630126760495063541185807888661574846238674123014262956667976701915073608737692402141019109101197831518143875469502473701224129322896203161013697587995497202947790466351022763841844799954697257182240949300578815567299885885982538881515009032193732161743167037597547007146361496065135591492183310522324853834541085351946151208198730004517241212812678201304433225514682873668029428702441189407706772768226988735976409160869792478723225923201194532560075071578498682572777088759680467521697248274373570424499502090208905665493336777573831322623852400609432638701923788915255704638611748182803460078342120566650544124302165905912712322491003075329142618869873792691487194050325811963387707057939869292837959976397547520332928355472009072293683679850126911655433913041206154322992734474490506253949975103394991817329003805194716898266098839069056650731430194294546175404399108540984196476352502873914793953434272815759147055234507628042444738684387164295797790549286841155992062787844294636928433232972013288543189162553970144900599971892718347877420831077437646016453594241983390515062202927402940207002990598246201562999400969793681153418458854454292167414149188626739515592250820339753946950742490385421296706637285998783776116583446050142519141756309065381565923820900453033147616980648112612792255839740301291646913534060924023305757211503863311139722943507312561193616373756331805588776416569228782888369934201138539465980945885624643238191015654310002231635038196668903267131365299079932976214943951582616694939799511632740290243306067605209341965100066539697679036052713925277822862631712790452590992394444861149036491602237925666908010356320138182573606041200928856568666569624669566830494993632899820451167244609935761063841616189294648738962775906226440698685533320638566530672321387556575302786154039988501642358902693813643327079291065286897424531421981557838704875880794996714110541272811555379367177884293668491749628216982104834529779001263281699339218380394155867576465475286647154765203394882989300685350373710972439206063418512722327304260707410516679704182324315888580688956901235660976625426390876308539993013928396837294926289357133612285830553581466131004434795104905331828809994303727324856834608025147551214133457055056501144186845344879283190878514622193124909392252901560372773857341581943337804334043658558830966652797989422944647815337369705292960904702643326213570854331564594913097769947518403386940298301168960252719441321605933995217170176371006990815041612611329040989834850635496857475570796741035196690869901991982303607723751253805454710578312184366369451583935758313512637785966007946688272310427711069900604636185799547437367299748692206675467083548838135627645959230556704241909053516893799994776731197173924845446976395015148250632558695592856544702994610512615853499350720159664685801166809107506497909719143246687089341964904388958686422375223897950895294017001195506870471518269704429504077878213995257932911592034783211787334160967200873338756643915032804642911791630736251634375839518120958786491582095592702240038550224231828117814676191873966454342938814812786704185737303145991571660896637766183415655277970769136077022056055559396510248648659223230997338677271978425510260362820151005731606850331141578392924413553854554205162477352375768629101666770593983082641589495660705302013978774293797387785384870468234919134235214438602944002981537733569978578752664138810300254926966300666597655040252900690756137435958564538060356697997456931664201742295725898076191235536675616839324989722458702870441252285224186125224580224498966586266838693734680289440480372465762309099902289513829357230974421389904868382128563641627726837484912224484834737297778685727090209888605336511003915315368568906779086998600093525618939364771977674975540655080144427389110365857632499024698576125017691266459339893654807315063395704010530867701923004007792105784583674514658710071178488846120215493031168518102377668242006967344024745567256384693191625122589705130779405618459785556027640749102015161147418023557731450902050164406850669168561486868980544333199274955517844643048656727851213076998521769678392235105128411972297929172069060873925962959846650620772145381391252884344924463086586217656160985989868534818520569446996183112429859013858528886111299309033195197988540258479741948411593749532405050003498511445079029757659293126328334658795754346721310503090797051290201104446924068707454729263644860170345220075567718071725229723337604256121229796992489712276460522287134974719613669938989107465593068990502842739323758027032882280310481059278614365395723444107944560682453852486283688051502676744143718465302239067702242157855756490218077774388448231486962232887095835430451698931158387233152714852195925765753962864848384553375742011513070321885749513821258749434099037415402378399954579576124838574715557794995153931683501853692108378701358034183551919686251287271952837431454485765961414348190341968912861292222967072053451133612222818247189836197845520996814046665577647941579199579463275540748827253708237753274047001118086291471842577248355783145259398732157047005697580309795691950836709382871312856899474891743175619505619834413069231581991782707439441251161421559775461131550147337589625454240340992764438090059835556687547739959587210119599830218176820074665033251808734692218537779067003293270438335190364142991586156143829528273029385369943366511768686560715169621259917565268160034277440552927540353813506210673637403911605775195902084483785907420288424195505893415947937285086912269563814690896534261784995753897380216529851083519404007793839824593373103572222558725514461534039514898021378773316791610927465207438458687883081498243990003961899058999259723572681567924083677226310623496198573116687549077658776061183994609463144413803631874111951690164363973202923684774168868680501659036804338257386548594672080635369682975517809199412684330636809255445393327110409204413836393420560040353344902584917319816134378511871782788699195747116277768003168237089005286380524435397005159049462826784841509243049878331274859094040950720497857869835744368488510122166292027182374487910401455951278762101607439175635266578131935074534109401016311288434132143403504129473335413174383884351565628226047612304449405090748738237753657854651340524745767378235676706566969636401290799252465216782132754291769718407008113980294674346395363112928931893821526258090370290955666249216186763589539807433823081113239453357486432396762774040792207635487209724107059847298153213012448710756011494499609894726108966238960176269233978461006027323747351123918345292962387553807514993807216739533967102795854782577482797150771635487176992885602730561185000972798641798555407349731789521785533060992085694623677340487251825237615880675469603904683219133640011306866754063228320091295931395576720887404765379726655301391621736910582564175647469050199224647089993200112529362296886704008743365892869352003129573936782853249532907313931297700478042211671609043111234051299350691506540597516909808412055253107885071674640946730567988397379402701150081439214994988824539667019165602129517841320073882252497346991210439997486843428684556945571293962642332563326290465375414179504780470519902874282168820169971496647691043021333598767285841415143577908541898432995439456387363890297029428291814903347173000168492986778248031579801724974676381867629555573367707971288513626002000370406280685877050047304352598135897439196545627143907487162846829016807898634863904085647356952617845388739895057814237499774804885872751150030721487448481784204950994603445512985636170832806700690090932114316774168844425592649473478082649461883763628314992787361940368824003052336325201346315108751399316280597695617355051374107805637260134600519610313176786402986134792589680549081022679002031101321198353024762634236053803504751648105052202967669070099250421749529359645162985090165097401543321302963761574795965714598592520813809710567336482327870701316331516284369334672010361530462253763120765708310478881768416739725478501025421058730127398932550052866187830787001175150210889864251951506086026751838547895515289185534773896941246795458649134526976911410126119591169631857297690731660056393248239878217636950988035581465880130787024788944855542210106466513066614349008275578895797673611587060243154047032734836831764722911243615800494859115012913346791311088950133966975972389234381984844561298203540734590945253172049774188068494065118517569362905527148887092671807772903422406127520501625256721208968320669590762495601849348195887766437862848832546921955724428887007726961689903439255217141097154385477560961045717363928477497184541034603957046329711971165557008918500859459181357939375099254521994772702313395886626328578810756517320836096788291185747415888964512133205539289841574312675498055079653272056660738354332348958963136596981485355386033186253787264285098798694477667352597173798405360836196032972991080669781224420167459795574776978466404781859685250122233672433377062460718369600371368985875871689546711170503793608624671823561955237879202473031817029714208817814377015453854289147585422327853483834014441097602853796477433865629428052868661382897785986662566415655051864345017424412792450580551758826538562627005719180536423517541770096224803702577118496217648938200253545006384654685756017173036612307425496585612882822153044730782154797396390010851584221609396188689231530099661472994578957477946047798467662462180873118922525231659078254609488454910071760494731397238080334253568713988540768678194029141392249575849709458952519738496562931510392445916210647428761727678359883061491783473452704359612654120010450295475283682127203990978093116666141985625675623396164116830369872727549994452209875740271391142810372357159306211444941037466683301157041303753007186446770570803725575225421792135561719546169284797272962815418778174543436739966194242805491024494473320893516888153970582189945786439157898216018800570973801688278660586760175313446435718394939481887550788652168558955259596151148760974410102675091440640111189568547765188128904414402642310349421845372562280254094497574434242319792812069837959157464802106044306832770083895303685620402185327698108134348119392658359319818982306093752101616177261874060668016079190257212493345842726144813429220509815403514751908796821556305028690964926671272966842656800127447572493084226585988134470608355334093155356365764783850542309125580182671773960069315297332299338670884886777480962724395484954399578473638576691344153309641398933283545175098201871479946676864773181930895376810642294525996548601934630735219724855170866461280105305636338102081027634519486263398732467263338254198369386108657047828671263262165732177570915749880849547002557516411132731281806888020295810421577498839633222864712351241787722936049561633541237333164672103007123329897046354648434949415122036345588910248748382584906074583679163306795436616197451127862880368065542698838633281036245054071491551892445551590401750733288767663119117033501497015267993700109928061883860922420448794798269304678761324244063025335267515626072054686897150568814363785657275015601400397841088576084977382423962232410326612276890454923315655521206574549094358726022451678912850268355551796221166491204502905746006445497511898419006203534986921978159638768560339032547594014260095533699906208170741744601924983682193036880640042452276001831115751200814528001676740102885736831640257855545644532756146431289740919808520234486360892566475885407800400827754152880617258062539134883293063647945992036921157247709849784699781952050613295631810990875189666544833372945326622135689695421510785130440638402143452168894931613604078879215163196275381434795546494439594542552867177019110243131941474629084762329595745689163709044270593619214765617609504556842354536860929381370099328403783966698904419507036905603544100921423289749756781778376783630432430399463103749453976421548244040276057586748778646716508536837334619831844824221961865414875901760255349283564923116749014274617633599002657053517635798677486579961665720678054348771432142783493587099177404476136941115726643540449415824505200784477614880865445030424450640740803048502942174451948994913641591446017308724143869259171777863512297516698621375956354184425890694971364106966931690527613462751115407423899107316726027131174596381552067172774588566800131264758790138137220514309375584410128911767354909608639192394720448667909975656269545763828855230719165309328886395000335517735647802606952729161698298753490831528288420632558479146304841361656678966931375877131872139876181347999304783457976260035093788545988205103157779994351414262224259893162366699449662070659942637417219612528661925486453925147812615603948438367973890266878127844702954312984715168004131000321958429227585766910945618317367186662414232371592238852205330396689754000817306733811682427271567076248481848848890026564934944306776687853837275681184639350031775406597310276511466684749197241394008812283828615639289889304104702173146396927915275547007363404624620185895191367462543289485699898779641749838879757555328769120031861918954706291037848100503074778292870491501289810214398191522466472954062307837880974564852106068364072681229291681955701309867523927397512539089825344136006726462168332193988765544194112394818783492848532754317071032440200109301477882041094038195121585548177925299830726207969943663768645554658212886549947939159848775301368123093443537210652407739721642573624334622092537754415264612657146754446978173869725570900572221045976512627672553110760423205873331545563688300185208727860565721529861012424216741136648104079147476251590547564375831187509344958601235929645812193759678246343684619542096588783485293288955441403520761875621875268866317060587540177539912881410114466570634856357158602030170877330453240248112042220436391723206469224688741199163812068245048930852036767938218051766908178787076953490441340975563686332454354973316977228862678746166523965316380058114396128435971597435122255437459365613763003964028606237673947617882332097880541418672288261951346553445944472576203799212606513562742994200146955271101431060783608086355714385055237482298902951991713287875516928250955488607819377286972584925207497073710228223339759790740512860361474287896908802784088748494779736135921991954222283067518463773242777530788661784312352706898383307878367137845020189269843431912778425099381713972229631369108371493277815525184650663566471473014408652853411885254199082850262522652896052936708771900985952082522210502938053081703761991169427973301632712030792199108115601756883331417663979466075747424712351885262959340470087844072278594918214771868276896078293108525897881881481125916761628426147888559819644879126698370961214015651044499332261164956664016904385793456136615737640257327234648151223340136032358717771893563592619634419132886767695635289758249622424512625392588426040003528085779197807141405871610962417987747584275643884277393509796639029456024110285368567434457792307686105753963756940321085480728037673850890149062273565678019618582578525040990687793300913936367652315841737431258297406028276350153321068326596610427390202062830090922926256150893371570637310496893257816450887236502094692928535003249825977592398808864369875389796409175027568211248798822433673489429315301649399708472176131731037713984171316507101532378171497127861189731708082803693860522253749717681149774165258307130118928476600923353739466416658761452088445106560702375428837772733894443018313158518589465297940959637102021488361177627340571759909552714944249055009305576898310578923638722016797169581858673952930904402814926741252362950033005425653191823039039059120389572191678632423791791722855269601747136002617622350547148593030026270179486239308000447271140340343615991367731221130827718057051815135459830215057775081103042734507159789129910007968039640251060805871345169590394582287284133298751564708420324636445352741686048610893791648928697011249703745765086048848145543588926777021446051294582135963267271188454180485053386514831100827614382702263551093668253381519510400791914301462666727773847354080563811361800975587508588349704272062904576633907069187895626713146951000587926326867272276087402515814995459219890133351967705643654657088425825154353634384905152183261214739025748742131353304772864993407835595164758434511122453168795620048056390585966655949339631512493349805429142117019413764158491855353540014208433855791009581003872890628149972372787470034320183648486051121763598961196115962196203049761885126267047710922922567214034889568994343667856795398403764568506376165297770306696444645339952311211165308508389168127288898677441644431154077013889289975604252962416646020656967479399460758467035069398067512999341463184867874124594064305560937026330203522662352692014504417767634800702824692200997863276098278943609353371172538638609465189371096846494168730268387153326983951966716017532084809255715613739842196823960167491684819642764947535147067961582735392609983549687215211028807193152894195154591911719556776620372472248281753299760462792857372369237418711098612202031973967278756011303108126591020745463765461133684945952412823688712658011119215815116791068627121310291362878289891603334895922579639256815608471922243567347462182419743941418055404095268378819636643326373206474057564441449188951751176354671564373300354778634779606143024173171538664654099875246932235029854569908241563742715088132305780388443735484291744317140909726228249380419219833095432206447468963413672417770292657986873944882034656039885271630525593978811041905882357145075621711134349679015905155786847618163769740473503031564381651843946284834933088036062182852387955129730719787531707734388269665078933006508718315723859027521192317304634723501696740052419601424355901879649184327902992626121661880100455483441607660461572796691325890698431131513207286363896441190722200624561698068220207714195226731399723948839640909488406379591424659205967760070042736548601485695437290538341572314715164503960603367374416934955306228029856076928588542109067813738351130462891826935857839509573137265479050562532680467674462686411728741894182765000549701235237692514767823256205476134185877983347310600794346050034175224075221993655305757913627209555988650995788565186843031842692377647127018513632784213251341447712126430730000505509257807939996022527202400936302407369611660611153704350066263862008084149082113522635397879427041005445500736869484780856117419289286020918549118163771993912936624530242604011172854732856199524493103323965286074363632798830702639563245707632794936937276430342674293937849789775310465581372962310258137788685250892292203664640810915904744071907929356838242743056451212286791407502385147189701299627611812531280320667633421650618951949043324801895038031766132529817892325551490394138055125850135478442005955456873019137058894088984442093367438503846510464721515882003135088324342368273700518820987084819353332871440013432056973243334076882415216082266097154746629417232631310777842702816052236134395619903789531045817023102385852405470740055380304302816710633367486141730742613469472771526739850199991179025774538039011496725231937935235944095632789506253012557327913386408480126478581050410672859020904018180030494772810677344187057035977056624475668660438483838488588640771522914790541499911899754213799982054231055287732483354720526072911505180587128490867174026438936665899077632182587103924582561630236254873717336332584479294665678771455083696626755144428197369478887829163318741882595884218283822266347012429933758420951688543637676504594651185502631628289205400925790939492891902472934732120116435679041194946634451126907044567624637535228388940815188528449612479786518437315171427774892248656355984345088655495239483177449511619896258441967531552689093337391568167866871475678515434544670668497953065370015938165610203333139505882563747708712940922818442406349506571285000836709461680615323502626152224434331280862571948594660307155460433103537776918472881857929949900407825961936079201858120494676985861463736964724377195057017605452354972785958920816223756264744539055534370005586078754478505068892902425961640423420990641898553989681425209980722367478960164517146157453099860252499273368945863056601399796930916689577131043888664018886343259085153856915400557810829312276466245076179537778275339472658986600357265295446948919321142144991405495289492197446875232371978644817537869157954530396562411093271515826369914080444545481383230856952648370888528544871656357331700162192842548033004951902569345857915234008984529469407220338810960137882758077248460604233330663189422591460764774247392238480720792965793976441698051422115461229607272676737303113987511293077992777218252656681402775682246861884530645086520966697640682915005151754461770165619468676823313169033930497938800614207110067372282238643369422246323984992475246364342307985408400164475422363733518409864783623806446482610388977047583272409546263884942575393136608253992998503616888670137468195242465376202679498200866264208738459044948539958662492955623491372960786125023840797280358045947010359523113183481019100949845365707450368843951725377816887059535002259825276711935520078338418891483549932278364522849139046368841020361034588382286229472871410900001043986061142963257763041951305502060861037014196155495397173587144860161549726345658583811198150075947561191774819968202172657181708387706799340924742281084509980938523316331863415650138459782448027608036577149127465624159160413347982764271834657616999845389964783047292050510172471392650501068580212571945457548927314512452732918441546887929317632385014852632671703070108098446541699895707352921548326472423213905055272171816282325326186325494804640056130219909849968129239071924987057866089804275953106837020454487799533647437773126335571721007714448364101930904475863751788587510827705032881103699620490579278011060075201072997467410082755717993714093506004313427345527805796176468802715336324664090438696878269439314520317410756935454303691453975539950572893899011466888851539627412212411632773236073608269673966500091149849910969332801502317061729825519547779475141783517038215023510752164206780146020777770885004121655289983245469561664164627269697402054829689176540188342776981074099345879259730568712733569878020446406757785903601061334794814084281768876114519708991825266646253016115439319701666810955297571002740969168559944098323298146651322796474855562343745712818352461539553655988426001851086013388985488213621612253089924879885608873513599851385225465466916001951629010563096492609509684660795053162108094992306358947186776159123054247589665537541706736160322953682247033728700633473330580106732276296336722227571446262893335695358233846444544527691416326987309618536451876654211114645402819408516580149025104930750268616789844240788280880443465774563713649475499753531482376228529534396513442022402628088009495574506494711412386148874678454944966197019439804263727583030959052080375405087342991615792042070706242840188883996716931217346247801182332753755343114635188185911670089618729603955727788523415386114728929537422729093865705722485613329011187594102043847284545302262821405144400496730796237203429937781302785213622725903518463752775425159767512162464644937898896215295998201951435862834206578387607233350246709797808327860241463482804120529392328873310222184287117274808242886815573126558585137722827319297203813877599558375815585663252223206918695636644577028675156232303124922760874808105228288704185542637218249070356227542213943419791734545656305040201821853864046890281655865776279816304568576600629995188933494077977386673089066463537801897267647164361875793915331167786350216510927852434781092417462931951987389764015401890393307757366764738290897939482806598256859184909338424214632933941830822209635787727646856656305899737571785964952359134198232517322798836098445983692835150322063678146696408018658729239826738375149194117333126035712065799742529430292333549612989530518867593639058838170953474919769147200972219173198134415793108970263965408534596566014119559287126558416996720677359985262591170460483568766093898201018645030544519079461194817643154344391430510256403516923218846984648811489539299132945407366289533375483553977015948580291330104567239782567417714068493416508043939807396121459321559380884533958988304252007927806069800334361986869144844973502879951762195510572711130103053585669806112960588544806303870056753202948956520626646478137279130511838859332149636268765340504403092227939658366873540115255968570465955047277602681485009556547448954041728785714094095182998758877852023810053075257691310604727282243902158392992134654939723934120484159660051668564498170848237749872370322576320743990725381593002336599916645168981098947312306023408050344047159481029796610534833744398898647574241115365567968407265741655300887432829394377939439196596422560677146402895399354629627320166808845157023618272208734564458334669319976630364473768428252095058564679859485744536770826950267952047100598102619752098594540514500992873564220420152055657974875335957113906380129952001887889736303441296203434507073381331567058473199536767784096333547305300121673352397909735433513630567198227745894691928240538514341251896438502788829018427752967093955573379393462411028151298639675202711019351830012368557013045413319267668763518767704683643942499520686215712638327729982994461885951063134808525453981797014887207024481355345611593880402013128765509893499517881094467942878154442497165716572261333354189184111672581178470399494105479428306465317533531366320773695802704136700474255504847078178028766990258761841955484824677573236720495355644770233213089610240374924033216474851961549223369570492627656117983495068460678512677535077381530127949382888727749323058037446969518964644990007137787011509838471689046407618521556399709292740232998701962630553473203608927140500839183040906745699208040591400493013122491217481020538146515854746541994921275871055441582946377018610621830787718032389009326495030371106506343314574348518353940451881983853818778373031331320298229940777569218219826966324504124619402664955551842794214477654299285222942973911687248325664692109276089555578531875952876390190727195704695318403483386712143567058624363068417308632163665515974744795058052933559188460838315492596535618333252864698941602259493151075847554473057453087532025714368847543102512481722717016848908186253371916484613155974086208739485143586087711276493369318899856337456483028127261753548660241418679965503063996833218163893984697821433516880926052418772100825318626443865691382119783048481285424200679554164982683147080313690454113454149702815944655349161451523078405629138473520557628758338333108678983207840024010617111337076186794096909819881300203116356181256535647504448603165225242831045342251569739675026897231965993600713349690550181244823869245703700714171571256006599252941320707484123200832894538266416377698330648711312506181691838706187869981543106768979325725053351500361650061550225824440504636885468985183637648337050554965924414249886053820388811144932036878859358808465022188981672757262398816442806299756406618467460678516830452084496582809328361113319611305162945640419699606312631657094542711003248553252465346672737862229014334767235313777715254151170612698357868289137279639135456077768237071215432104556683579604597454671110848050350814440046039714226273535030616406135409983904584110997674895987965939259437465539323318767279161093818273886448479951903918583671606399198402038637583403169918124140046385827350398374463614852014434370008538038486850652779609816670099948962497395366665541966634543131632659238906050734843987586942543376953980869960713827600005757445144509831266582492506184440109964120109961326600543343200846312221954412409126875238412642391611096434944281015035567198289844888199555717945290867437715606353717446385507502571866373234678156465913605589085704874100040932872362406685341730775540533154145224049883214866107296119693079021169400589614499279906897729964614973017301103338923203824798427030469881092153175826601429622167973506666164343374442324893756416978406186782025643518078429206546651316772877675628057677131287898778968408236344291172726908219761950989834104026166203383233822352107306613856397643069830862760117276328998096154799224324991489941336777737370868840429484099668839895376936580910664253245413623432524860786801288891002653333144492006695420610146760456642052582045645954226703252836323691996438809885601623842442581819415352124432355410877773010531435766245836134297945001043842839459955002542302893596572558314979798732497393822460656947268598507310303645731559916402575900230030057339664525660376137638344558655821141865068605669109877438532226844350343154307664092081343883254507016517669633869075067541429962357339411635064159599752704494146704302221476431687103275868929404054984823398140116473717009414266696252355604352725158654626214543924849522110791266606459292178381139816277028215229871599072299274034759843416527409184562942823653913599589285103832257529452039458332795512570160944227861109255712559176183251131471768210526835242410576713603718121392254861035415739758027524549010781710810010656789640610291730873366616860043455242514699284798948271842634834666888951749973340905514054555801845382647794285953224989160338358340559978135857268181925022128243230853244121226563242284005602380612423306697063621569005249249235813714690752680956839509070521890957186908206590388242879200891610479190609171918780631503335526506439366064689360544435211732039736167361806914634769267716086522564168087224630014080671763186824021322376438158486354218886847224169981826113758939032757799740930235116360631291864258601739852428822138125638038421963182664080099347852975823793829360744469085900833775698643001954481778904171161963060465005041452084488318990927859425492814058836035441373529692292034262144425675897571526562307955485113308512948620696321862612045487341795523129902942701768285802798085537533140045597188855426988319297604938177753832598351531622729288461005055453690699339444340062702750956943876164020408675072595080527726237579514188625530475736538251278749892885948472645491000116202619652686450301443631123706785930776872036113355177836170059490764730998127426617592206049213985316023228596525807191478501090894731838082439337778438617572132653808103252857004520630588465147975096615937935257768567809995868148787084823506192230668008091765313323750383395679973014711291909472396476050360484217696597444499089758948977103093343003710403956444760861463791623389945651551632443856050479135111040156242967545647896799289705733188021583068102343908197071898834085266650139887981977383198416808449785830352562973928017057248807965178545664552808121180219542653414236692576111317872128479749155788817075986385665287477403496509860111288363174008941544682282883572432955742076783918209817367080716821922892198994105195190094467712314239636244790596253965890152050475154376114499624161004171426856383309203081647580068064206321389530051902664097623583486085448525231454931469364745950542059479938967864344909108042593362405596016651946845948301001006229529575027823902079484290518893504577225439134399546124311788643230155852170671844786966420797144497453535663924463054299988291082653070414648098237249731384764598608491763796686562907441592787131840537267407158721508364996705103381370671453153672408408368591496547570908709035773078700503105721818004422421190165209877782567095987834070203868493164516773019183606049168105453033605126113289623852775779187930143523923902997830640316656290345202930183566215102641237955446928455623568053533547560018848070735512005786572367815520148583030262152414729084162299396774507781861241064271669069404467902548998512106020018230778006506390802220738649013410434884732475510541821629040391747641452421042498286976609531708860932916195134894482025795366606679827790846433608847351500213341344628973743658899431387984630361382875378637781605120810943743962622133818839831958115552960484163855902320518130123406356209336734179713958452946920678050449859249442904806844751631499404892076699768217105095569839031301148478457636904986698980306226554075447033892191389956053331154351230211062692578619632746949183359186815423656403696278772470959184017995399039550776822250094421546252289068442438664022442236629097784163134407417872654560728796826267607034251172633322296231713303343365123167689696397680079475234350916671082748824793761594692981093367932932063492675342089273986766182210025651482401170817975520469579718088554321314085948755662054701400955323818669886889965752233907190857914359810195517703230104622399887072174358338626501695432856113490729101844061023004742614495095870976122686269988168972222508078229009520898759894017635535307965819018275935905411021683687749982491376133693478785902478995912805223306222385085830012098731834298232255754521362681519874726807055421913028349316492888580135571405325393128215148321833322004390087075029105827467814264088175841440167242365540503167166624974632017803195770354924982876624209365086347120297736253074221708470338308476414273386775278704768583801873652735306799333545432638269883831298101391833536840869141005205732493795433641734350611474275338636857895228727193314152450755085007102535508622052213930435459918614601186572866444037161010182626087934880806417455317810131344376344221075253015175534031151610355398627902547156739333401112039459533905557787323422797941401846202277127175222344665101910400448827571181287876747171732007063031319737579282821673600645606859088464215087974538633911865560933184367064717771052888552024223348358646881786700837968105721835732108382322488698063963909801908126389890488769454501115051679983750033919527130545457850340729693562588850410247535778064233667611435764804566947017245688230914616999522698834524938540798934169115437677583070741973004408741428504118294595799187938176749527906921005379646051112501191593694603022345145086134973458159022150283233453597320787624002589357430664306621757160297463898071909460120461127112099682061323625128254179491716855651116109366682283264174718546573513276569436161691735474523593297071521224087378560377129242162800793534688341183245363112828350369797460394289064464731934946446089603315842094745027280341589430300865419218931153148575832827896469742666535027118174177642828615102131075141599639025512325933627944901082211388493048218354381949799454103011350168824628345802924163527230934950057754503226413480869922073297467059430050953102766723842815419478313727387594891178607647328119692602570712279531328601855753369338085960051134418515622197291188885794514039082622615950893463495724991183440075141783093396303035405702869308711951644861781173301264674704560021461253397060847944680109286041911156037661047363032193886810795478431959953507992132947871983473022432110435266538064230383930111193218961926461037764458898274161754800611560984263885573860914961168476101340328955807426949718873227800119114712233216725405447555007504257783590107188124157558078879921678443321130907480781061759752087612111111595059355264008182696597708696483519169940663898650797018617162489108180101854570644897637556425293063205409682514354799325244565859577570691556330194761518791225441449965890425106729873594255593612955871629228880905574044066203843566061181244595867443227306631804101873935681004416491702931153966396354844049953337055135326527377745356910426573437356381782405990274083913902095046807968351782342993898683918083741858351020419676644539910639978130808548291423196203329027250625262438931634827733774310494180865118193105273327503806527985521907948969339588428060434578662903522104412902875133519820436963483499706478864096456884032120264471638073201425451568620708640069409476103446685461175286288726448008047252498465731334877922471983795399377004936569872471172572284570906864119775237566346097952739398346326913492227242494473036868243693055650473371285840871619706145894147943644394838996928304162829869711479022747762435873238275889119975273452395471766524860947982295046976167119572810808384464848968087839666998299690388131621204641345284456878522240906638310288279657267637663477691407988144376414459504801282703560441838335751279077043470475909622943355601841833441934843209479439809178044329777696924633592379900359906492626636150289366723136048026461710361933636777805240133614637972487561410020732920756812622852458872761087299419675675901596001551207571989731094365914599825358700252624714887216030114732493291999281048048408870715440278600458158323517744315452904999839826889474565134992903956554710462630699582745825958471460188419512808554123378596922510721284364586942497157386090363114333571484471292942150657485711520754233118888396400369632502305528197673667493092511241093574190223560405886391414464188381099244367828477700747324510910691479544997705760843361445610096749324316543076132466232797202035346604957282758852189089534564493255354576641826315172728774034421340512397205789779254239306080476260304304416294220761875545045721730634799367436404880132763639261484600146725953076828942996653948951824589283532812104829240200560073650394435498588074499768548623876459781043397347616814503317392440393219052774708734211889311089733818407259508298764339018120955657380504917392509383624261820057892407721199820647184419213782325277946209175022152625622286573913718888607645309643189741166034175299745706068983339425185066266676400643887488403149355196588947477617807832567478370145474588416445320986644703714662626678802067105202551916982413042674628984176632802498458783969046531519492136317519663307639220584529014033718418653927219360968015467500311466443189540710358882997251981944541046790337619217950998252960283230949088825807847750550988976595759487468548155480981886615390309644212655657402524630807937181190547725669785275920978663376970207896253899920788763375579023915097336200717421200495100641503258204323048998972140592969378338863300529829714440510904612441244610670297693274075427450801203267439557044445869355799723946635394095622609192606452785094116472058539974239081798013467719503675056607362994040904029331034250427268727788374259884562157132856517171911946317156307739169369163619497578935439298812570042730463072903047014354457849769333133734469505919864415262190667661474292337227371701378710343912241569267429549662926844355802966328786356339134315822053506760287748827001032968521320425958836483759971370619251148376019796615399187522478931626333822814793425809317907522292134758270858347232046530054913993996098086042772016795583772416681120301753727277908062375809892990110359895895900077121944756870363571034834041448845422309363309167891941591196707848406913449345778920160206644185117812925591549219303669598118097360557486600490725415822826084558141259687077536394957984162675289552845763679670003667124205873790943624357900274191624646009333970260580684475683864136636433696219438928464976494684920008360078683213090933011735112755225430124614753715555381291698093926014162040441124981248479758617768648146520934115000136167592327790603650467154216387811959864265536349769309569974352751192434529081398900744534140815849578752914489522324988870214098407139610965823091852877422963795327243596395534925018481313250659855307711006711667439596025020803523126901615797882030948093424014248648656699141761053334796423601772389747253842211438752345154533518495037486771659854621331046014452130656315105304591045279364372551555174573113736530941562065542806685931200776198793345713165343961222147787174350076215336968355082581259276503360385178506403423003335087102312677294737031153555468191766517198894687146905948925278078596171534765424686425442432158036554282428666968171599405838131115225185881729702104396062006279461622837117989810889959973303004339977129066030251681415954710122525707267202313110354466902493780635459693379810153000297649493683508190150266362628440385478614737685969196057139113015666006465559241665234452153894275220460049356613250144462626267634055089293505602669527293971574392092216369270278911280280723596096044359071652750117350222984648752697470962275820349002862653027216504143123854655776036871687409775700260664735650513790161063100391414749348667405015031248292892034050818231125186112599637582866427360261359675346647772756385969184065075051330676564764821000780217956059372488092230040788942714293177272752512430328851933988012510955615069296604080360079955322730820633630032867056408999444741905887982902774939921953727326108527753673691280597540474257666739565199397618740451605060951651558118900267308037930778552098600343257772117929264906273297416418703123203207953977544211613411519221609038275577996943565168448027987138362237982400346289366641777988838777121573088213546733421299320229992535834277102120030998892952866034155190670617932442898242076991684515086389140046863023630597614190888831831234860451744722097161144372852271805072835809313605676391365159459038928549334404736017777471202482642272715750176951660919410986203794982427215514190099853467499661101301365430809494119720188066307377318960866621319757302028785250858177389142597364805937587670027555466932343676968327613296959350071460437122108965849800667751129260394039161271799693326680556763106622728847180436767315621805871087287855103685924845794159963095162544518524179380495026247516028116131263635060941879533083220872252806015200453164902372843706537296134352964272591701896655327168053302879488131132956759923200139541205483951098880793141666534123172610023604712888200130118945620921678355568040740153314451555804595645452676050249333288505536359070388157937644130223282306363506254428169187732931518103228963873365758481498817955665742783919380998831972433348646843325052213016485289873336810415488736134283445685269192714956276679191027035848320016737709776942318719062878453014771336186665121176823870696669413904038054497197550527512285796244502451656007876511751402555937804563944532785432251198013689231265900387478357844843946941895149035289084006926082984753716530965761524036786092759532471410459957525045216683778092756766695012997708174912834908055541139909687740339180864362746180760772139451088655723338650301863397918123473334315088303592984030169785764075668446229295754504244578625426586151851901104787561704468164802431195742090099303814901601786730925988217315800329443791038499975529980933602898787723847970172111741929303079999457401014580339656311243803071625232299457749480528974505907162830873556848138041322986406991390676976347916485051107622496452121510000336123898696304045455627785349560415058139727666881423023957353075194894265496079677770624075001645353570341977901018190735065927789210403574266461906533702773541247932927386977891317379660296915489379699852596548500722827633363038967205905537608326392921199466621891066824335392347302006534745897736572307167875682511373059524678446959939145922795455644543232577424031872993987122696829204876431334032405401627220689030353123449172079928449002958822352978996779611792763382089531536760828043247479494916833901664787297043597109979026749751330651334734089493974468593990330026361355658099268200605988393412615315080067990955221488073264518633544452447586898520956621063069530253436915189428496499279297599982852899305180706865636511795763892906904542696242846129485749853563258787168996166522855281064974437118254690677061720204439420312540822397801860297144333166669614487063847689820958641347632092705403999073700686852391847174381076240852076722146594375233373308387567076185029524850908943285876194340160199431842637513514175722485044645506643337578026592069915304488582658836031481264236021372431741323728249613170026262975259727586047749712446198105234975754404798207015685292030245730158006588361393653928545481816044896927928842381588049624691907511982188209359308656057855187843401576015672143733797943728082664999259596316608884942460803781227096072056128546630535190130562974638117214103899780550825372511881759787983338478643374668517377557720205941182060002250176666562815485180008876905413430315876175184049601395727988478368631802081493471774642081573829572776091365758198119866789325263563164000300876908076913394559592966106279262198676525681869885513696081754248538627584512630532041708221285930673230709539933292008754216627400253475519842819348043024901372121954042538651845042509108682599560324000453894651957457087023458177931476907005090261454650391290851243735295664110606583432793639913101175741327128288072254617713988992779414257620677256618324166913364664032792391806299540563176429166849826884011834713286425176154906571590524880023110883986362963367571124777053059094983205717996414039088461354203234182721972461925966075193916672527715266683465512630047268411674236730324457702741734757014537999197239010379508214440063002317983745648305375586820371056984940205386605932160295142171033140962070313178644049700375701616703311350216001330260062933236496247504379309041485627805507152771337839046520162488723675791552919764974956370750642424890712253397625362479345025572981970596608942443118486951416238467561010838775092078668391429460488664212061526633388731693425027393890448654531572712565687640226033418834236830425857586951473915989291405725064990611287881824393057501314460631276551825019563742139038002463323436243667911491476742262373853098837712701906270711011296219019874863988599990466126021707990338560729661290395843234229270206652388316550083804645816333887262672327933308687601162859711446662484793632060817491174942823318045832117497024553766775739427722925479999465982087245540752451357077209617160913260429396298314263690339071251299412306476986111674951900954039780919086933333022043369270635338784071232658676749896987217948812520654263208596760501958127907630817658695109602199047177743651282267309971491636247081227876259409466222155085220928550896030177358554835531558847835775914655119317329123379608258905299854098883490578445730289562289883216153206667017680033412228721293497008788322476468866670192766580904825809055374324893858775537954958334362321822179863056661097571593838118536327117853699259876393178754575620880272169783622101381536118764323658515478501679609698816595141378896019777181199319463602226514000975116584435980963279182110178832449774379929506259538675421037122745632998917423032981734868898928186588706385881408997081429970456987595652299003805881353438268204974038338414297366073679581363827784635397047064763399175137864852424553526706315178098347525774357605684636225364328316144098734334074410072806210716886602852092444781181554737136551103427982211100006273903011265167860171105750098756393381507198325976416337794670300645368198268842264337790764509051441658644540444845530018695673105740358758766344223938727929821505341725922546656232800412322397246293987871668648150053979944508075816935305183504338450766777913523933675047110227652348793116021453762792034425570088932446513515397309637759316837959851524498417530214282048872778755792921621295818960721143317481493233266300306942542826428319146405512406387128199422124935423506675066126958028687157661710829499737641581111782954561863735499112734115807862736033729547210284789877937738023907440319351227702584048780855308811675549392533185684705942060205033219268659104553743536883696853051172186900955464353099360287393763471124880913817642498620430254544435626750448532624750821146498615911977807712252025613079810955165702702688851554336979467277251462868965830771723867348705593008895680299718726151661758781199530435325825910413923075015682953082446024818120203157122083204072751076528454716131462724127632031740802242833660081513928898468631279334133694117039542145985509937175998714480800041714241634506261323607194820412864466769468851852087975196676562762150819908943910592872793954092948593117172449223826610772024497787264607548450687102111126055194337037988380720345051234635750959997290498698161361045318770833470651720028797018168683722224130050184806944870742221147678958172202824366605837350943381987988074853295612042860783910624248278886576256417422332234153525721836522449525251674246762248065382611865857289688836952022126948557140226524015605934874994855456574048538791330666056042199227575878186426801160652244635483781644937567051849934779202598587501875205647690254665431009153667160707677060013814580312278854345458841240022701868562303125862408557071934090582181093003920566106646667073037769112822549538831295457603680268605200841880461404997426284753604144522131299512993402892474147264964308161060985918723120329377532665973487211580032309981056692174745447430650132618388181702231889629088338203365768774102643438895814817355097324635394342232405990615408304292816096288658592745297050503882525595328052289001856427972648689212996105964095506158294989356369925446746694581411639356421925493951308323714234313460743992964885311582434642894972088393696303134460322665880391522843090647664640234294017031474454587493605861538382041290046740533526648393838098467795161965085781861448115351776604219766765392186177068750786289443976988201398701789638740347859250081709961574526404219943033137049146925548888424305703361313605364445080312367533353803195902122963383156282386159975338174337464518510482270697214655937202626586515597326054731087577246741779470660685047279153918267096881742656933271986063956515126086023887279845544743412741070970953756689741136125918807667027143958371309161419898480526299410559288956405946522738885183544543834384526557764981718791268604736081783878796249526886117902226203703193534539870712384016716501668446019244159901187195657042368832789197665177767522597452492496703746561752404867287692182612157483304681523223744259808970992976940936394755431720084814882798645631712446350310809451073250603937545919476705662913690572882645701892164484324435543010825861439395278222627456248983383019702684745316003022650049439222203998277318149465520788758654684670355562530766716832071852702596054380339129885895587898596393553215227754597984918847667354262695071659868243312442655411558042889272960439257801039671596340486209020005917585310822006459850837246440305465420448615864229186636407550169786104678140552094979595692424093947122842893664157776621004140431114315523365881486602116336411766694573598638364480433771253168705335729700539939725112058708187490780045624974517287181940064266250065525191309218486047531186704631365098742421999155350445087051402041897140711865048766171736848632125907358617329942672884425990451678931446800114499788536381594806820179873821185584962563436015682948155157320463532266420616224271636761142973535791529955133887218316409860665314382206494249082950530995144765271789516777203576712725648743549911321166649647703638629059305505635968997876267092001541870872902036522301906931105547175986962515419449405728726090085233445006684951498585050483544344706331806312134795308074574960442804955562867450410425330618630483066793844774053434386306844574431268400653397332404932780159491786635342254857128929186265767227792018420778422776111471819980690727985250712041828982109870649007924329055172295439362789235399616696215513075632029380619184879896557790430485577382836849489456015877735760821278955582091428751855023032433613624258101702686482112059083598522643794663855827438196808121204051503748207743391306188993430341285703192093015590364927632327045907890380995674334736973350803135032128200104532315625629370190343288391410878942376177402551999055048787250628630386661736888330543878437653586051791134926194244793378613431889601816032840720314214934147742985240596765804538870268513541306493273560448079870194292365391690824455849254828814784498413360899476927963757192731498160079749536965877757303077688934197814664056267508370135077294268993671340928263572630074596895764934511632114981935443924915754720708716401303938911077351826165723797702922874078932148015655242426524771530469949576724276551970832595632960041667094799640306712172347575440537755185821786769616376649389122426223074766971893285213330405443528539672275851036214333258248117832921073221842700730761294709865171248045927925002176264117146977346338441290912642156939033444048394509092802629710553565726742192881212226373074630106119363320017478066694510063939519530115261627587241065301317232685226998733020019604323773029012705669667111610611584278931195713558279403085709207130939957147784352846274620866476495013903525957794041596664808428639804339957595118654671042814956536034707782055005376004517466090948238777880003208426170872585648838717289500985515956783161181726593609716258770114156280435601542062047647240119360964756057604999870456402396311251212697665967836410625293599661724432634521750854015086252333511066071850775266847693858330074612291407115470831608385827097629128073382118565594636626879549677215338602481174907812393747354790959201762353401581778814400161155230695914961129423155803103634465895920505869478895253109373672541138485576583017507005598309975987902794170225827843147358916262419033962947045967924738620071241375009539058966502793705915500404144900714806710590840002364238745856713731106846251173492329939730986492679373702970284168927699144310470313050107367825382536475943777844314559725217850703710203240188968157412544453657676877681836897529881347885782229751626208425427228205114871309952660514209867995454779311897145194836728432704771200961018895165951409726907726229391193941121854374177466957692273176154670326400130288042767019969828492095259246185950913429777590980374109906538231957366643381683206018931945436907657901616088822335517205544107418839157096120838941961981890087794503906747061383883335328873076015978720220116610636645370124303153676690955827282559267133394187940374062195389726580273362260423569996733263977156937684430986547269182015179873933887911374707504432351345412343433801610902184440218468927832438752692855409324897141134694408758916163857250079455573167293866986789993616370018727000009345026253133554394350886807293590737819423116006279666774855018256254040617263247845009698688669579763243002550210353498138436440903929679485122946021654156067958719145638072667445668034671499225952528591215746413226317220264037749829844946793953124598647113190624703234316605629921699223191240671122904528581406602133731364336364371457090298125108574845765433649365741700948373324696872213092054832280334670542017063464765541387520266000516882541666435366885143087222424262422260478898387908840329449411165293017695246678838967289054516341026748142109578572537432343932601015237124986429868932459101378333155530891255189455272150682179037954502707998135128256409677638816757637077657126540508640151949636124212562011223962727176585767964051113842390749853395197160501821091544408044180217744766627710781880522988309778078226849424585750453995734381907894109136336162709606778758114500035575894485985612963068816942844979560496225369417117325368608430257683199379027204392226363091161132441138987228035464915154777458200045544443825122505281995017319572197941231807045316577685128154830225061848770273087841732786493763529628134425353904281488678242423246311279805270336600605887853533416674491225305818000599858740268815258486651657747080126608155815391855439989217247164908181303912769703706742529899899804517926004186611124790092723511974547671187282804592424667411787547146120825985464364966735550469488087959789304193537838065891612581216693566951864460866283574409806513276041616818386718839573836748955168334059554864603633287150305823195261731678428327235356299932620463684367247355711452429629897983936980822865564429767387351184144042423380067770102163570357043577982820951077129390022207836444960970079688671678350242736594355943023325355426305237276564973330075584286695309839213966366299405119672234326848228812772935351178084220765384941086069517653410086587169597920567366963696204048591665045282246465045137553676936735741433085629210981230906994613858910275080115370692930157970910598593755669555967260517915132731257998832965410101001293227481776581898592158863932002929926531769934562646586859078992567818135985276248563482727340059246514750532778599486303005582769184995604219841307146692080439039955562296734947597515609072395486311748616861676746722861663955996064167430473762029009879350523037233177230633354930305900187340731022038163230047471234230856427659490293128719718325661173066611641578392445605492085473845907461153534704369041582477904940052795953910126993382810725169905327430029822478442253043580874369917988443807568282962345560739336593697194586377687603064915891092435489778760367350981431674381184016632078033704659831493301982424878026040455548722987559707898839686855047447049590095220117002950882621300589443191840904581618504819907118717406714083595783563441351352228827452868611760487939630228904929624998030937636666947517832269429702326611808203185319269737852360924548064770649467563871019841237853735959485295035247640592718547150033167989458030674321511878014664194093914373396059141585331735728635740633182218387375055266997573384340424151740654815288384865513791183320517521339877019364994067385001862549252632915261891178560304093838978076311364752925601499865457710161185468553960661918970595446392791699369584698131901528240459711390540727120415591842195344079071845857689841573004679712070388905471988036152279727116073513228821959853070000986280203501566492517712845969189112203211676329031993239536138625158674934282877244510156905595862235479368525143793098901030218208257087271180533959834065838531086924770360520553405735435304858689205076348282137381767986134850615408907540416226312892553490692406013837513998826945856310991960960029460785050843401764651440234312800992330541697185291321122167678643456836583411018890322655806094776397682000001281982102298324970319277846052315136615322753049361582943383257306716079564921903297310371476407554975734596504387805654385996128671104365938991005794931387817887216742144229389609038056968423940344219971797602806974954715581754643783665115394552184618160022337601114739386192857339790619754134423489476567916575168829822309170263055097383843895646054387784132762749729632526933033335431951653743256637422231261615162696199210995444715987161167771518167919306086745938500479740709778677623530656703829378496280458718385225843031525310955072245669609170603848666795363319535033435170015117351509235388413003920494171412864064330998161454757569482621379218718554609863995414383172923596602995326068086552212353899964533135502731714346763213174671347099574846525731021463412560203525576024120903763358174315572433334106269933209082891648807827009689094110800051642371483896858584625515893109635645568620048227809356375387409925270120700893228783537108672204394798683700159313510614671982543845772636614711332143040806743023472679527687127870357729321535044739888604440760375952380261318894057881834488326255093582453057204455856405212881380466507620967806364341860590452270528074393391735326207966117035990231083218737218682118299726983869270222859997984445055004523129702840558092927940743319256753433834665014334587905663460689340113147300703513247926940234111001008009196945839563527389683657729601477239470594065463767243457875189777172363798887979407333959920824012853079500567380978713436390466107575808662044519103612840090625582579491125965747984395033923647892112646556581778187052815055507672963399155496370298634594380224737526771685463425902663229314166531884147106272185561206058974785903529127839335607733127962498155841587797382102105285449082565978141448042750797753892540993987555400175101781533805792736488654787624343532364406843116714640603846478744732058098022271607000072568256652936555849181152728606490321850496782370713489656257395658210569151785198095194577123156902065484719609746896055727651774334418848615783107424342554160732653874765364183509027845832684844382747684451749860727778718065446037616675317256568961390931406987687309853159743851893613240622935024689202054860552358911165061203092892326628892849730501816554778244785354542396231401948880556523981904971274313551411255365825048826673718523762690397013720688194783595313554782876139917771968200561098534087675668630309421068694581138242185257331965371039556291576986857681805084837345106077214426359568327810458130553630987585803696529041007643873288166448784266126020207758908827681840195318483482986711862532864938020125270802562389898544172898270324496696202459937563995778229597691679783040057707038200384242849882447058799094583116649216099470983684234403055887077194364000257976525676618297283308631811264373099397808110721165028845594385125900288207722321615616778076840456721541255720974290758878089807646138543403056299291296745661581269802675164065468089358351985341118906781598921261438312253990304588318029349988265513268925869243321891091440214878562734804434608273965815855908331270665825786579994264413503662288120480793424997759552994943445228163415556706591642766826631443657075876751223243671676472772629405764613101528198745370486361272088593233625056931058777316740482033615328196980488134779729125666154704654371148620685300282335982447300885781220551878320252178193472587684948278460185638197893344335553188904031650360968480464422851820193882230419999080206988035471049116673839754464422626807661865546407226989518782657106536624277839835856633094343336451662545903127054876782429542601844107774955633527482741934772891212003144052774822614814594496018977063958872755700357794779068127322427643365299568092438449541290008415254842991297060817923999199767249546755200371364884585817058214683301884176698597244608767524078526218225432147715967869627989757816522784900618393293089041790997600506574803307044543942528886509220104535492568036123213054239344479946566101742000748642496087860333681092734418162125430140551028227602781914455794606000369295963646229202313130126020862148429651445347743209297834478526140332235977702849731217183282241858723903405521606358147379728907980039272734538429968733080271186573097455714709248510132982568689775751307796834577613846380566103961597705399376068636291101045229358028394757043456240184872933280834321758299591319526736472744212563398333993261034101897208014791584913715503453818562586746872568532351767424911983210303256969126003035025519922165061548629334803171820524378200753681470065184212958200947271634850805282677699705925397189570793752114660180247654660177184355910814193395442058684371826255033610809366484025536558901958554509319037050571075179445828296600346245311033500812002082151488351164176710168403822311526666907865692359993122161992225420453792331942952111105330749818689313871336510227143343167805139021267082447835873170375719492632042393308000232036453245611013989751682963706686564361755331476281405910147123972512912098464364132569597083771472334947706479798631357733795492588684705238645612216239765924003621266778811526660532886616105223354909330066297980102616982207374616525451006043653515485255179715488656944611681655012292736042410075283257152217643770897406819661490477392627516170026545124533316734744979983691208988601851398622534881816349990186351479860446625976125070199007184007153638728690244381387227635959824073090489948554872428154358933666034388939751835428166406944350951334070733590471270105967655656020592904593649629559059400190576541170558042498196195743939695744378573620213772953130276430093787537389210845599796205245540269297054474155441061535730858943946236047610700688487176746303628842752068171236605524598996072796121227396267972959941874711208411514701852004012237824729090232362984265120992610157704032056021160900652812511811850717147790464404910917370807667831611914413653129092089833864825304838915381070803428055887599985285347116393230075257085393284334379927124720800810245208068421292141304782438089659122558066220031251021813231928759997665326624019825111095881240698445944785042967304594397872737711389950173631876660184210917949250523491643976132205422233752176794560942220192913257340646704453972340724445084425181590681242149561518573935908880056075216331482648205263927083509074471763110763081096905710462168955824868520169170715730245313012202368063460283354902641769950930995747325311057499944935755781218446106864882074817500236333800121795803186655666036338384688113100930791306437140027544050371650322516050514026326238533382905810043084461674631666825732275659942045537615056587430084598611264805097607651940544974762114880220597578456052917380443304920443140587990450778454622862766099439031291949387086200043992897459470179897438972948951397612843287786693894844942626901666635445214602304935557163150378823741942527929593706767435684399993053527486727775103718792695445939638261442473567276222022879153116467491324824853714027373004318888626693952942152718182125601834402637765507280893663167898714032746680679090872203579139027182836280199044563737174702301253273881703576915747260911041213499074162017981106950425237665248111034337766794148979656243248419597160251451161353244598870972232841641317357015911522823977963643286047557140731209674564370988830748707924494029086893918908967119177962052313780679922634658619179325027502098283268801080976490865823173213900092167566799821386137884800129791943188844995778615181974508212286928566095974335500558039930456145757562923745555221576131794116646656347466934004455222730839937627924141741795572063834670217825034689020962365339714401113714929136280623485339259879567912022224879586442801435365977948524701461066045683003212350401992556001765018331653733119167504454401424318038903112628681479031462608763503904821308272356962954717280766049010171974898616352725966426894229090843240669552727438284873533048909121348725791168496980549777304356917713476236659636550316410536711302616155942720457982155747680084298339298173507315475123633250524282137136293698746661522817132665408067548347548291020340122839617146150644247959256137931917127273118335048326898453449322060219300757673295246591868881566810117492778597442806847962191709628818276007740301440794153643159580599069850202285440279324412345756553673988211867703137983624876470105984789349800861570021338615810071563328950595853331411913896216075013028172291545592448784719448474006231168499809041535319001957943768163824807202427058511268625653236441086494373356136530455041355867491293690056537979105876144719635828803677515807730741763417226454781084832462550814935997988581478011181545543046816751685779682068384028955744217234033935461295125243361759781212744716315562073268538200238648792452464316769579006765495450963685646255889360017226366286761928046801680852684009660634426455343338147126786253532009108769202521733439998564264274200815509781445303402229983789817287789225188126526354048227491294921920574972953673392256005835380129528588093141658721001643267307639478049407318732308422439820330974854251179451903727176996125047478411917718794821802919455893375082400157837192360772076656548901951113244195586370971331756644460792042705555307535422085482213654584894772319753916126121638042324641269035493977723447190374576325082053417234850365146450217585627193066793006686503836372024748031124590487676179443438440556406351646571514609610467796584088349052768856783381224586928245241130679196037501815053769622079537327178850897894094533904737402265482287090010000701635070459494803703548045428741500358803259743337946607385424907533440864924942789978234670359444037649443500582366886946519358547194413624486794815506745194380838607280131479149224133421532673899371951698076556058620498470749067567285825475710233839029098340278839838380883705330876313546659233219881708071998526528433462794786586945632409684616612436079772470275481113952320281976407827184242609150566615205037827492026814457038604102047528388397104839352565867825030864794099289041352804599205127645947753132735555018568352787812413736422162992444144532632640560231044813285683526481574133804015086704805886790684444297331738323566920956971543198486611018530754437504916411242039166984800970156490874727147953283789284538549545497523142047570093883913813683955227513377419454815177852189751276388729563652724481772816174653579104350470496209786573019215897907081039572913827774471650148085274546402420923119686684409194688970023412643650860843793690123134065260274980023751550470171612824522499941253450605329432880825567857121654104245986132291931645109743544562320975864050641465358842062995638476414704037461255322200043286408004712541502765412486714245921396652438564571970224943120390786251594493425073311543705552457592754562268170188539179024317966264734656862213434488419730577767915739830948022878359142644382949841215862163385089197086763402636100371813480677827197339483793244140766358739396190731520430341006373765198907493901260043135156898453621511773757345692369182514890273353511576567858191404732843475867442192253521211791407549109722432508655304569593797312183882996367709454219409626237932047222903901014220026601463836593837807341793085962450734330524699828303009493085057802924212066411547587778762937846078470401177337748467243675083282304158034952804338076572841151641045675481680804376154625933586232852745375350237431074428227318114248971416551755549874211096687585122864460751325366237603439307924602927764459741742135329916360284796298897795758367252311933589591222033132003307516809740811499411969304475273579679160388761054163055051156945846284346926628926129036094453507374380301908102687616931203274962142390361373537315393447180780056361837014747114723766591927451053310888835270313792612789477998687049415981025629154146619356724465080411163762854059502777977285682522921961397520758856031178879836428092005661696149020247228773178509951233068973462979155207085881939375340690162872548506299873033988440933733270778286507862013919835064317591701435895204088001265204380796189484059407276848637839784817242284316250943099557020001925735084568222746047103961902144167096235875635971716197654666165466359061612317849110765833641748261335254136282971645271332779613565775593799770404460273858696165460319727644496882645090467321829963617812140639877639402643359771199749539141581844884037355361289784997399597074053538336887642627422665245749460392991510178862904169863060430617495130146552078104862484668793109188626779137002025274377258537751634903285550875386740665213352630592436234370948278941509389404140744350489059170692766737737432336278273572136156961175496810398083471852655668797231313332688431178088726917765588075735256444211221747287199844936447366302829019420739933542171306153534989128372968623679398144235763111373539988453059348893945232803520131322276987936175967705281907490984694209827696630458615566266924933756551786018631254526880651535182975197458607789792579514441363546480045910610526274247592436527119881268289461583080724958419130972204596402206553045186963710509625178080594701403319886006850638997371119988088607994093730974581842249744698286503775197630336059874439180354654500061319561012591920088266145702504222728289144850136553737172993997657234644955928841074759875857989324909081190485786804077863792685259086580074983469923363630928418233148435050111752536995389879992162107780589748493710220110922542764078977848488426823828218520043682290743668331915613657923866834791257875530270572483869322208577466097973366500111091429642084957350611954499514519509482444009366337597730405863563765630740967267803008979803176695649926065732243480188329370127296547401280888827995537417159448529944087517640184756557825223520437620754830503329609046938177705465400841443366478060109201058984124022681875256719038048462070604349936523801863136612408197224825453725679986585545370423599706248426590485013038866819746766070481000486052321336255939026577542461553083379857625971104858280873556243946785777039142396810505197282193082229284943023226670931331862866227550003992517096852793538396704411816685812280025729035472527510887151902126852240376373003622108726047146169899420161477585667497213615156597464682779088638737812743627232997028728179210541995692448608780652572825237359705039146939183172977943118360616934396154860717518076182508236879850039217630031969547375627691105368001298802112585509425424614084955133670668994961575636599846977772543874666254848900434101941773191540827328091211250595770529680306938326322413837150386260839392539582861322831234280082076512759162957683313951263884666041144797095469049595125130083453064722893075862056297367838350745668294241667926885682874859548035909881167583751576198035350061623095011747806666011972375775382253430510967092886853005414967792237497546662720913951571559592797083765604908446142111915512633356372079536969490023389695826265185220668622974523389528287339232380733207678912457734251529494666888650662788669823306759482124791774611225720054475274309040761717166116196678608733462445197503091030508800288545519687426183408895401812472543061740835748521708016836417999987427933266443615756806700581774310547229834232697310336148441625566799196331387335425850898603426989083261112790393368317451059094409465989449427820873317661996626491971983310889970507333406044454464619702911195926008076243210570359066885248010620666966484221695659002363883390605055985729017191138265053884749683076816837395775325482337217529601542789526175068832073197847213970034657316417787653264658540158344237606583473652205053848805258338771207156803794931205743038686004950628710567897189273431650600331544745846756438328325229997845785072581199804972664226736387561458005000629286685830465802028053008079400399739093652871965551934624473784241782442097915077424826734097875389378823393906479737658783617226697469057772587157630403064808320317626138446624806994003466382837168192816354464430267237555218392179619457082789740781235817619509529995840004981244815087214594029397824234037454802758604287762146461170639647941606794343506351259648263078723695695303338817817233150149409080118840070250610263295321790331565561513461586112662447100749783309776667390659961070187703367541474366967244567383865030985110185050576740972341301206947890340096944059703625691177946098955305965713758462882542377259681094848806386605956604915151528634587804315843999986134684961272764627055336587150987106882210317411011965821733027320750198368604991610578348596253576177607237636397954102146022569860961108223462664269004091867826235142555732970144690770631684357763908060706339494616654778319963543678622521105307313051273852756195426487475195967073281032103737743435792375580279763163235721219832727464901129963078051921965568452777389861025919767426241796017822706296982685011394970347709966042190955853047953712603147920416118929704343866133788297813414854661784594992025594523424332331305233004765144609292318256039611208605425604658495559756901187367040121629963949493992697620735660778984116940748846719175021663148446316215950126514093626572424639595241863579602039589261368276971827731086927528014088686586380684156369924836652760247250888027296632853598138572943400962116421228534938796438450782658500742734525210840816507849306789600832711989023466998916428395469878895265599492567262088028196000035567236301031093426952656340563421493261605956896651449565955545821230137895931229532563345175787148082521131114007031779839863992967884707335845632827317976867694968969843906100086695548464320700486111024705907713395154273706785372770344356103507355336205877239132392422811009013113879055817139809349829364805513119656590803674098533240413856638253187960679814721426515264957576083266463953800257772394181321904602575222307061391207706103053537944152685062910071092952747179271404887716723580817853970058625650732434714875823956455888698836486481725566804708816566366936331833352957843330594160130387355732981757169096608600641488048901368864131999623663312500928338811940891284401484103660804877576247818995108435984748779366996783346114404666269598186197407619641044387754231949604463592952224003027398356252381427805321166668516087865791527683052118199968879353463882009693312810671049021129193568229121231503529796153771710157668530187689654050749385548267259282552045785808731801726413092041727019174536134655109950536724552002452366736761394075288714782639845894253452166506044690068282500642911848163564099200753473534746731173175318934917964324441533267539486701855257747619738437529111242322009268819053017434263732805680692893116911493053704617199401900997437351046275241969668000763550554710768699909401420718556549559690036032462477885007122013001633710483978025573885024720949521397956060398763526249184683281706054860402482265863154487240522981635019015486073381923895353480143742466285259226775087785952485302314025011509928063908740801872583422682264404290435932336282187151561980093038221597678402121348216181411107651414903011184748596661552895880693006225275478399218307778508724533443465969667030852727457878826429137675748935415576867332994607548077040152466601185381586224831674781063307848480560270609089049156739888965182131449041864259651313401983146948104302748104657258092464148103802390071015569001041866037403205360668017245275068468964597046544531625950016544379289296234336411641535049043319398689509840703099495213414007349093237785803898680541017601326466396767220847515335956718571562741592171462695903262880871139326073542041941519326298994599855978798280155355061210037631246822479793505959428235536317166146679069224819142824636797852354557164112430206414227667062417633581485908035943477125652274143753326498200314835021456341001318385816290629660381596857685816515416191944233728060740968020083093955537068726091128677344269688483517647242018250904748993258750516932693593147197760270398299255774548844546179330884943144756130610480010527498243619739203478974800933811541159004380208655648686592026290237709661649412160348353096261222743866812342037455075727680536277884204193308287875616459932937183740377192973562647458799748343879044617323344602221230887264864722107950820110840346007339047117093286131103569650200623210506362903305973564236645087486958208593311152263289697413676284037329924040464237522793459316220881741327749620268407417543333428525185887262585660605848328753665862769164737671381767941312154881324008872366474064178522944663210455320831230121314438146686810936946228323425505898418180022847248952306959654158153886217100539549310182440094023870616120496243609337001316723883672422481606494702034244695136683097642488816493867072057529758078964938978166559564073944943828545642314598398594918981717747814339817155807313586346726515075304310269591889593596086268093215145381079296257391453846430991549916131359290115823910920984751970825372209154419987252005691523884164355002407872434716316176309234630486542456033298254350046664441805541234371217463139068725230005855262862920132271548358121451399414080297667311364478962693418978219661476663170109458704195433513580381140320741941848345674273850057639443067527880777840644687243271696618001454895531479266137552966417904914685014594223107475649495478615496796810145344598181853222539525320454367163984079732327806686617170911665688165818641708824303088708122918577018691973787912467835707156053985035436965024798038451737723637838809861017545575089396770923954544135349031585951512019905409226709685620051705968647658189503119445584720913433036488537168179580945147644007313100020558482147771714954019137496075566262897816890251173275367526056326527691898110845765558516049528667293787974431850517698871845169337138828247340636621999369819324737565453381822659494562932896991662579233144440960609555778584941998537595296403756358128690540393895678211889423630161332905542104867910948295724422891465544145276247875114867953571232372406416889137416696662809331569928899719638190122070403084111211874966909723677904578304593167024831112819105338496715667410557672894605581591444618087882753752905187290837401832075095057013230179636737496696478512923229540523802283006578269583690703156406036635028007176099867756729733987715856570123855496329620435433957856026036135319557940756803407035057624121683582404994406620335237448636647319950240655956275910253966790568605027115232447318621538264451304776995646686736027529379304749409323911912747139000390092342760897031025393712635037482300271953449317723322067566297885304285872894684685101580779067818985450436331477189032705772942768807103683237925854796323494560380591390566635321728039837515839269594673698110170616248980738999243457806259839389336986273451742166433735736281933839606463757857033913025097926212164670552892702643492688596825559635384632688842336688856177152906345557534021021383698860006767876428045527829589370293009784237199702352918929121135638992230792515320568282995782150741958221846242812096190488305944217159328845619186589506112062614210006826445802275297475954009946275892054976196782770692560506747736094502764588652325341293184534637746075453361138754934981321522433948080364017040617819245124092240398475169465262121151759803899827639161791400252921823666775967800970907253987244222397335794582819605287135115680007540308164192991631659600180999779285306200297984868764841293369901702835905396776239364268104236816267253004874846720018464477796260566115218281603706368290652317437216798527158782549054348876169374859870612515696583637940268840095447788447671911051321149208945876184207748156280083181178524691081072615872023818485639967934743240472280110197356615294570871848714979185093253691612368477405025471710619302486938246651601278042628676225833863835186376486590252732762573476389246344500142464568089807551777405167519454619794816224223385832914460242131666585166405021887873583290986223654704390535298150316628746232738678895273505195473777722299882106427491009281513712006000204204875545821554107602203993656655569057906156976230020584385976824774721822394666987854105974157153697225715508615528636716346739843704620318420321864594882003042111254164258226079056841048155258807673250695757213965905862219545084196005755663229351011779818462936373083656389461421688248972325781291207245852984147588944932543429870968948185077404920297136086868508108478074639626749972752641265424862554995989830304230734973716663782290450928830367273139871296911191799520104111034466811674850673721671665904384671624426285114083168893593373554054214282794441244199457139657350045751080400959475831901645720891844677783245243349227168959410220264242163779587104753582812789930444029332823963450989003921166969564928446505957747723006558762169376789182219334558429223515200069322255985662501532565758718441873063603786016660216031422170458615275540942364451410956949694228349257856662236707141368941217159357573775200108733066176963728262940561425184040905351904241809576603290812987537477825298314254171175574764202268217308532730001094731061811215844800342391459442220990664045719982267732092241687141194572877251876116851255982917756163196023933920646593413970098259859349439330704870559599723556793768588302911560900638436710058832998647030184358583620397103749277633262562960323918416114799729002503845772624473106917209589758232000118930141755231316138028259164702235593873851620611938886503342658507085868083430044785911227830052839001498071298942559159714018208956486591229670674374324233384677456554582000898818527208602475209788347519207931811046741357211437059480838352931763904721346090115322179352808395918370098992408193487046297032927562708233624275220835794149000564547153910373643734869195145749947828190025685842930410442299262367493588268235154926875877455880233028153934624554004914870532419422503567038323589783406418011883419120342746218451402584336967831608494325849747015904139798152791277093573317573606264383601264134461255773340587640241204351113649321920942975160784497790286641442429023221662843651526787479525129353614236955500862637115006791451082360713735298965737435487086994035507773791394772651111956639350613631702898076877538166218010370666151049264782476071012175835418583737099507334361802157765029260332649104536351942654810866175241602232441357321279007986637823766919366912588617464945334269753965856845055228963830616449907963106782629979794277910641839125519803011311366711347069679404287164111663745104363007430783114363748342481941070807383437512420322677214642265373339617728074742870179353473299607387328933606509033707808376246831576018124495300144834481894201394713133687429770758117957870095174828893681116213412378833456398426505883898063491576134342337458848572554083016091257656612886737474035209518920571540650809253766229617982535552204487708571177255231496345713257805400468046567754143675486261934968248015061101816087378897893806158316767508450204168571379361537812498431918838037738252180918206866108828274214814932404160206749625326064177413816283164926447622935382285724840447466781255766202559728332635725430496096847207457028866639639651843793625841340464656169636963507570552465976982565121080199848448441136198341925962666836727402844520496289734412904670187138742855538473457176051651196124161130317960810763441684489955707849571528452835910747938714204005091176529454786388181402271122606165767432100568297031105181289867301707268458316161745658527508432418257627627950198558010298723062526754885239014225006749395228258532040779157983910989676053991109285642118578749166404608530796321439681011866176339613545935210806950595166079940602626652529478949928173146973419395175628195402216966004275421218411185598458680975850203395878744893006676890739113608181085185290409020234232430349784742421750844481911103774579315559811482031531600064989207121143630104020450967266469715863483472391304245963176437551741377349243462161529575293741799745044623134302029790162926775097534057270343630313638088502018216208927752595332378603262256079299344084620274713048905714958919240547718062097042736848404953460031637409863033124384653719640352618881869640880599132556571213160628643065045219901645875692362435305856192634236125333673965924221485213058213844086431323565936143453834959212501313642907838580549379124992461660679542094610842393699767810036607442656795900740957943838349798260829984908075963765179422129686153735470734711549506144807029916161051863950855200344283665172316334878889518225111654439696702312843323235661663373785248317960701095182792532031728576789827124468747797999228164534562117634736861059124459968048819151931317011202253626736241702162395380933388145385846839900330476338404692166266677437223037650969112301003704529003438348171134830824877988564298005764742163961346536645153661553008109020219950696084710797733335009948333739684096001360496395831187615485739740136743116427335361739971135169486626321422359778439862983285243804772473916821357012989457521203054830910617757021574946743633342295129145628169117810940575287389066747431546353387241990813344560492023757644261017120097490622604109814034049643556132476861582669155806000559952442707351208082327401086265209970931461855091995016245358193896428780120765363205915484072232935642396693066455467423486216048596059035328646230773226375309662026783226017987842787766172503545065898275764224683493164467489087082099215918282972695914915682835925054972437901683362317817435328283627351359626841871488305078490854450614747991757918408602835422905146260849412458384077716608522342137814764688801909911414126836933596534550062137039018758598858863082211561202852783050525037780595229996229145285624217412081154256790929073978029708692481093815325895671607348649716792159200058518834052386760636214817053006897190633013131993351428097227125634048407322872294942624990702613887977648306123334628761096152397692578964452092357214188933794378034447203834827418388494768442906153456209026167143520196185388621701242706445940432626286628540552263064724376526521408831760378840594097087762025952890926823633364813736833214806979271958765427871214975515195117376001816829963330307930754402141605923729351803796830904321733078323253377216531420070875450031107567255328996663250288430270717317676793037986848219674547965480631637099314382423555831534994663504711721086742727878917712541566345671758993543322737374275941552375894722318342610099187708242011103768366824816241588733907845170152054175368353748326929191895830243501019001770769651198981525945020223489203640238846087697904138057633144511562153164482668159240262316957819044969496622262790051857889754783448192506045773388440331006958171640638708226122514774866196592616304756074748527191611451168015919124182107744096792202815697023487267058658300183399793122479815439187551410510643525463576104472480949618878409889687740335157842885013791442091716463301966933102025930880538724284432248840344448529647309705633670632213885133755613603766812790902647912707232326743088592100023722021741713815369909545436988339165330033070452687063266828095651194867971096810255115924159617064605747102386577464454982484968028157435754146047984587393872530392396089086439363561342686034536324130073406261284650168340382160618379881641663404597799471151476520886374798304120546492925056952921199799661608873584914751817588898548669519573422849851111629969910920439253882978422073129195494089374898525361102214112721905311026206192577169324601066857420922893756015264447785589136041644677776877608249778748607772777969341509532112474850100371706749881797203298318556878253554436331810054902787203902265678067876049753408086331577879471069351040220475417885746432541338200339164825627543391188474177767284718186187181829887850004463519222061053112048348138758461029787678011504756625211323004225889059401834744416902465423711523662108330104627381905363989710040968446499513529200237978370589487425060558284799999400663168767175122530519176891766710217183290005646230713498379029302843479001148232734191291745020366536032884450239464648810753139663615577618888728614545526129190941659694250356136464049587427456263378612828913330205494109201290256620168145822995558313063741100491470887065655142429082070760091591771459969220976736350121396034246569150333420940826414346626096944407130854662463683169903146023857755825026322589542749527869572822427764810909022356553495007171040280851106781924690132471614899952902500093618141170028188831499255419300858356352400831477107092250646362404287448773318289525751865511888480307994973037426631255082561563214193361452493264296518640053494279939747378353734946872752429908558599286976127412376958897495901553562958713347168355279857075265267084127149095084846413525461839155972285725199404860612882357568439287496340382449568283730709728812205601687764587340083362782898181086062822191295680483940674848217572598004645013431134174282264667120838581510598401872118593356272320537995744948615081015056742646620142040186411543133166354164690662063520935183725001994970168959915715908170074590595949773523218029646352594854930830745465845071965463547129869377115610347543017193749037452196017198717757922270407815732786687711271143418626150741246654532261661289463599853373298217980372106644074380239787213621759576457678078716919634567941793861040416933643160566200946579722260157001578300121779058595688600629535543874980360178196057579592816640543811888795140066265509239034189432381250531486143762461516937275405513195584112043478874873200667008226460234142391803729636987013414043397651660192664863941422912922691754688807248144143511116501657196475546078120624926430131205863574665034607465292631439278112167093578378838299844074863842170777818163017342424474832181001560535839430386858350331236971273676430146323738362667675017121794969665533846443834367164111581696461345118825794954126487610650686794978148108828808503738446942497199000725269802492067223738756841648862522924349500096026718995325754844705229283200641047417490411326439400592859695643960821837549549565115796187371211634331319237619883503051838317548254888580749991518217119240204596302462786979825610432641779165862150530408737319621010247659023591454641474121533470829976728776294896573576228417522409313739057594374407373941803841171336649987499276821485963089619394191722153910837730266901759252364257308748834135730140091658121184945108798244607089765369846502114664874620596637807655376166299981647257592011294749046535211987522038352145079937109218191472502884935127664369286695985429981302029343933096903151580496890835650228175883112115442058387528425201694810555335985043000642359178111250025300237906104272451534730251466620937478326563648885902665783698090879569754742617627555306579292113667744072456183345252751586151794372487937951628981620705107610151148592143572639378667354249894096661117054065776365111113495293011754266407000168510330894162730537826887861097608607293790771633449482851920370581266110026851165769079763173819013470663081606904421871868763274380704973065688367602053040326052044450327186301461013316125288764570045207321784117308423913232377818514756998954242784104030018394036274348375594040956742679775615878064450673088752620947652630597952724377854035792090449986995470731717904111554514259526407975253538529532229696344925303615594089296234052816793414426507210241411407873093067273227457624284858880158532843288789794511710847413070570248615712374456701164391243069350161530599333051361298480571009322089639637426783549854791953557355990351848363195512193086861887537102370409122487634223847837437882411343150146207206841148817411510660535265706498141297773959557058905995007476173431288626733318492529866346035951161610714712072752496245273179220958985053904362019066329381239969351918834318240042640284372955732650551823698898287240266124909761025346489288373361452126005727386680152014198101401744712041201781233516355442211668853238279228080580769242717602356453468336485746743816974881200474493599005667423839141822558441056254814103552160289830227246782700652929481450769364213295657577894630347738702251749320400144827378796854461503819718669973057446037151022299142878327377796908493293580397198962171164386488421270099931256933365400081568661211058281519403476141097816878058610643713818036312483905636492414243071974811362498274688931489771858011910403883354459921486768525712384890713060480465665399756980362206879279061319283119802971993424237093650683564777804148790181218794332156057896963815410954727124098612834012585097184520886865205105917803192155068071580785885840041347838764683134354331501452324455267341542678799228147573534974352881271565940432032693516999140232960630910050697470281039059371573996965682818675330408890019078858877616466427466802349216124126115179897167694062037569274263006103026333803993456529011482906844054281850358972476773806646442944768263338370141311067223692350532664849007508609428563257276840770121467396777190457520999592476481160297816109253045739408710426341116399668099472689858753380569409050798393733325488841443952650865435962800676151585582982520467873682514379626989713466042421928461896157380655688127213330419862156848141722128048046595303610223881820927924509626215444778871768491561376811999070004779575099182047313009551823602043679858481365502856115938847562610008063351868888974051920443436182099869406238048951579051406904244079249556060609484600198061237240081644093982983937441979054313189921124519412175928284677170903823203172619258619884221148008052291922602759923999265992262261923608765540494326737358285583097171725864508798233570318218931823727814537529934883926808132807253578183003499417266074116107819373662187083324939517667342840989164157406535683209094854585654759315943299811418604717573538416416735730732822373647648591510628969832683170221177668835895718128502694972674856057442035244073821275400913601237982904765476655492401392170337433427422987470489115673224451316381851035380983742035216890183894515789130896479764388383227546141845383562134226369475779481490167159800606399127880234061805537870478561280876885490087597754282587235387687450298253727952886163684247150540965576880794263030542097144796734445108568763437838305747083149693291731214542611753702393475784365571905672071912178098339617418098689155628101416290420534123208844188565965742449888301611297341125820366993767316280495169768069750820968771293697615151508171236618429893318421745940279814392106600337217457444301972098268747412760364920502489867694638417964796437644784836876016449687043682723587656636395322121379967098487508197230576031332179917314905370808835097410742774951345446850245731338615308659552554569633661951141508329212352851804435479334329165870718214651564317270291659445915917058372045706594501183704714073208557652110543534495423308963761854240194816603446701173320123114956674251823600775995970638531447266694362412174501624088690562818637739024900167717279325040429943429782884070914933140275130185611203474541736844456395620636546727381979088549152661871560112707955167919539714994832453934893272049210814468266874990327896327784335693014874174224854706740375806077613795794642536947151131192039125738808177848874013627787055200132461072058598898752437139899117990536953995830336292653673290916493985486311395676194809668907762850982064982404575133102824819757919805926764303638945560388264453323964065029622629977617638635579152402121670843887033001978437131486442334089679885726966714008025602711434388720295129333089515306322492761522172821195635207111700435495339180974147747130826311786693228107137488122717560643896939035952435127253060653610431785379473897173483841966214151814897453896047761773860184322289840637448045386551096798202097571347893268378465002120542575181070006661822711313845284133871074654688846039616224163005356842533629089051585751816675651741240164018940845071106568343389200649636290795691866322101836969688111387822736048347545165854152187737998670509007285747735284208543527015712351994596537099495269137859820663200165230229550172275411547900559693385268289566921109474529193091303401804786983415501717789660751012632735034187810300506019631102974613815263504247903068642773888923391187651360222985903463141019157103903897847090978945387248113024135549370133514529849671590596664019067954162836042803824121718409281096116505682728105684043153675965915338341648160907787076795626108341801000043430073633333326603233203596488169265894160027879779172345669761967503832812536978559383613613458936999084432803639589058022986727543905453239004438948396976283255255135634369822014190033581853769989755505051060276026744898250798859571884519910895475277219585765727750355070600880704204254254390185190647075799147324741438078374090125359237287912698042626678057198738442994692005547091616246418450234486922277272568177821290879514495648828000105746175484811838572141163898966810419474572729483895529638841065297167035768428389976362762689309109334567276152795209066405087188195997869659290465416762988516306056468481065067448105848870847419849411737038380518269619510035301405436889154917026022321131154831697394664578839184374684300084242643060100874939711745013741111360768042870426650411610750102028061299026243244369249579703112408340505508739619063727240474830440111579154765648560318426628678449411440398520749879391857183068712002643913512573754519821356943527052027265049951234594852999530512945641771726903074125727236654536074847063123076452788813077286609017202592002236697586420589102258340822937058379956640718402214089661396737475633446022438220358150026523073850991899285621989213777423908239731596593750239923497778176737069334907368587608171170438816305665075468986694409931790984699277855928978923641355830762108537220762513032192260423103660076131589433070033630003284795500678243178759457430574603078077838436164249699441478367387035626286352953087415932077317669606763084493097084296544228927086768409089092586494918261602146688488362426686407281846426504651898192911999139179067615175338878099373185755826804062602893819978769404815474056230566603260711794584388343804695816931816018271187659766469963219978348726283095589529428674285648510015278235139917590295379255518939752830041669346102131937921418461151293167853709700250431921316230283046898757242242193518592298273164244808523520369615219256044145826478278908937418701892658914086973361027375663284792722324139736225020465830809251562434004656908530957331989387515196357428046966821636242606921598898435457671501572021378171715213378410995005189002262402380588602276772024805885218018996911981489823262530122417928470390429224608687587754123534205223398830933436923751702240208611717322008025399076684203733925396935703539200708635842110727270446810108925599314144465205108518295894344573204844112087039065335661990530489496989045749104169711623396743455457423933045136661476703522684696302167877233537542768481189781109225473579752785147599499527256226850347432098103240965177460718025255843181637960438605863120066008885735887010149790156146555781917715737319615335416742401628073760098819673069702073664900397056410654678977637770939209196813104063355249763435602221964661677640274755866133794730199271691059889171003017452745088149223762972907467011864399291576303746002406087913464171140547141437596695841129036438278196770034557736039442592412024039127931385875424202268166978976742500578442544418924109446122882073096969533401819810359053526686329589315783472950176889000774970605879530293535846838827270021989018872630619356793744969862678638233887343781643762866052644834711941182821552201869213519278661425251735759115137734093091559361895844358145977988344240109144369496161068757723888205199697179675991155497929548249395734235776903158263936508815710472925963474168230584989182862644807307557069521440117703942208944365375518158904575087590153067630167340639039617579521626389973029797606190812473595662417996893309289283686117018959145465278002447275715885958681003624325636516471660389657863377908972447616304400699729190283514543956276233699590711886420375270309823628672611002992138697066293786746059085544025324234253616476743915058027351539192048837839062248243732850391823048032276680043537382093971169443909806489094361068340720966220080452695742881324671680125305597651082219237775001337794175943700146840325620878934753872413190509901678350687043346531194752720321869301053057902649542646484184953265351223923005601489288656487641934587198468088125544382512138911681258553470388790970292612774545517682339483997503420628290346230647171864698295589333464790832444166771456152853583230142142036740557425794022773369107757949899707307806468114181766855053906263178441885918522941221221459817856965626154063481686635038130681699758548493732075538021420053670719638055570403870291849140332428543854594481201970674907738669719223461223883900492076282208804450894460547091890467539354916393165053092567817370288233022392790243746870569168798876531287795932974849872670059018674454526252969882004282045847984894128428521872328767248556456485439021905170808623630862319512614305777127635453339301931601711906827510288447428447048209645733328449833166269765433080320323863661137446554925373165801371374317827189785161168116670892842365256326957517694644974132814697225516643272519154355616488903217802978170900753413586114880590412582090476209588566409809149255499548827422867958788691624421754090611174715467808886985608422847656008033375748957151793095097419548236015420404886065184675028038164857695017636506477209729210541894272546240136918985595941776660996476078960182564331295915487670920596718651791619729883904334515400791652776489353747689059172407379475485914593954866275628988549546434830489563058851780808609702339477494461479201171955965260499244171648859329714160431705991294980501764620442739407726768341087700354581168869065666662862552254304381128763169844779319487579674563968748438699714771878374553655311291682605422119652155298468421511287604744859413104385810419240753482203918877505366694963115121044481090984950723755850830142733977551064864369778253778937880531708943095052576925377341901566056597882273302953051871241531459594438017585791632010538265900780656553242654718112219968665691584931669818018712656572203088247976051567534648314392381172628504036774692084177418553501997771763915077257301269468369763613892082579079297570916509809830658125772165100565393114107169278966819378877441987549615279208817577331487698043106317519125686140805794918012835714474090956420011712487642543022820681479774887068231203104445183522486718993539696078249703021505038050439015582393688681211906726192275386698281545252434191172779559801671166023407886204964774351341087374620511524946828343779446548798846428824628768757507972617545619372483233722285682107256755815907745147081362348170709675097466495711387640258599826447296084242106694893510579188660159506722270335650900039025081565046763246345530767348793307640451942793296625017457987739034924984803973313640441223017159585167875424669832944668442720669367345289624330623593001729246540221898558883243697475429385320214189115548099409041704923898098759089436968348410479473905557913638566155341543763910189165278200189697958110260175787205484448926635073074788635910751962583915687148350889652283739390078754364937198983545267932015881173003811686140483812614526646641800989080783125317197953285882409162534207193610867386201331491650764151993731584082149440240940498207189087793030002782892572228874212304144411797363843718408084231311491915337203986545767223039153814742661210229318435777262145728729163988617333988865446913357545500594563279745734331389349539549102985843438777877657322168980909574240585598250234448079561561453952637708308789883849301274878009078657382394468479603987642828670843910165228073591362113377551499334026967780157346018303218737343005036913177139760127490920128467620953968969797999169094797140964498400636465201897028467694638588549003679274119157086043065550954525634439284522761136807884201997644108548213504730433624871840165787224035677735265895502342779793436326325539289396517363030340412592415275649161723248029780740331475376592566637937049120704495709413345840982639363072049496807877501677768653522027525838900740223761228366359733088446760455034238021614316877757750534593315465837556431896702397911566201757711702444250740901530329858053430655686821010756874275095777653504191026364388589194520835178687921716706039782840943560040458227370676783642742083371647194775946849558512875315454377746178111140280464393527698124821801517675025340364826592275814504485050360025026518064032364363013868226528888998403870799070205301577634034901756218885075873559134855540290227731668584941934797729567929254875119612788509525681436440483287961555200548360113910230964986329034339796325368762330998662710933864905187452889019753033231774565368597509705291955503284875224067368950927334746656085115559544937346160058138591903481796984634728513146368680655046898131688459366632205559895683019281957620685247469178765936569349126025254583478279886629880682035928814871236831238605631970181831419040349561848400489576808490012121509005021255401607833701029045770979865371784730165780571050924242379905181511448055316800854999400243222673381287284070303319947728943499682683993693432703345383903676499724535123274599785168983507139251105040096316491789900269913506667352666744354642980960242553801992924761615272727746820259403910730400520228369558195108054090660226231494193343936110279458097808849506926388023489863103830853664652206760622626772008241395154117442524707399217943083601726877772572946872647435306936872379284548609704364572441187209185806489349367786782016373514392714225534978166018975068308673275909380973614497119737335928086494890033424617175851687660064861594703249797501415335445591073547159972360584037880452893326866766910221072096347842253737921924065483248185564414719493062770619351167373433675295249687745192441696955888922784605923471103266343154831437658501668333853544472606029667042180934489845538004423986233022397309191481862150084310167232142660593141729281652676535247996749037185830541105161094307199833014776248379948572539965984854120731672021506696419056534238745544254631183992278022749164447408386737244682616343270535791200271469620213508810466759757115126313894508658577760882507569996660083237911287150134783011788626322970430352941951795379846761730182002235289271646643926966189986014644584829070999956646860592931285284358567744031425789733431894214476817575586816318810903003930937447006375665962224710624575047374990622425446886149337341836497054774901693666978542197717863063120645908666457431551995752959747927530743997371820239599523805435051540849369531634871964805134447172160036790113648741128774787070255764333891847186804028564207624164944718563337915829901807511186150102390721629023547030541177953061499457239832104872232361692416573267146037577725602548379725977133224229505990003368110044221123809233404454362367129376434750224437240881254131208473294059509697191582211344257819377827423161952733807693416804890096545127287276477211336230959690890123558344095096665237086020349318402816936803509331142314262558063530856283546332159309326768736161036874404818293691575705072588213956541322808024958991568368040565215251461784063454624211793806418041948852967292845603513919909130403622033071009272295312596185774231056891835471748556602059613161882540398655126881611953441761326149188041605747603591596265829685055795505259119017984805027135822964442346442164264295122357281924273252117435478503688205168607572562526189877400845262003868579892426883373780306431505339206096259582244477159761277486331560707781847613867290208377917272742378344396055347830412662727915295175114427509919629965180651499353238216354949899061533935334084912284083501801311195058436998497016160264895410449390217801870312202982787495743947345901107358771029030000273944634134553642628760450605038903348845096785936452156603345040114373877936937004657654871192975941272168562198808434448356463729498613447705231185589507675455864722274550711071143299940420585229975641787390425248753872624941038383404932251378371867892935043373430891583675037027757637616210995048102820874240901736167936763434788932171324392965972552803910448710863283206504659467893445618986453517759329022947784465759210947221890149810757874894922706119960359193260319909285348614097616346024630979543952534826297446337374834201801726222945619503423243861111618577816107957299539812053088971081599924564233241254927313456156302964665791434877718093416112073855087445407748223068863205445003287391643262247226383717791038261908520733971852721153761240014497545309619824255539815485759783124000424625833469972165191117817032278122843474774101699741906024019253163696622544168417469838994565362902479120640938718957106509328954957095419670066310735092043700149735852839374851830809693124821481415871410263011689947507419997955416453138507288622920509888952858636422223622732100206115956615639468467035025143254964997916878409696353771184143060304985003149891748586750965024321201206151165882999872488699101336452961117746075279906844986569760762621052481868002748052103117387969235212187259860833384314831327976997055080932024112500391834187157292538903353473443935934728471778730497098596368415480786936749726669811734349184417312473212267620162860199276999496539914469442528444806124232235362701657879718212795095598039559875252448211600174658099137259004776627316207071729468431959584230002549568449393260772624216644892941107059851370534037535596259052549263491714412609447723426485165087843586775752523383761119153654647228536566613239348478640187627707236858409258715738253893159221137680749424285123924489717735407722200119500253027586062269192374906559976461591845055981702624655756512437374548258362521876922368978044936152510312247052633097773765876062156200310917204658250665494347941662236780337585917351384818578466542342247071702308455831619754875820432123174775276406182062962645159319953257109296385763490254142883811728861967030427154305428338628567158619182750347583533206878795009219807305257054911367410854175772094979080300193651308279493074789689354613038861317815985002110867409894360221691451730287133857670812144270826886043505868199584515789481106943836093358104992342858840041606313828330398015866502739323106195971351513262109300190668156883424083622155172002828531095517288505344952915575063034732852327969420772132914090252448293914604778483066400124904469729683578652015243570800941470361354444032529728637377527260404767689526322511389126154465947000650105643701680942847518542463136530041774929752514754075681253978806243529174959984769877882730112966135058929108681042654813210208913761655085544363695544794823928759693152685127101333821945577961408526776870003392770412103396433638954783755056848392486784386089700995136722137006218611472358924799405071956628556735007349528442103114795194239909276044998027185521356755831390317914046870162267304728550111754153565323362573768609043813049706892412225867588835605972767139805607592607587692278931487090155404782690523978467787965427531262046852062384420359193227022489150161747988400932246584091723530921755829211120760526006316943435756124866418058566742773197087028078972270413290321429134755759114287476602635908610544441002612226922773547038827671047560618587619596891993895415626068994532448848267463165078679258849811106881614639986672280967282600093207078321478358739846984849284783451937602400384174422646327707930844378946694047031993542425287106304527473215584511892494278044321246462788126280012772256359315625608418418548750016759085975106596996301999308949322589108692019086253326898082625587315486114190943762757155988572903384048794104322971553836761072447929958469027957657403883012500830055377985515518409812398236171455232010702767004205265262144901360785141834695709345236012516663798546460125621261760305743593248181111492362907637669436959556207757430267547351699951779992308649976192857101871909832458142166405974367885678197384851197615341850699746365712633246593465083217603069524067824785343563210690411713371585644314631555694226798589304100640923809920159850786879327663599292144104317926223832223044112082000141478244319295888736757911145885037802909404324836435014668273210451368226517262311598037562846340778452173763041071571961429492816339261108481248789483778649029799084457657130078804474574454160995458579726662160564138466666008444708603570005669678719631837675865093048113184253800270216584702032568718935522701864113022447455647972608422195098750197234702243705512131660881171395502557901748340844839227192670282153436801362445632333624946412225471512307523496531337152762124989013926406700442240301979022060101039878030926599194824174116257046991601508799462795332283769276968209219950062551012919539900091950157551357670239362990769140987181738566851225903689119401604328322024993156390341096599319691423780700010971418302649447834612812111586672629626223839314652079626393118247366426093486125380420784457817481586421970885666133335495826399581412101384963369056384820445636738669554973077673764092069076596379551289209429591007792813890293501180434487980580208543662293901424080212534844692638370757996690456181786079904802610550520800729309327369749054884450853968656916889318481988957983980219783772897142261583200231294076154027760804033471419376830719716460166271040270571288336486009507600403105215457789182765069745597763389226455796028592104223849217647778483123345062352721915604820633215551777839006890636038981268589162847368874375605336634794336919553537627556254122807385587029871941602010694365431257604841056921402412581854460283398345447426330361482835210009294585093066328331368844285583744186371889526577952109889352988449519896902632161832588774608770634693702046300622718266745087929731322522659468909843321044930317943589079483630126807285591504824837585791160045653370292464600655586044483928073140748810769913590307685685575128541225850336557276028322489644144155618883063656728446613308189001617521054287112622531564067001912098115336763609439849111306895895235188056257633852181578174309137105894005940010992643393410936932327506568249904725101007369470126407753692602976933106135488960022521035744599826439526081509181933890819579255803375684925202098180263903556272909118222412991675992439456316045045279293475341810357765258738511169763396748671540927570932040938524690298049101503638726359364388698061979647918903300225085396273681855982406127043220998365219013059282435718927677383600190119227350653920578180356813525687397611556492613175777097050664882336976032237776118088544480538861739738676356779617587345290037638892783917363216922276269686284235879714878353739029413082163094686454823016607444934714971293298028356870730911166363169133275425067965454369910576907974795073002596299404721319100847715252741231724482256292907171877103209564882151255041584987972371755125896692321161881080744277536413472680280974356353530121984738599904865212340523212074355884146968854206648382832039344958838730309115652317807861270444861826771511790369396296018015018400007630051842235020481986003442839282624713048694777701234648125094741846669801962483170730058652582888647228457805347241892433131125017521751307110251616790010269721780463529543727033230838358271647460641032215390995420376076368167994815283258105457846943879967514869270877993293669774264433587098775537236101775142424119807671034003385074605049558497296150328566036262125697291977367100524583537417883909752705916924724709127062232271651562597630147506376214261835616714264744505564307728655275447384840579658797067226419644844143253074922528406839337027079750847852249570829764521525333567472241834040757688940609055132701095518949908280168457640406935396559147695437945656491701140764897875944752475519029451263911652673466232455465313545316048605015093619201278684045238176421887106756140249321948091196131604192462565661702153850873244044553743112208817483564661698899214255489934964836299091263630251548762460405969400326153569978229612252943574247479747483396476715795306455976039629901524085642017926154885033258283218372181322658218358181137067071347442416908075754568516278000485503228307499954070829889186647327192366602433440033100204281021546763474015121261006237079709164316846862186240673805022297272002142351075565852064771854666422058008478194819894242378743585531275461144370470646728118742136065630867994673866971065449216556418033623424828927772110928247751252503210607008076306362812640569426859186602345702577598685855814210966752131503293316388121844146491890084315463950736534178797378811092696245939480666471823606061296139835030198574452539227181410197761633979878262153063861350757526737179530018619894117056363047884035815864364173477679581697599624802191713502622747262537068959348275676816829672839295686711466268876290574270577045761326869653568158323678634020455249857317080431675896351403470068006042894040001999882906524960601257720106721392998428786103895060307345131867674047397908499610889236838870179258873217657522302142351705783772793928382795530942530630682877999595421505139874346873956377598168562314434341252634594875692926834606736191702020953324456421047381912172931669877076609031832022757147778652671748477813878891045619090286342215191844253194840160004366820094252080471919713856443207202716912097762210750114283554019608101703147085710278951003652812339227696384332775843266333561353587567819357325805466515269896268152497073050467270999957278267574979735410972862673541329065273757274656301047176515584236126162394274625678799362416638309289166436069624241966365021588622451251038033881885779148395072853969286389907026311803530454388651096420196912987031950454764174189063157290985194565629125754315942872325750654625115257154095159328521043009876786467112498296457630780008664357887344006924754239150829395325910490818922074029804034627462113731581756832063333231542702015385948495455494286208002003829735170467493833316725755103822034027194297973797167493799054073208664146063566539114180554207445462201933381429503380707516101115319728620639139517251805560862193962535024311147961716016938900135621175643560790154074279596507524325708024733433396255627287134382473342698804432377812246597238687794372539868830857150546935639062884257365276509860365154419870797921848002567431060590101870500431729065216780115816181321246291256182055920673710650936289466045714173650003405532642008101229862589784299892300555370872638281464490367453691558089263159653382747174961356442168264249471919559665523271346462016085452229585232141374955661304450387896121916070443429625639098528083748569569656943114421798526248205435869680862519077363507219142339215939748962242963272791450280641179733258147704982618225524934480572500723859923910320028506201274978628297455280297886208665609558358721191025955961758323015122205385279233576046236736381997809358719973564462958289448401160359825762294641060091997171714491663171500672684987748368928987999055442139106644111240083645029948385203002614906297092962290637547413288332037555894948538878641365802992221228411371541415232314926255303461623511080651256221428359997283538609146326745034325366751075981629180158917160928047252501225161669056219739695237934272825753905352286712192364291188134416652584750947944953819600360988804300692550560773330226653720332946581427804938380550317416833914738799137778989843226126508035219974536629527854114371108155789384227332980800087885392230908935155073598234310253614025900540871091944148370410540657443211360304891542357817178156694179188591116405609008785228849149475099805458756372926773329501906862793422421655521693229388126001968974213116221516465105981980436919264847598902244563348539063847404104917060578692329848426433583588345564349202406195877894579004554052611561643937011954474757975175337806941860203862660761120776526710655452929957589932872208991592783960555663675113594522803333327237117163019540131477216275034303231413455405835371369636886041549830150797794506257553093644242112815732886049271208281707902955905103959224331381071230112432588214991103241240988193851342222629187377580810278997268082635031199412385968349731799843392621094448702849826765104162843581165632266837135108358685972322964291214231033368987284816290727035160868867384350192383617222065731468560276704223776934211713850814702549333461965368477018414059804032822853759909015554628408309164010665482087602957884755406408767460959498111167325218021422664898237731037491947978193153785618536657617358715142443552868882363344956176714645263277873032105458997674777054947603583919686151480733554914788410498784324827981042598354188818031070263052981425261850277574358713563911322403456101057826106915645580851945454435427689282060750733851726261729247676915487597516789019970640547642776102588680761670701416285407523234816598216211485147617138403908365235807082236290706761242913633597476447439043734285561675111710426093884019697961822705546422699861435512261288052898085068061636318661428803829283413957305631969700030467375089750173530686368786726039156830190578172655425265856992129905393292019775154223703104783786264593194330678605983242269653394888134841831261567169075302353023133516062169849075671423690678898703063640845862100517419538507594347375538246438005714947760314790418623414406752949314231652027155321779860771987260155439249860635564449458992258553233639832282433123578502817418512481498954271766298533818705693968774314049914440265516182144514782018150556687564723831754059289449099794997380957015882196087761337962661941808108423186161071273671811323347772751654939778477697512035725597941657111530209155798481637242914072307912345271035741964475831730657895478671535955620351915955417864176977857716858497975906550298041877337705548584617830920282706373747603280641751737803640816808257747573824220034747512802528094775703780344608205336385770050854493340225622521644611940749512599700148979539027778847245819447757516603853403153034369042349249001653368961910771575202342016999788967892902506666579500677729599198548931663367767255066168617327465607305314181540497138662979788570798542640739654577050773057986933125038230477524188654599126958149985532321887488437259128896565556016274144920975293157998951195600671816126954297460626985668727704618577540655855712140362325705904060044803431282914796797924571535745700265202636265551210254908831625754202530955303178645255212334759090630465333563486763399254929499912858393666314578780753447585056196048177739188908984702913163446577316769432033723353781666603259214677880248234862175175022538721238419010088657963665193361218946542286484693111497152679315684757587478680554101940807992657925075892371790355553423115707522708776025937931883549659003639916590676040234426068408534693903601753289299195186401632773438940971631538139802150831762969715818970776339791318763964447924794504947499404312388223438120931232844320636751249738743398964290552494451262068198468895986816093589958015500802027399358294583382980021315845166453598418634558250352886130536013825107958662977459306537669088779659587807151262032229611037481180514354885691464222738312812617156546756606407692473319072646295015720429888034865154697979377095270244955704956237910986584591212357799966095060046008032154740537598825700029401316550593495292097613002874952336400366949667970416117187917634517098886961050570832519795462408212555118386879678353992924563316912844539523707335291747673572086994747816513961443087941857866691450679793622894474860599673636441604199717704985842810278155553504811264064896892491824743311736100483672779088823685718715341568950093798649822580442388560112743825511866552330225442408492292952671302615243671272964051583671594448753821332573091852342363589319404189109935731065267398257013389633213813872986724569765535504593556003157364554621853276788577021543803862448287020459003851246476842556340893954321331766285895040749877259760983294255819820587757726326441624483801209805303267933959886503127404552968460230321624894878249855413478899176803163040586304833650340770995647666084283079160219695503568082363500694018078283085193595911986607763502152664154032264703587907564203406193686296753278419656353380045687025168447528882685997602980626655618356310205186461391054731903845713330248813232584269511422267556098097506697772011961067834300442884651251476617079052358417634126382296352449122639742858693617901290923103593511106090564785454289088240324155749911407630713680949784071214519112925982953953030304448182958517923152166815116353093699608380452884994380095679105438220952563628865238219091791379359883522984608491304519220463292953848098338067921107163930441483142764051590957457893522267248205635582587587646436901347878258150618578828594264874842601477307065450672040601621236177866200407163789018241821660540795353045597560902742780238856128487220311794930540627345755903577820333387633465639215266293180983930097765328675176129011056663586959178029736284414201890455832348165125094517351913701323534964239961937065737015921912296459643236585100005497580448243875854587790219892283105979272999114442385227307627362757980331128692147633555251921806769641031169978360316952893899519420068760172289211693449941654601977836490307146902536416083047172344358759126352304839242774947920979507390442481315054271924420629004851612962131809358409400820866501686475092896571943538119441157220711305292842925552877976536023459883455907793895196488465154749855191056135438767249865346542083607935835554157378646377454116988183593660669835973536490942132030657773372462066466913910598599977008416538831043555679756220052787466283105573391408530796531764673041582284346377041416634685163491939314969144673365771836149332718820365743245145801962717335312906927363816329557036993738203522756912010818635140171300072770944134282755160304437392605057382498972247965294125094797406073080765353822207451907215068715553135624386711658438517781981979555363689994299126601216742162881565181603493751290418798119379543366447190289922141872156037553833344836468486091338978619219385787178722757013652462233272031237076850108157394617979287095234383174708090734755729014275632642896792131268206161296960539554864947932944405675303411279471720194881474978305282624655899106522278023800152226935189981546738049590263417408828997658837648711127734389285959135056155075818669459894967898393370796873632553903382472633566060116855817829018534730405246399705346305563958054365414047077876899806586436167271233471595164927715584084911115658034106929298878090779456097729259400008056124327923775023824532309220979213029063500554436645592110623896268849444342591559503375370808468440109567969293992854501366989618245655969735051528036304405528217558651932961399686012482734524065038256922773235825063626185951512308702587053790682385402214102691702476099362436003837357027531708491016142806412477000961638449056920019104539309870887251274222120230920864928958372760870815890625084215096377122750542688719867853086045357312365019764712962057035871854530045565516824374359090373079035758450150347490236731924222964614731037066742415217766229576952272202787012776478981510609148798864155899555488386290438771377752169168198452396793318765511744887347124886001045255458797001794359500757843029657288451355864111170360834878199717492736587926429664243232206685518189857770750573416328251380502441262825571110687822804908552524405586867624983404497338484896976017014910216412477376039290699130607606376992015950489412069555055704509675245336162117028526852510108860893781718557099940361664497873386865652320428764432812701131017901358713626859866877692185051257397887940549998734655457366041482137071710933653494568615340825488227989922234840933103572219403321491385526261936863485456230622006689916921917135781357964462064142082157779988990641578683815799867668007317861914907852918645550061458610354273110408582382389519683297253889929691644916157353116748336172298513152666615550479100515385753072243937880702580434563357463360571171696096211553429085137591675324890986593909775482243633183385642086246313625756131545533042775388774352447117782665072837666821688533824848808241944127389598387762415619724768942449557905617943698440828994319954245780598154280520688898319417598070419667282727523181010277631851104593405989368342311780133127290325830810243166298255992647629330739585654474644043925400580105075080518128229051766170051107754271522089293649563800406263193318549020287506487761182423605942066342321866566237556812041758290763850676598860472114216139152246890343935413788450147526928239544557191132667323482076585674632714654451289148049292695971561149173147293703121875354168954000586387644791518053996039712817699750133048488168982220199067575749729663541324109857264027970070286922711887813599420408017512959287103512811053892991190777860459715547628491244034406045009079850874487843195616011391753195018202638525446278414247425806964672154030025879326367604319040798339688283530728225028680468753054457475527070380459329970158978865750318860158216504828313017556752029544432089850613444505596955126029746355466605681361716283992786169310605058490967724562837332044126852985517184793156973162816456208457793969098257206049134894000740020428510191890203712445852574816830281087072841138999441235549986469344967714030497138245131295463583265566864856203227461821949877208648728861080165132387930056855672715354125358495697179967870890458344630313700265557935575311920568026032315833267311537066102906220408958005688324656233249764497140512362027837599237820082797987737463418887665215087497997772906853550740321043300634488071965055275913637315268119075995183446781119249702877546534467941915965386263449162481014971903844674066467341260783852554119539181079669338896905802546517328441740158224794842771441009128314660635502645907416115656401219758285489959015521943255356660662864767182227852341452484696379004868807237726351335559980914722668558229473956309824134462791857168633564066536062974807698285242732750474081577652924379697392055310487152147363755984462146648924153569682967117279423488986862523150723400832338507189039350542929139204527978386315268117243144019366170748848250251207216739993762117805563875003975680242062204626702512807170231015873511442631237139228792404399029419016058901161257360860322820482473902439333967804140986935051441560957423336883157117474967436512740683279157776906173237639699219127933638792593870765471848395450389953014322426516218131224563583762627975750674295312357151750695879562047657696879803807230170371801178880876301398599696426694645391701399981954105318356130954394205118591987989477987996329495149537263791823472051301828643950537075790432621414643338535096689760254778362378244324703043668522707080843505532481953296961076121135679735149929526250345898908566432045125903077511794956636294694216930403118232737082321896023921116607763099772332456906043692376551237958976593458205574066794426797244871209789821994239923751356131942978305397627000183935668665383337401678926344912402260092548225055438060962365469990453866421729674521894301515346814592096361877098932575837381827180976429582345763372202906566183366888108328028797506573502713126059162236428622790215755397620903764167291319977599858570571773967287786676262590122504561498836855343238920522967540012033935005738234802518642985509848497507956140076233635743629773858595748375744524364274527297832816645102843998505618875248387249324760958252064971135475118607136620448732682196836451507576810295506954674740578184725485733002953990726636435194847897476821296587000479376761797932409969918546090190074225318510483714906049801220190178323300854320366860136480137480798130266424038352335766676302790110670372831368714119654136301052713032743742396939552997155268522879258263307313752576140608727050389606240119050606890626069867599105658784294778561540012717223302077872087040684154051043618010310799202684748670091254211057722493281830629380046056537790940930804191569632027176595708547430473557264689352535505167776214662181452291798364127504367656006742046120045763902876158314400063393519987998287041466757413709315892837270785344014958464253470189073759195732653004348585139499643927643303463349611766799544925204196921369489359067216680823362010020846092362922979650841457962918284007649921837074863778282990335233659457269476054261494645044698035709253554083422810317881450433874294440813750955140916797223546256152064640249599887872750122379385430779810594729142844220005773664880268955364257780374755396239607216191162905253278589000571409501336334993130378344851741702418354435467457336609402467285870031647709095927724711053780072358759404578820017100774772415928084613586130059109669730062199991240491581883951006133347023687879392054670479026429313313624510672479740885167884880544391058299298928659522822651734585759601310740401480009275323888422941086903025426475719911628480679748542662501268783416473583559476043508314060103035572167158520493997222929942666608627034607436014609736170901499554736192246067360029894741466988161636033218440875863208754371722850382059818147061197066455285688049605815633179868190223871950290721933999644929875375930801079161037034105500496751289114097609830057333371953372284042202594797411386122629869933892433069041346596938135821962528387017639679340388796286473260794363828142383986861845181163614571018431818028404408377918564700054880455962486731245247832247691151771913819989612719684059138244805098800773703000788989899267124751866219648241677555200596838117996818660816655039020864731945538743550064821293931322721464092963145723822278685145102314020427292151792540237941277607948732682318102237733722918956080093873752744963247550787965467005361013313165569164706609137916101679030247108482676068756367314733602631114218804933090699687577882616552390529928057284697604343147792686454700012849528858918323320543461580612522602643451114367948257131261027080120630657994282653274538681706355859949042372984557364198857206296108868681402425908667808451922573900584773499722690351275086290595760634738984384304212450131539047458755771627544523995229133602130532080648280907833464112020741912864937164732938970707295927674792943826769358551281731843892782959226620219246503535701453381724155126055920511570158033816213984756458312981465014217894471974852086172492063721362067327434803195199219191478041748687645478225872993205693507647086927443786438065454389361781406345169872623582586037257051675707083030742931380369163291910149461666620338264037338517582054686244958329165287176851192628898012603616966265900934023673641578888688345504308955076219587346317917859234201253906106630215486738332782418737053564344157138993933025594384031036738725199460763732540568877631413614741350158325439294782168031355634818336617896244339341820049729151783932905848646140233400710280279484814940091259417441554846116585734115560013733996530904845313122324227108715711883157682517841165664444283562870223716374296402033524288806913194412154844659156403872347340340348578367867916832611460956303106776815831537629835184419722203673809038466579773881292109175059552697825763550625893367270748509091357815130829905733387549647149862213609430019077845780207998168863135639906931435674158475548413540132433742998064224834654531458476552391221683345877111789765525131604015672719679690897299443151959300999515124652024132410146122148341333121593997618736049653201393503233778640466724962988491847476354732452925819256318768495218235130241542465983965680116583419526109935973019567187541075781910723906812384189373371968731977030909417681656762249954290877151538685175848532937005134800883136609915807093757621053581419613066287752119269706319186944157433751784846098367292861257172357237678658015174041037511677936426270105920814025530800693795632644992214756771237725248150602071349809704035947144388058675770700061813292149242918015800778303540461707567863017887387348360713506252161375029685467109927728243871681765543892308790160903516915471430120736661650411149589640571365220693260466872800589432416599576429483687849264900196117005031734005442011748592241707961136962538823621037597491556925325392885644595088497321227132981743822677111442246976188316244318736042557917658191374407204730093444067005304981857112034354576581783793930411864787726944800309887485116889717248074718523879929467357685058247187604165196816784786386439672527654453409017204489623264430532575131516407626769704261994583408822821015892377928601584864631097789555448046379460551580632006433804985617909801185635053146864734678359766395596355746452014639857080022948929086841537722378147758304668612730751301023125802489553292599641723182735261718291559012197020879955488368953780602337203451421176742742580702580273487641270654713948431134598103946227756752536124731969572057446195589125855042773112881485203970146914286785836852533810775310160259964501835425465566549340990106176952387700644815000901585049855177708052557924163487596293734887114036060711620338196159485293867108392004733060390804084017325976448912417409254076531612535755444321248152673753021446501881150855746735044475026588424294359708024263963276574175453187973406228030907605840733654703509620212761835026817717816677163428765986560564325405987262897459121172885152696898959089957315226946319718907432330383656056093040172043736127889188324818314154997181048948794234455541094025265273786996752704473196450078806622823919687389008705211178590254832801825839242472267283705756553685372135954885243324280515364482518049010652413159629554236488810209026403991374346756271809270195173858335134989870626505864249348347951085313926985639639275736112509552192237218015574218563369135831069931858697672239734420636917366154382545252750727382508098584303924914830882975505268602828589625263185776403438382665624155779507969763925358428215562890624085922951131493898347711322592337070019621889682702617430492589592507394010646308413768258411235262031179186603411832530382787347722481675183688956644591025828383407680282239156276059660141275439756124105302621329038567069781228789510668327036074268613865131175928758680700166987582503751159495929992670635463264816584485521329693570601902849812034091318465372824067441281437419297176901363187225079651739871561441350492913938168993254911190666191214280051982475286605580978122715272242576058166159140823808973063325622445275743872273986738547473031005915087859494837500848393476829563812369980316172756559166461685357786945764934396977060431467942405676979273518896175106668023855461655994452985960676877459241679610742190922870644226656322049970704521733425638560230654233176359164370287582099612748961208866189252514984798018564306940812695217784950106642337489288088081537468001902625453169906427633237378448529486376683846927726724332723710627081573003223579555918865986024791613135321019346505775988232144912813669762011449620882708492201148153039403697571452691811134627264716622039704660181615783385096290138263760276373320892089539743403623432716035496408575735079177428870271972248421347535027663814776234274231188755886983275718277445473429894489714733644128882027293265367558395352003028897753032182403350893034518082135024938996608267217733267163836905196039518445928070232722428356617379780856294587754454621465743842760684030874279396939051693958809385789430293835715020314909109569128235632729717549893004784851209149855583900735592492644387981777702010402797514502758625084107462121859771637678562447286686157290381591990740931105202470468278194676459018359674032650516776515656172717531795031066765144959273891386833718612654913576412262207145173592316173106850770712421761939120241165071216266727597376942862192890928085272576574811980271277493146046235410350304631714437363584130895039389774909471554263586166258047509116230186934038510574902242855142657813430498256572161326159371441240208538186384133779369034305320817274938291054917442064238111154517626231446565874174006605078302799102471194528511243465096140336639816420374868673936212666546789713560283096039809833793529345820711171592883021024922136321593426981439297646428860406417790197449022086184589781009670875192322610567091184957934183455325572267636740777102016311706266024884740310287621543477368644537538626179193981198456008557458689918444947828820021742633242568454297493797524130142250833337488305087349421255479182728991676708919465911463836583289977237351452821718258064835894058877324766873783476581507272410645093860048072468790483124061632705101391240580957270136239872303429992427520784946512700749394838895617874392705848219892491241095248966600087464367550936358128887533489397468656222810092830591681163326023060800216017496346513010229763531944826155217523119713301138171876012315827389575020231498455024200843093038391841998779949614693593167185593886764470057228005687759135806567584178755493352710527549780398635556831987223172577029284325544775715142316395035140228775247930229386377750251941868493046057916908387389959589586156278613129378428434744073144106345724725663841124360015637994521231579595669022349521855699898056980543968590328483421572006837253779768236989804776195718175201051444906754555110257635914453204471553987926961940160924709749843451966102005748687804102046564119380238075585927208030356855097972037000539877850962763766497326381151360029529810800728157661195787193640452352493555065299535364717318257159125985684853007847092648144155387464550250566931489455079512606486096711809287073871497231143945008798490053507505235981112869567161423528608402904922453090823636076921821386667296630680096649945053093291030743687850448227380077045172207216273518278337824087352284745756850443826016270886267796128510243333232508932913148606837440338323501000488362606794727028396849461443818369931420417284529761227017092514477973887625843044534009297687729180417536273010002858632512161416677678492215672818443821048262305769441000477730566474439814242949521078734295094902096755246988522819913306498432417631277316351453242084442905198266758794807978976579152283557088112621834888039773046780671991144936267139029502893906157833592215262478296191189070994184787939971657751746267615143784290060759769695528077633657649445461065973677773150695798639572693589008966208074629160563909401314123755188430845560060946408970178032459195144691357128134472799770322739877748670138121400489353400306363080785948763128324212464559357105938411124764491703502527596478164624362502646176059878045085568202931071106890444104379774849967095289349342925841277357742090072379873791379064727290202750696681376628886380406679537502793336195867904238017148440417936813316099319685519466041764232771281823267521601938880155119389472705524734320033917414344651141696045077823478607001028392594775336050078862873286199489039398025934347551536493230228821372400421302907990484212986938864926855550194884470797713517821518468670725428214244048788340173549108744350856542796583067921188298979518369215466836643422764364193641913921307104270648478450806594942903623084827959929189427775999921200070092987629999502824421110622504283329836343700704700253824617075677377810842189836776402177252619484536255501838851096599882435588228051566754741451803384213430443495687320806389615401518897966701775017330956525133556964213211891928776785360885338225166327217283001863021261576315461132566990966047368600651401691764119368681108894055102569796005688985822558955490237850594011264674838081812523182489226243866940370197511953555283049728497303633611659716331283581391649076052962986111353165061805202295186256872921386747928450113710532828077346770656259277967375617972746601793141849759526895680394572983837033288030859786743932388565359036205075405520614074192418803696663515933948183059103952171585592567832674358621683563258613538331627372546326251911527249931761444263640489690741665079853073851553254612060971688404814778791835471602836248692893990297498395338021212432871199708148452972202673261008371106131874832697903349170281148003905406495684513586258863910433954631240634442874906286751607520970666685220124816964910640632942328629031244812059654450045575059387615095542606229672554908434681865339645023719423522258293785507502558089839474779164631626601593943753705719730862132770588594005817777999617003540731531061516076830753130812490369726859454406328438454397608583840943865034069003280778528045786225803951637474855021117265295285362646380865143239708146399214397133780273042905501520515833499264917348047715671487156351545880887191312923810990085215368099779066561245039717577215769500507758159018000873530855212160085828643307159327516630404456018006912337976248487454698334813012305662832442724635229744595931358186545151467430898341211689220334121076839943406495904671164194909297562372280494299353973241290938961702038050170630821557195460612115774066263685841931982032879988441593445676787833843543269234382154801920805281889881936447051786445460232377495146689722603178552785917624677549825885659921602783755907355722175503403711511696993562545504496062872012132044441923592536355288912800217453043969537937973901287238181236088417334932588601958921688965686943232215924673722458601238292635374040759048965885468087489545097890039689590317629439775672448806016994690698311749438390111389341892437261988657308678872204119388580771037617704850996687380198103583081003118503486032400360566170675341832339587484273648548956938557259376315289397486821155775427850840012105529332376173468180682421697310266717145426784942184395238266915562521164572280831123541742225287234528780548037383042781345074977820478711734076819704987262873455692608594467387271561906111117211446867723146516532483735497353309516419178396680408685166386024285615741110655202921834407258468379802879021480682349387776471634958457832999400294711199184483992645006180090663239303462829321529172004396859620809677348523761987330541805367524825725051878188413383333229042643466320537804505770899241806861555493935422354152015262237068069354040815777417168486578900814472184471212981318214743871470860263452140141544650968409335207090207919886244328817943052837910360820461973872985218234736006101185441440190474755583211501429111563736593427805237611304557658216078852971155502700627844873242212671142131049100742806529676920275440602665132651048996077319762016171606037430676637714829258216283137260602883674463943391092269240135208007681384250746505674089034823761963094972927872233685784120269459431219319899362208472906638979408063349405734032404898919503407612499193890094447162365615054786210219647279856432383738069621704173939279396574365731757287765354571481642175196437003518204835512403426222332520651605330874614572066245617452667316875349501055764636500849916497689648093681914681987504415509623652113904021295665077141776224432632256199612165264945218177500568335471267787508567483099684811647017433452621649031623512278562785693890296598733789127768009258424716681296403961517751265022744170600036256551476209714979301395589563226397353953478287093351108164582802503019483467858094031563394722711965371604019339652833811780599667734926507461955514144716892792342801517102397372937318327945567498949427979571175355163391320835039795983288562911772261198184827386444017395392379983451439424786550293341000115656048506022533230350417571633810507533354103958578899491221378280212085203142511817896304244393119017791551386654947667632634736091854146017956358104272031016236095497646006252995959941506998447838013263049347831238523382946861777476648383340303554381080838244861465522561237124679436821388048086713968367851444634269254788617690446029630913308760082911778983227676495977147309203716343924122991449872351273381083390309993267483142815178765661924221708392635888152571766725826924236618565204755421368465321642875003222227247609207817475329989763976987991647896709661392946839095080489744013643669380914063323685268880075768042777749012923009665390276658783080106490117636136868725985359503753961075821802883542117033967401099815856541059234124493185078522077615873324760206501586887770304830170655013094004765288812043409763754972170491851967627614419624261886245805150375044059625958758960919377289544489067877438112564292816288024093016128479113002299828740641169436273408849669241370821472733304133403913606336689449220349969846153717580273316779489582554153037716370848100583325511123696050429222276103400440874310215021166200371772689555890980830393217990738985889606373287457880824386017730549989060753098123085920978817730082914621306180527882728440033405757314223410955700963930931433503237963792919030178238027016099351962741335094019081850413139122590037204468708745859693348911785116473835910419117801077708468597754958091089219780124522205888607772862626324970463499097565145902896940169763291946527145395394799931587774766509076214578856860606086154789945059123850056709819655646416367656310804146246105741257771922771448504153231146160579888760891373027938406684452364409553878037439697136340954656801256526115987847508624916748664234233084439613261029711682835322282498999188401991564952188348151681612104106741426733664457625991455643014023586899035808355626289441687344328445762102441325050565958691667442884755560803463360997558042291646643213654998986059572489217489846546123730046685061874937883876210005176549231950264312998574152193345433629516869218510656154834501033622315281023973154966469657415071393873953572724816536022709361497544725936323172648667771478770163764764840287333505022617276181572223834873502508686806595223744812603345396123243725381044236589478394757319686434143260981364395785243666025630614300051713634557830154276083620975767333832048808388982517273110792360625372105075217255580305785609949246190397035830492097503587542695926456485362182758305797407210613669974328333654349399600086821827439819530856398742277661409219972435122778637254946821778655112182379693827128955885253446573797415707117128613774087615858236613947465313446300855697674083563334560842038582898953410024858154170748754136668086383119386628499561045514415072581449988441105597366334900201368345908755365203500295338775546042822105417291201400128644674792573201359951994134837048424404114847485063276563046671179091806531942800999910926393903111615905757039286625515108251970830264878304333976407947210067628953511250243108295934610954237530602900993929467875328792048998958889414652310894673612346777032413414162632267367103814377484972689649303915384588761093625629418246350705168262723446120520747979859754105732950863725077428706197365274014914842636563314196216154391290848421821089204987277825855089828715538304370888783469822387204834627394931197056619917868123875271807474745051626902045598494474223955938977120205378118900758976317258152677780706416383474940325530496660078981126164791960569140938719592546006949633541640811887498660859673491987796520567134121127388411469927287069516848960464628005065424849124413626177700241320505301284267110703928422207504406139162825205133923457360574549866001310770158849940552066806547236219582755984852732029644036280060088810865383434644148605363772918491672964320949984573972048811841800852198503767419532272066967029997618947050636570755454164120130368569798125465533486031073780316110833635984077660366075351933003262349102575769002663928409444779655023898550633236955216801088567012228861617901104148132058203919834156911127932850840497488436127050961122764066683562739930791900305238956040897799243937378516300061222529495088549451776045712421852208259261043681744152584591035136407725182326788866399733548008944742001468473540338302574714740466315365648371701940165160286285528699142830354402221928495954859999151522058273349878678871100427218291511255702868372424436354043071041610757002051468866891975471341574318415848327612110997867877524362944662521090033186706808953889973588446083424674235648052631482156822897149907505852185759561476367724099277088226960271881082571920918446437975614158886510943358959834413023277176905451988377283977479544218944970826033959904854884316849021680717168504373504153355314640021581812316073427344787062953163202712951080379708682377553890211447490701794615762113142516948385526067566156737175824971892306095037515820866401640262557832803444040778705265529963201732617361851981725342615541323479543051194169986750906802511542267117620228813542510870738607583903988671207948505916953528842252256964598958655769784884469591570088452777502056709233718129959681734217856601148661042746770632386332257927867008423258800021838458912026612783504116927248549448278289355612567709386959224553550345871654743840651130247100544511661755752173039872868754073145598910396651459211124798648108957962418866104237083984216939223207339746781692632969559801372811842773049407373255295242389901666869679796536666859950859440013375958893325740045991023841487686911854564414684686008915816020957839348873375252448446353902071529480807506918735390780127617718954540839829813185445812551494551664182621592821886325162239337894703116072542477776473964642320719961177085279629846135759663054319059262915786697108023617764834813798195584095113061034599559430294038099172624846646443044651583797936711824479688105476232415856533321340580020738523401177290342698298205049888083843262762647836104421727308135893395395729111546225960644342553735865118659590629931782370717411759520800623671576964956030141979900385193948349639598856760890482148767546347425232552150479267453134115796493981942624133706948752954036126109278653210116283723824553569108868748912469065043077725994463370242145974274714233112627688377149827185741508314987876325521535427675863914349930668784329031073177929726618172681605142405978217988120815153422425161613709161880930246720909029461102430242273934850146628249585139499898546144371640705480224525239873196028335154410849688243828700596496351262158707467685278927531073448326668188455723971279213533417455129182517942066066925626153733170286456481653624871639965622887230121854499125106931711205700458191388607978805849639970756551320857689249233186064925282144432697086082579551513916328738778194105474827364279225431417245351916417439559657726547469676100006471959849472449674467536772828335982719380056317671396255383620214027635056412146976613454469185912989391482628862872345121949921586224909913736127502983792151864665792838914743571734552170825138107977196696018629596627452399724763847907346727296914250035014706311768722742896841333812783424795415891661981562079018185373351217014437175328762593328611118072664787124672656798374367933416479434038264157930958958071935637808913858319785536115477523265091040486593309687056756496494232112804550430081017570350525425593530482763953347364322827861963077186544044681154770440999317673774282800647102416244432231499384870684817073785917953836121074454536453496034497160091387817669811602653398836801911073151612105290608286645839582490955626831854550777482337292065564094926815262799941937767000537614659458478024729382943044203340398877702552375095769416804158235246793940152812913395878724109477900830413785139628803225225507988425676859747225524150547616428880423153920781035390175570041338019309283454775524964747520258037711293066313564614995443460611830888287229522759366746108001258605243658142963192628135749494525840429752299694772727861964696671628777166851047084122430967983947960176255721572177790549787055185073214796573676194113572692761940893366740285620997919748460517290624704825012458655658323251690846125797478302178736690606469037104350988081521364910533574935554371551807370673050638355595879148476536554962924719565400360036364557975101512550084901928600136472918837431755570323570813753663587491295441393462702282040129261883536590734584027055751418373598890546991029142013220988429044443748573874470469838669899517740117050686266097775247585810142523277908579051647301757503504040435007914205660067068336566812571712841899436011416224717343618610041584598019989393822988672358449524025266535866470402398736576359396251023883156189721326437317036474094334589980662962727562047608998868308838581130322418248080347256454462556129903184587925625687022962344040469965619752019944849661554307482416408830678472656750527003447699022641226134667261935987548707354994131206999436080186221084916025406662238652710881237863202098102403399068022356180504652875834685383922629984391269919537293612879100741630049159742078615922004976797293445372174925248619921442935768587683273915716948828548728162068314499704098595241122607040012548733376734241459645386561489719114631421570381759372986932974424428796146010776514391955437148317304002908610391991198493058228727369387083345327169064915120479400625619457124330014692845509792742841843098192430549426933614112444363176637426006724363319587764740174784621192720178039541099682552327229313484599346168671902133150824617455850290560366808896252112777367422946721536155812743193941790426851133997478120277406112145562722158445054801204008186762357506628526210646056375726298705890319914050645288429303060542341183420433075869619963708538643581216295225832792391190278266169939912926252105044722492247514939235405600496575433926221719129488279931594809081683290741898586285888960952065429048550374217825548598181133372719541781029880172192763528193048062792493357116476774534170276957970047376505933731730489570523996326923359395052303436934657234651649097239872085814036291021749499991380189275548127195624610692687412929429967989811043193687766539596997975683005504601244065459885397048376790067876899346218285364331613624233459055892198899063110876864534435563263226083622624172305653637889690768947562637905830673332096883467068913837469807139146682974601466185208428181096464336484396740255134645216078060235665519292215566403796673288516378911030162027017149958396973229087211804594558791492242625649950225860574758637938549774812702363560241072245578399338213251572274520576896366127470778655476874337128146048154262612620047573635648443113020368554510562072584118174737779263384824587239701721594371666965284208540636087808258101740418119867243015235865830234165773739290354351215708567617767799899429385194150811211851553433125136286374830414337345412009071906307559515215459666270832071373086310252947025560986357296592211904583192175697732325264726644219296448532343796519537928211704644627536882182395588844179526711790277967190824096760359566979326187794552205889944966298294199799712201362272167898824882514956826100726041669599282478997688565061686745872324995125253866651913218015326292629611757792763312609587254014391531425540919264248300346066994128842142592940834349556050028357684948664840366835732030691647329523442740651923442998301018786590995804049404403255245455353491083409308050052339627667824120607085398555645864532587462248946856932477364217789488583383417229238691962428509314236715222482147770234935851512016904325151725392623473764712063164448299406386408595483347687935509634373408191604831699704213729749635615434829605878110604438436549300280842535210358046327196170885224461641672634396310524131948645748299037453948777000099161649453536571871531882540852312714362624632949002829783499873610250896541886833164983516140129090692595091881054908143661279639111926347414241902126674200568585986073628335890643335504630335260819077451129762177416651004728158920164426671954050552857363501487084319208890288753040927294526642360585897850149445759035653095994958149115114422219599654462823266911344034706390254995474284552077918635686223744651336691323420203380380158622829644974878281748802459835812097755128179069423037456419070013794716724454547363401969483678932203378984357833049981834522500282839460507615016608722631903991087346991782857256867805734744186535431635450989903188383781631596760625234031021381240134157151690532086643485845027277018773203941599589636162211147384333582474068168135469615695968920306901511312003111842266135073747208243284447616944724824766927135673232782336492699648632942130733112442650328630758635037063102071181958253635801898119959519172405802667898677732831889468899410765543823001873849974707133765832627571777938867488822334085260632564962990864634406041470306235767039764222483313060036587212785991074465232657516465293084415391848779662850201241116139939549702564036560451841868087546382391071362789746161483796117625167125430837360935963293580953908910065350266881490060490193333015868506030338141425476523936212424107502469621341866189462474464762369652460780931915480254882650177432542515007796070785783620169205188633158903819414167914938210580622498704220061311941011757517707397913762111706194818857988919075007945507408450779758327516021784704548563786864682709847729826591833007985553721940311474495397631751566189801628776729016168344047543676186242788018981077678302330242764771238475627549588333298381660968071677024815509901448515961175557390357024278834666976501390099920951854934338469663163499896716047859725850134903386128252841959430019301710941497011214160543998299779885042242959215868474314791064772451121505495666854391697699657012752747373845727512933261962931298308997476156236066596582764470397225373141730804359212181232808626404345917433275525636782130773782572320108110195867318517489421513902482242541554581193807049586509744042764195605357037732040901438455009654605849510235253212429998133439606543530574873171146712071279841776568800633019945532838074319083966015759307010792847497947945118265388373648690945419156064385435452658138558047512473994577561545975851892399697743507897135094057658113807358557658416873881529112581044797676255780757425626100293627025536405008232556928193949126872335421386025413897047523954558120350128000021533423922067366175705634867545499195636223604321287120403434692952258298934946216445665260718070360121945583701217944387866314820050808512924358486477070511241711402342924680315989180627878474636674487718597636108589288024408530698008578343487844019628646426998484420220195624847096747954823742712434972614896429839097083543958391637496445574063819606610308932074636238683633515390017856949315522723699463255291658055356370876448718846286235828578417190865956924431008853090758975815223956509031843278537270186328490757753847173561702808167916741143533749764355346113887573732978410731450885906855806801967465186421613925188833780540757266350264759858303988838692657547635438139190503851752159067861036323764568822645680265086983050042248172481510571296951840877456235926011528145554015403097990806145389227648106863592302279724474364145610782260807065975795982396772276480630966590574996241581237162313485900645624330342598343950254783564055332452372528792744463499885232656353415119707203861772353507560009885854997143438701543078208982636155421256142479743794755351622987305920090445376977779797945163195675932352730419071522091779964619929366836939874577573392712631019558093580913017541375775135481072623512366285444723633666404431985045645216430145842600782970722874049176635816425239026103360186236858270431263288872781192279676283536130854842691851773983664294144266689068982494101709119089324953907225858394286210714979960910801800069108437327783217543445287702871003943477876055635892194895210703492475217075394948900847580160915963505386825984448978756430552468057464325710760028886003379355067097207901752657072569287615229572480064422702373448817997188118942665967220142819499397630939138022755892988570088588918076257856001235876814991636931764644298786830860190012918806052668634643112796631143433310948634676100032845618694696352194067294605474505240090488791168681183283067602889389572346656428309326901141856885106160234971176944581213253773760411405043994647987146006021300095302976364791523376602449815900379167742599324459760869023712696181164623221678868540645876820659871900845195106420637359872937245562070693212070383261235544888166544912673154295732468452508826642931574503390011903681714192409956698644267889018763454388805634116957287581941913292557178295330144202193999730469146685510215132998372759939938321855446365873973346894582609949083305552943809931501294378691571006709061454845394343409195188725356796182576933655505048034523211060851468693342935220024082334117723915818120300563056279393592599717749513826822872430130973902807392849476518454518083932576424514036545979261922974627301716312361640612326203475236033061017532201422437168843915119403593773785162909567685615090236520224411620746960364626267503538984857242941542319806077055206173893982954195127148779531609531966158027169849079561301969063286912094368603042762060705645363313750644670288169887975600456192521018670934617783905489575385895379015296196395141791557215407902891153162614382985661608880476615656747309121776587138973544039811003546608134299953513214240435125060037786417262270371885225259090378812246431171156462730554222259087509017437006444349391951074860867579111309588893505159065551697994066182007228717580755810958506572391566043212470161892181188831491755090068663721917702247778275642541853378584308478481109597601696484240137580237884261671667131124857158602101164977167808858109029300142385461473178202939038447705729602459681295423412339417039977988663921699639166236178455692863416274878636835891630850690002382627667405819376473061122416879974868050732407621485828401398166865376278160992511802187583107047871269251452569088044094559564894969360180557646481115580511679270107215347497348212080166496623399927600036129023961326496799535399578068070711925477628811828169713157711369741698904318331384242689190386101441997920846049521134490984482837598009616521900191640511721591097001932111273342702390628052362770111911964713676292719320652238421368198653760450519485835980703709725575231217833743297495722204528478512144664037480778706928054173767173578089205541096249064156084673941992634041335754412174433519417446078066648003592134295805526704376405904233513785618317308759484884134565074005776815751210611898779732674520586549255063918220016564964338185939588167105662040242743545424409363236117147762301074404868683003213890756914324090216656818162413303823219947659862265591440777711350105972410556580128702384016435000789178302198228057827068973701887649105649556525060044124229190409382056191460135517605389487299104364934561126853805635231524711798129071321406429956854549737522567911495083942556561114857045116193111504475726562541428439927495259548941070063679542920379303307412568380791312737746114502166947667000823486531490522732629628945020584839794423831607635235634777386426984705519935820127551251661669489440038953107748586382743456759999487435343331694736266589655445386837718633222403313318991249340100083426249060793651772449025635633946364606395504825556660369300420317708213969849862982490572877390304678446574826125125967926708031335926677870951816190523117864544872481615482216254384634002893060248062055931443578861173980385224993506161454463353131182485645829132040343375885064509028816194877727022372176940491973632406984969742307022047574451744718169180231714253311731795891030983164200139703685855354838473398181222553030402280627610513907267450414893690037366936854343673019980113210899556629175363059509854524851556897091796502748661244162522537213704237710740416011753270853701743538582451033320272398393573436943792948176046819834764434423071057892212495381388108421296430303779698385969683417839342032826921233152041014055308429778502715363357710181348526627087870078689911376013422740887511108379715042949853311380187313087823058866600306439050428577284630913192125677650056232909165270141454460346592678579909222111404520820417902467638524269655764735535689949917857874326208094541763297494881494188952885835410833852158314117374911229748956465088714757018938104836616017638621425144124267327490406813708752593021299174798524835591522667080691245329976381421284440145661128376682995697060795336202209689836932216471840034243694895015082815721349834331000544193879713270183818293722932496884017461861067980814218010867201060145552127661673351716205819729000478698690812392983379338596972085382749715304328066242021187972473243988986379454416776140123254699622858511892922351738740545895562787309099533027259854372126632618896724110906090680829804406938743875622844734046512931105158939549844527088034215843834734049207505470675226455294185269390557709124873734295691103200767885999673757698733797226424688350451195042874723972006911695418097100887156196892658792835857066777664035415359520222057240353948164006973067699375845229089449299119006132522692188710919700352321958646719890166453161455022167963199538858359629761273637083473202666126059305403068705119146171461290562483802144831249355595902921023961150900591175400681350863707491198790122044086493193228423521734504584079045131780987064585871028809326281280232887393834965500551282226807193871733411497005079708787652354236740077346126268758317681897295380823903916361061977174100952097520310110289804941402050481006115965805154592686480463203956372840487525181659750880518641875319237523019954103072326606827583982269618330046309235339720787075363000045982822664080778296125454710949768449789444462218558216753081141109343293952759763128665667862994260348424122003774826491203468235097893812971828581847870170290071240684471940236638880008715745204131660398171123198181315461041562548263992389475704011521229000870219542008971198452203113644935664742093745826797881074921918997739614405928281436560594899501085342662662568547565289858597486488998267778855050675925192162873241900149144347818923170802188533553720272227905205777880880941788464057741501162233791026269241233202749093711731562164966073330963646755893695852828510175728919771263323520866541308617840280532560752125329740524866199855801041596100775476988152238192338615371563780256740624396473400299164905502197116175651596897131288185727921997570240558603796237787598706311155261773245337103820768364855297711807067934431200320818765411011790704688217102791371324841876606834251321777448154480160040052068145760222440839432523517493945038837376107925492478701902128477729005669643071943166754859558420225111519753850005071310668376090753520129938311499434640688339504112049098911228771436847432417202660806737904631790346374751575079838801900512620270501557554606652156317625225996657475428137732173578344772721438005532574768852421888921624732903780667036356302411756861400166223225177018053862713792376763984723659678930277970653161584194710969709999406767259658372034598228064486179101809199025919535801633546252376271425670313956730149500094036707802361269193292918441957930284479575942301821196311744183045449391616169037491646134058639894152455211774580932593456920843065288523207517079001917868424919706760102104582193139401410977918053938476344594009676862794590207688105100177742924936634078838529972019945115152495860790985807539085254421878071553159769848113832721312650508820640384207914453684024602087430447779582091347331395662585777441410228480048907990882678062603980371083740254025061594717210485172042117940183794663354844954280504197000595047001783119859545126322553125127683307018236261058272422886340177202260316747665518256534065189171402265849404692397804338981385101915918807893473845788701100641263593641702904574682783844572323813716818116469383095536876096178997177789239897320251708092456630812285242400812692834176948790024173841867031631723455210326092425821514191081131777462528042992624367269170143277993324165116847220002970815193382227119730762250683328203213062669379168334219405432411996792563370805261954759065588635901449864092933478455256014381471916195248696301211770110932876639040990534899470893315549074943522702952116838500030715712535115658980877296998548811581895613110645643255674546743382942500660136195472350143057003046954899989732626848379209545035903139509116865670663500491122389829431063289800326255563803210738396869948441156911850812302281666436425665573380868364006923110655281397060130742432095667670914684757503276589675831415030931337376438587520513919363939826706826930692096838601471359193444022600040489140874393434465618843773762258518436831997141370403031921255193340350960529558206839435693527682039060131900021403422559784683953587339598823172035463688109929054368641387680697485763377144212821822408544981864609550660765321304840187980942578195477368937538721934597861361529199190705138637323773316665642085219073348635982982971800390457472311471722742035328224944947227718771044241532747340494533622802401124698841526053190778899042102460654624350408356287148764729113955784073952744976652398877722611604355984402695945924199500459645765356836723602881666649796972588415031104312340616172269929023121110052269566190347561788157067575842809763136830033541389464665133896236318348604063676437487789090673114169437891943023526734654537731255026554405854940730037940615456159692916715551335246708029356347550137703359836358357821583335289620538982844818301672622290710377321993700129388987828422940031593956584499760856049096218804969197516158437864225565080226538809805036044373173857555583381375582987362216613158663594369317884056675801363113527475965412392419683895041888239090118859193890169492202117856632536620045459115836915881155235289820893168829779313633675195447254471335497766723743067969722315537137933333652002004586164607057743656875167881767053396163712551817140291348917814134784251743098427769960467439733029695678045403767545207895392342685361497725706662885012334683070551483363936434274947162676418410669654266038512239434411774168115409013400408395168371851145896713858256282889482298365522838390759604756719410803641299144115925268792207001652167599099234528161891614114145285379796433793326038143522197718818252277425466291030787140427873257687565572238445936498996518032871762750464536194650854068199639455020820613911204844416057685750960448365545462772298956232326550315209069879578679459847067900202791319764259337992290123855853899836068271009624552010274743882045711008273912161933019686645775868632671154245435603027540203334359321152054018385999005284091915615412405404207286798935774211416893736016089989905447247898269546095399781188781062170988831094891372832625689499612633248266254081919455021765508510939999854813052298859861686534120558481544722395478867794782043415746500916116888145657987204046387124094519204358494016597135398253687757984098744160796042700963178044414791816394818467603052348744600007105564417874054349994919685147852348055062913857962902052172340209315175572533718382659839039153577032955746320226329942157461408700482937361072351421516563830298189656281882462504328715712461285734157589718567157099261121617021072771968137058978960179250591657116462106245836629551108534971223048180161802414108808912902977155458708504940881225474505270015978797996066890851997794569713624014827412276446071377147778997045461894916989586201611008518362962602010986208270545711660664685658113653293777872493573953583302668996318995617689757257872724932800310487563507219195879538298864211122468687200116627984759929697021016900107995567193045693792956571452708640216794154879968457392267755108044137179341274496109138881472348069135965186677146982743383680625455453007581489072211813883759274387569794345170666718875993644625479670910592153597263612706175514122108317500692257818382497204673732485947756103870658282671578761220234806223432718556897688209184346826257992935463529605345150566346311269980333395112646493694396728427781481149696300340498467040664776581011481519241145399692405668786967836361729145576923713891723746453211897600851839083751882464175081382391703108749365424110417424030654349534984336959574507723314994400120724271603876983348563749934569152953957488639815522676093257597106740054573672617522416324362136582040527692034405755666193141626955436847597838759628393621484679479206365897853489438477743651789911562212365539327216390969473974430068868253195359287004969051016421104188275324827124656428498961446736651925655940585255991277996877859776025192488582870126141149856443849669020425619623172237445483495555943192260313907081508283831808127045210361088247331137460897108158563575451117395730703424529826227292999963333445246930156444052391858114924490890065966675741313303489575410520575204869355033295841532079457944979927065354018948478619335407299759667668101442977027825638306124233834063540991577031726946951092738582286176500723258049878639252610558668463128741947915026887964839110950288036276109152076060007979180816670256255423133683110453050548592204340597226827479254955342931499971727145380410229193618195468214644557949642286328489640196967165305403196374234708270190980533247246804461632662467984319348058039133588645058902306086589916894681700861790938782605522001447254844257494418331414177744222679558282956598934293248188116441154257113752460459890513498716557551726895314262756212436500388730833056056254858114182206555237689167591786430928922595571254844929809215788972004953503025777853494502046901422701164181887107571385132704111959380309606529634801482779175034645528667297562815418441030465965420559172476682095657021416828873077959516862148899697318906322804911184156356319652912775207085118870476240416057087509087344390272670628585899478485535069370102632656388849828128258459861145505019223537111633926304968085269306379022581740941330204937351483356001303923519137303343927387308518706188520195085135340639117517653012892309008604789323549833755627332509197813643047084989425121336497094994711286691695776607674727932399336582559371488670367117000348658948947267649913828355824579057089053803351383674915252340461861242086039175886730014110117159492686875586969597263209734603349701526534998627875347800737572106394948261936289271459428487140764079567897605602659254194024033579403650230475965933411565152499313260859380581491654938197525927981137530853533750318425809709453364675218979476333684906965106210248924337566106152688391515014127233359998241652800069104098131259947025139208210453491136780774358946358577558271133547594599106693356983088487275567150193366354642390873797802071896818456109099975769717008196005000502305481086488189739308646654534595325367904706841575847495080614687560461131902315588962372418662641356132443332318353768049728616021241894271532603268097816766553507704952392831654479840820421592990629011192878867335867734029881592276767769640515669576470538564767306508463801501317288401641913288574942716387222194434263364491998804079676117414082857763083770440212507491507754535474966771696306741020463816491601725024299221472651884692905105736118070580231884412171499495488713491869954876968040047818355823477977538717083226945084410025326543828652546571759622190150931802213556891532086427612558138873390335392406980818205262593090285496105519656393466947100634553709105035548168170782378788602507312831899302316142299553097075525945862342412348365748424379907997825879869533679622473395790435771016418409313248093756214087410303967657706987928423351336464835786355766544509052313538231431211567470081854708597437591356499698139685892380168838523442454211142396854885067036485384295321333249465140046697495454369495519111400838864400331307883532069451934614614256113249276895127503902339776978656760902801070987179493074954434080911545492963138991168519080599380281376942922495611946683838992363708783434563864918842489350491677796511726021450481358465975073803236397769305542099478698694354926666089125875315379843047615349558387235240891735503303183798134006772350702985650667893681621631956006987899465698506105258891325223753632751007246775451158092421217950190175314415157135020981701146415256996820045894486597180239840434644333278753636891919721268160624955657988414706445100575217987044187492930210271143864381584455713860704953247660040696378813123484186999547859799901388508899587428884221135955292997805022863910487005388231094184628656216195608203404548422143815846168369658408816606081276798361302521613824625842777834574679737513133749129959397013816942139068997873650467646275013392034473697860598165970699267027390766994078846333029512123592593566736001996904467945612051687527471879400564512224790564629157047846756935657646373113400047931012587910358979009734342811503165309968009477762947468740309922094244428471289496659364486295586889509290354321992675690401791010983946187046735009645205520035106297163119483380580930931036155165451667954347587102065739553174615523525402572393724843302907086267980518183596207083469585864553491833722995358050845727395340760758244443257510931653766848536373309640571866552860731257143008516615785571805588019128531644825444508552557952338120437256936791644143690205910371525855733836044914992780915719515518913328566656149219923205799437585500080571886876846771705220177293942732991963019944437490682919351165657690484995237645986205394286449116238468093171056456570561172113304889551152604699297672334946711669478226752727557662857723950692830983192681588900034130560317178790858084528144277337162111031127612362070114778780856076323437152559015388487602990086731316525812192146291080138584913268977730538903842859878972534724334783146574063572133248279331134494012198935405136627101684239565743809819481978927017397564354768192097523817941960736351542442784864863585579256353819569712471621073131312246193640012484688938063690830646650950536445147422432795116713208702859375145727007298101141060586146208402756121765097586595256912184161042457733829382730984252499231153637258111806774428637117470261162648672213195526041670365987512959777815257148705652094979179860814516696783133030541166508817005168804290605920960271877059992055924541236297729284137828653494220346652321584198975178131069409483854965931735396211665263053142634530964572091307544128537607689452293708140037259120521875750527585063319752261723927648933335029350196101799762684634596040473011534618403474159205879377785477735669333511215616944269519188200543358817119479099992541669552253997615984839182144676170853617103038473564100469470405977747088518709952748012287075935227970071687266674313081206213664615017035983115543884054436884685227386531893852476128850400416577158666475722266550203222995578834549637132204247946891816164273069324579632674428518435747640183690681799012806179170046883038380569794474115335697582390128918809283940503070549788458630274407656775134150596488220497237471066182187886744816499632124049580623985718738041118281704890383591572675809634032932506104658263913058912744775340932234030902526404511038144060977736983142461106139612048714524337664402738442421373273546277859469796736256875281984827195455096174240020748637251615248292386464247264170951953585543663085642283516174896979710583497053689227176163263368350629470234999989927956417009502037644459453145870788486649209179250593825152740372457666054743959834297753872314215285107140339956114317885763728485122597761673502248292931329574680829672929363277694868725831192451462676095641274799137295013352109285352438362401973692464569525126517451423644570565742304373194399151685775507092275444183096535629796028284905816973107590532748535338550476343625582223249924617936289774765764181319713947336316746864908317659520224807809842082484573020186844483958058954577361512136692986929647434302040969471389680691016051425584150583660745120468686560544934331576272186832470759335970266291638372971586424651726535026478414359025697458880567442541318583749708514046880457555356072295378492716722525444768206425596569155108412082653180782527254139721607783440505110331732502746422445675454648585284973593882903372985550164650989217782360947292693806901345422787823087065086024550083251482502668367668111136140167837783821453314594879402252662293451367920828286039014778341583540616217929830153333876205766321181231804406489647282471428739636260708913083303925967012904502947884641035943872758750686771933391272536087926210815576284524952859955495305769013443184035210408049758683898855523015716387042046661982481857137424499571422763324895211649116511845685419507003478431183594489166142856406017513762296742139043404952930086501845362097858015956659311591254562578334173820068263299013248812948165328332380904947138034747597539373953253019955037111050764698505418116232318822623478871344223489818983980077785226191203903026743106553376768035195797155087620299370070395864428257646191792932144298668706905569254123140502767381353015173381374318599057270505430250682457959341170930469803001950992101767109296386713518946521737648715426015478473335879129940807949864960680280448935254755209821877794125841533413137039502520054065108427319984800857636249018038258181731867485622222865027797443108476023655310916285153316612077407562394892564753884046104626566151906419501306600933183635146811820739600860624515040107798699937290518713052742295553204035554647434573906845035982942200804269371134383906129486403289385221714100233333494762445734136409415086934116145983484882656893767044612061640922845202611811614405744107329169130330933366609735726048600002931777983743306072617547342414879273005738941344414976755712651753909305111596430701402415607721266975118873274209815441318866394469348307912015567318977456031109521164219410092780074643732189003768145975172583692585504875347027163916974626167355475511317445450849717866918026281116114601466180721747144295277203404346060857569322661599391827174157396832432619318664177262205186505964694807651923599744436808838806063783104874491659799320365931187365378990365004773764292566511668963932400738031496916408761827491207637246632381424928887899619785109516543092082531471267038029892681653707888675628074598304097753889745980575671124137216493484890833429882451469559302227194880398446967381760550174555458613251869350253722485263286404132297707307529153665062732187535967015862016888914358407982182081457551577117070783408386553573345730897480636811403135383176499242051813540836217441645745604265180041885634241746525498026441702013941006798363697951185494647399764163844908179409401044254364683113437973233172520550690786779406394050987008995843383156932430790310223515489749480471929021228471911287773126731574579517862441596989095166384760777903768698238999562442248804146720712492901822118723624418761982070658343468373493960315271655288193111193673632454889795386430602488892236401008389462609055911843274559504450989983164894019422046553041241833734729211377188398307257152285518288596347419012759426392797575482349633377785136073639173028828040860998084276511987289417437217002518149074122860340873272110111585039076003648928033057212111148847489303614188869155402011816413563316342208938307943535874173441807410614619564934754461800227377278626537087784531622277234087368526498365762729040061045250655793602650761090983706312942001448472226548270005570554292988561655337913511989535442543347750936703716382421681149889873311278162086043343405039403084949033613121362596617934130626508341546659904041439854842277184475923744938029494930519998612910920629093131553156987546709810586520664822035596156272995040292606408991929214175293907369619846163800337695394403416389461037067726488081181382166264571972071449098588258664163921889980458908250807819261945043790467074349985849581561062288294735377893294826263831649382019097135832816960132149171825672482797233008054159284011638321892865033901551307565148832043646589483621295042974060812675067537764177278592358698281429400362820412147857129904857082960855065067983598884979585643368358468526713432451284397209657173642452709762382630811356335392308170701600746077957207476431368905182249118024850533216290393415118756862185998934732371921476541529460910666887608731119973219681672954043723762105275808884451332460125810842711966212326419475712922205525857573490997492218974922037996437219650654027966902137711112666948784327668924561867027250237965812278450031896539814414167459211447325087127648753302089995756751874740678344811112322474447485961100901846455252709689140318707725717969688745473625527795252442667815637097861359480203918374126654587367203956872085337315258135763627544765192818084092832980818101970262394766291229007142984505207825051537525626244138902133581220853991039932044366244456166011080089114898203121656738140774030044430999975145519520192164561755196498005058820524926797124564372905348890262069629564202851336986201126066766194748130850064339497007188678203302171844104721584726886274855115153680540402348540235156382206295055626583041597952657594835210565308473794925787328425760592200653680230050634010318551661060329880472853895231976835418369342878467010484040382594851283888433906769718142033159053411596294074738619080607280028685145414095336394242368983843480774918151936591965354218872852669787520289380817534319133940219373218062843366631990948430463685098899597394430564807992612649165702876064609043123096602280523444891632765441025707206598892633969622323423049216612989119385222919303746622867664511895506735744506822935825031875642204608687556688417024997775089582082994488566704145924653508860385420926337815004255272911682816955503352852020235300471437831787535491427801274636464664955584882703858676703346399527884790062025323626249792137000034938339216580588195385683400902453141189660451544064866720404259134539189890655600841031867263904855017858005587403210852671079647724269713415259447874568844126478392000337430357468911687783140667877584301681153140196516967220269090891652683435606281276345499984251980558810920918715166657641060872508377252290077169522640694457690562427620279335074484651564854128530358402242420882985406206504412145018556209448882604020413978379592692225952661541765142274833594009425192355950807625128398620788321281329422011057281259485939841697616141637346994527476778334088687955727711385616153004969199798136777544049243305012765118241952293006854804462168365015126650676880931348086351116632783950632520177427006374615041675622496612425971263080699177478140202387359446906703385741870245032021096074264120018466788480820909942143651440188359355531441457709963187357571193364115417672230662404899499933626864283223763899989293624106810718591404129836009444925666402202692053887697532424116663366743451263845274822250885784446890190711750568515963802664575281812735123465531925455204225014383511712778858313828526471898654238800227699034573121551914907965950600957004261513812674416210841165770570672692717293357311813276078535627699753810527504341476470251203022941383102927933103793570987708482884513123039647461472796249615225830329438959915225519822060507532547185672906718377829491847584171074010009568378854403616756312977812832959155888802964110977914413704099355568683645534471694289971135575439372406602184432552649777688770012616431477973933020663881487796612467661292670847637864739867636396193615242863761292701401872714896320856660377073440240500725427881245901186031344779074286315936741069450926407475392131517882597055439202591898785097559211529479139173380273139203774840353892503583878797898655612427200585157844376653592600379850187458957385070151909730119757863424335550161163300949867245359667095620291975561720652471889006698033699441710045366025009928779254163016428683482286232433110475281388386421293808255359343632874215735742754048221244891085436989781480395257063586122467629352745044800569255032042907094295748687841811265779885307332013215809245103465619029405878926440767386093879798157531906223147539130251147165766070999858804080960615366270319342454808738097941127252403211539770534630451430108413262698811017342808090898009892501180391442275228224322551655700531875601708727074842074531838796682984909709514746174264289453508926502622881904160617385272652892528454932658549666765820679265139911560344255561302001108378504881879729824784300081742542626238927763563870438467175731171075778263224035742432917139010668866756744706579835212365498854133433595590686747220260110151690013727197785172752777053693235271163254007951324866342817788388149568835493185686357888050093450178262009787973168673038059732863588011833735549589873529294815996433189816732423669988298019659643454475384544769296036429780363042324104827224188654689995499658531742449597553004003697660908981540700511287936605351330290580604983084545248889627587101722250819800028624025768456231224291824438886472026653977069579172029155523266219077129722354765161061449791332441736501476953251108907414522890188834089822130955114955642408152415225499595649598815442703050218830337331648041884419863500731887854708999310062995569410868643396890759406806458273394987189707115950447029024569675379529819691901797586905522065958817454327568618684497792634337903059032962452429984107011761130520795668175006826497718158708274004428626739732708821179472626116802179730316533045287389391104871013208064056568228313546851635622719861540122715706319531441596619057345206435446077109763423403310388120204141970658203410425802178469693644332455370758720399683385660449705482661640520724587556185023695453126882578895712864502905812711909120227085922770318790312984535748876513820432370672972901399513217709518836381900856133409011406653690711272284256582697673334486568748728182558806392428189053542354423451397787335645284350384054338274463331790215821010991059325528843800647549088199881277876591890627554866217819902873985841186840485320271628280113457636295343204914468907813345796100000839625803912818834218210028277986993019160074796283438605235731819314564173628625688026141840411555184095348639097428534585321680990879697435900654449509750728511168933697436278562905040503523917254728043913121564470453548569984623823363415054246459819193320522000855175284280876575361220590547485706374894807085576722132027674632835037721820216794136432455603814942048042365895423754060580231270834913977305357712043697876493961921498455636907825021091969031072971833538747649935764016053719278434806155070708937098356013784056408500909062999616711392487330383191813674350138837094009306588135910588151114701585968901256385077528243731235200138037126545391105888443693560090943247907957739638000955056456936950464864824457629963430305953954023364261321122119029357212191191648412076214771821099153407431249280388048586562253803111204686506561317227702490802424125242882427489259285171262870414872792812928871633830378077831779911787160756818054681407067958666490350461762816417148470046507641113409110029500912043030891873139508239316459166093688072110507179286552483029833456103275117273323319950280221180360052079399845095715221880052381344674285837463283904208295020546745696885554661306820120288298147267150079036669663626379637307304581477366195809039851272485517720716293068323946792129760353464697005046432036723805405119034525310161347632311464262941041990715983040618829484381678986445711537344818596479265521073172387120549990580816870993099088924400949844043038361896566286989159322729850685208560088881783779763881234081701199562506617601354483309697289742772827720496093562331607006343888127649041321357156993520610434779944316121415389012510851215635942440859903732775009288130212140578220812720403683252753182768248757950548004336015847066976609672441525307994394905467064905069300626881382894480494501427313629950661254219392753569071698159402613236338564505086076091279870859932980952701089694766307699853358672343527474777544566153181753401268250801140094735769143966206902764165263571493980991840022631665222440827167811441627674323745584623871047133522870332825046852586401639201491792645943165104239783330208907029458857663739183883196748702958140435101382814530401081583931620372442370405729336265472173457224183755188369217158132449542000567858987141379316039918979817754989752019550345282397299849029727923625496856306255847067835596084186700747266169137722597765674901318335723012405662441879088405015172497252922080063141667670452281231529938898626259575705244517464833472520052331019027636072021033215203941019364790967650484168045048777442702519413795127958377453363028021621652541078360243746743488960731555253337459416824575552236470663231641119884929088437412124929595410790288752223022296044073505174488032485934732406645843762361029412357868722612840417385481906360017138514556472866823796400145852153292815628293428437179094346273288157441230336595219389286262908089511636081762062578160282471755831151981837997625106891579563345749957168057041292379836778318309249088386697255252940659368733391072629495549082529706184285579544314073020359456966831286812443697373428798253196006968128330433798844529262549912402087187287558194146324608490433441939754486991478555284239971533737073513937816422804853850905806850656674601168767341957533815324063561643877625879453245265491753470519429692330798745134464155919652592269088449930605724452414580172986180127338930681504017407011040320754560666053930073853766806159672874421584476195126616858393632892301607319104371890650863107302316110119855412788675449219832762413778801427314842686283067587892448864843085810972315513061709178787754046589163268460907424547845615862812539437374346777038124889034260397250722794039607559487652008054693018939328420184592384029980875020728217603084430271718634108521737148923377207945155715086957166993824982547920887267057026344751397130760509956693961603718017968988500416760579850747179347873965511582996193233845317593497357896463272680617954243894704012880094531980684868190288893081722102822511407413699314914782582582385736182592533667393017540571194382471238165933171929034755741345022908135655701232293264902479053760454070139467952927028933698262171906640497414262253601834449363043082019767251733058452852492068397716528677797821805396758417025361944968344086212280164534215957489179321341668429703049372844232224411965333151708108455622281287817267659892799616690832661892774862648508615139318692691366626696608472145480761884986237340345189530293899600965778347195770272183217557579902457012868910876282812038316536593009373549312174823791521807000370899471522100503716245650483470073858804270124848065019052916682843559331550772133018522143240068151688723151314961608816324896128043558295975414419036989864190707477062069798404047404604066694285379892655858253466146543309250412323487448055585486013402813308131855833353140163335850522496502463716402782597761369502574115896769983100965689523931668474395256655274241686471683927577509898438316078035412930608627887882878511555357101879763402816498219932459150078252137575919017187679728302622698349392185811836463676201198652062543546925808211613269665753911144521408578288969679146362643764942673229425333029783456050475961316325992139655357579026652965319687052726199103405917488384432116891328894994736033536036233570757610741643079527918637654759488203581602951390160032596987887002279398501422260206339629948868383329619513181143520594761347147966836341299362078290881436643083075006163653542152381164324685983630100822106923203083786098019303067589635223248596753041349286958970326889244538611078814811196517985712257962272710754822408072239852571949254031036047704129082899693349106002095716008114719843578815954561470217818359553230697957854028086948238313650754636934893513023999953351652509299350846863931521204308086379691318173512074453160532779273453835529289526698343582908039057565798296823262216322016107340047697857010686935707333480675095902068342399358746860160229592795222345302482536012701449527029838933208233226464080679201829857644903841113769024528845590155274644276072555803863531635458040408656077832212008618748256877064030807766939793735853593852247279852531424438225598963996529939128138715519466226784270769622419790912873814464259303651249394038456961430254383525648696628876675817950520018122777379419406834568068102366065986414009586546045917272697536017732070987953585809632687834377330633818326317188553122396346496348687665784865068567512398943922114510469650560491785281634529061310141556347583336364956814838555660723511721040436869589712904758699736736613191321129799488507495095259493074188522946261725957144880882981024310199394103410749392222200113438548828430285104200509867701208256565632728952485113183617519908024375524647651472415294571210884658507653776642777741154678093923952123390703368858144043538602446296153063080352073053151952505918283009304221785670417621762136526284397701266574584592099205400604588332808176353041152800797148941871270930461978311899072087976750401842803343744407148039251516263362223711347816477255194214849339067854227296319361896914696762081654442657676414706571583035606864817732480043444871494130081310202062278526292965734302115659098831027541400952273899621575071772302705285075801538191445064751610361209233408633563835701443019180790458167897573083221145281180807279360280938760377001838489760238857834512693021561593579005398606578063257870308483871111088986211372175800332071520258895249640502954675827943670117140547578444568082541522500368948099606006759981133827598089133304750735837143153065233894951746795151889032422444832690574785414944901141717216540293736993368219909446819027340556986499797843056777650485156789371822831606642868752873037413570859518513572582328307079611493833929919373851367469316144047318005340883859567299893753539155345264600251507859045849556149354077334349368759071476313863282529086184688252436625736883743793956830360086588655667924691390094390997923997530741216549168949445046946246638008879355254262354764365516342187932635442806435668387468287791805705034763303687809202424373177699053537413925970827688654298255755843717928378193082114526250938292188087671772554114702708231540615533426331641235605518892480503653211151715795953989728626929040079174827165220823464458551647901971053469255221518984788269936229963461709691202125850272662040850079894827866534945920563986165284133613397104920459409060224028009897388717413268076540231413702109475866270100364008108732080448162196514800391677316396108403579619111439210235182990025407717839204590550780642204376327296174827812683563836486924232254723331478060390184619490980179795838183042880376488789691451280250664658633863440425459158628959214806668026061837648511972512327320365622999772902865482844809909486049136482546518174652020503843733016919417658545301511944214177283432973958736794317041935352696121762288041184409793824088376852918720916892368026791514897873320974363597566094234534204229095246086360073519480874286375165390867179056248137059506999201993307699372643408652979096874953601120143235476380624304848743562394239499968118177542980939608501863650839990585495441654929169461090089527573811532347759034613116078730544313865085843799457666186531570669987358888447561945166702522808772495964515915884017724690447893267925089968019781390902897872852125946778016023113739625927456763269332961404341785763803951074810190778607600888227294261188371871847723565141745436251725094402197252440279745710771072103694763869248665298266816909925386121509929020548337968222013679983701653136715380641454688134631394825161701284273667310163436101908799277372500917208779268053640774212231567223999237938314693230376137163736498140303435638227575114110728699249072371470886628396770971252330944734022440976174933147992983620600526278620680435244233632194687552979836286666763564538773502210679779775551996301079799729436457448458957789942179239711550956228708390106301218902018873081517806774452564713754927296040075011963188565629306412274944378166723550817370997256868586558054720690870205939079897226510320179117557158264745027835230051719082425394792446003046092283570100425994823615391784727777677587752203719441730356754383268391172267533677701431223693486269153132711955454216415961457670552170228635125461904918428174709774181773997896965373523411421275565172599342510257028059977403622302506491313977961269384065816639854547942390832723835918648112785757855108725433060414272956471413715574461724295031879321072686399116112272595312198556062771188662687692608290765661535035091725237911988408422456504485586982958718241052827494682032804541672875712641683237842617649378159491396364128115643686446897148085277333236868306281093124437380224262633518882554554866057091950131252405292487870107611911784248156292411381975311947932351309884025121184532415913229734971206510123460929581891699034405748277080952676811481707744248027129130925294526398758336325593228115604872761701492384690256680570739353868881347374773746550974590634453852661124949253570825187539601878214788503304766073315599018947797142591492833119254824976669149500573514157065426906676431688461676496615753187890042028602068194779478140392432487196056844319296766735647978035609621802323128862998419196730015906862585156840978133264964549805887018393013227982294777914732147212879814245016116046257433537350629674183296345126004059433667865643794357339685077368511564909363241171099772776722071480867838053846582358775212244480741406898557184339439651924031063777853380220736495458123678560260277673417371433421334540916778691104992077422310015679115386262799229668200292278261868827909048436008140232404174732179226459419180063532160764728257056295968745353857045505461662371934399305282251081926916448148663642208364215321707507050782711825804472872131254169254794695543966897019364726111602110353327574654041747152442280280157375074565649605046511160353280949984458332909954755717099448202996558246273417455920014596472664874674089931459521799450667810098629906205908798374800037063119507709594214534057333012576480455762222801461774633087065439588228403430281132505387057806219227970953772043770575942938956930813959123498885146807669047705649464870664364233656072908784005191109167649870028208932277058555671110843621575755110563724112489999888491130640255965263135485747686170680492970249667362233219703680067398544789008582759632497815687295475603444775901860647854542362253634874505860794561615883274946513339656747359713738362703419554941137408526964583019811722100173145349957912660041714474792521746482400176524330056991490076087473477432025057602192797188947602038711634551920317908139354581293875350757867953253583382596077691948794759879982431046037066678800069833676738052856058214540862908449298696384699221902745871467364416084642506644593115111267046342650073728984050046579629160476841614305248616082634457313026586738278203956664521054833309489020976925629740241702880617069725069019575894277527783286593694609750076513203323797461492021817250075569425410277427693306988549081577579641400627595979860229720812832883575313097210413642258116033766890951950097416976176763680265519556524929776050410563985365807684079456676232223800264035709801637046357784087739751651015000435898909903692867160595488171565899620508726228658644902893516188610915356569742869564295397830125102572822109747005092761535077421521763888000790359071984344697819223312303779447448815630884710017243575441626001177269194063849870554792506504168515525774995499605000678059172492644095626156669392253125596993556071048265718817052736146595382086913948337856617289062379604870859971341367479797321123975840895183954866608169023921875279138476132863914239054004208555483313919972499506117559513017214968140821523282705906487994676573627221709561325248612884129023731627564142586059759743299290175821945355191741699272265780545838810731248430562225900458797342859489679283484460305564681373713383264065910548179908932369342553860640674392018372758869386558554424445086126414774519304309651476809440638346871264291044110135434018048533415885508356243308104463785612827568315698832594384582188880484993759473185149968615464504413493213413991541409523189309228088794102202335867506319964569177586182806749269811343919673159058294053311380366562252343229931417728089562727359312653864872163620336614939621189975436397322160837623648645576053938518909780806759491097337385119654751095112008715557825109121462579322565695161617558633447296516177676743257449287187468822763925301999055892602089100698927625752919042351676122241808064665542912990386613336090221680307213809653777563851939294315978217974567929995055018767480468446429872346662122287281672786418748423887286865146372148001630986093983294550757345026486075820822576035480502268224754278978180865208110925682867536230995311682421334978570266899963446179707841535811172166116924470423035073815469625290125183081763964246757882367579308030787559218949275335736739834232515794781163490256384833171356345364758207164305742191019084449155640841626387526300363323875344455410618838148522309283047495022471795909992283394437846802381045232005707485713868565790978311404288961965785730460202784456408236257052613011550184082956370275474094754077196208043187942055045479329891333748395780172242634330029072519659049842913481657672897050233985232213998494485687122603856103321807002537869553492623272389014895945709111060509926795543331331140248520127279615343013471633808826960572789522260929885532182536839336889171633839060601851859694795305078862106948550041538343049189752353507310240169729914068996721840485988475295475247270061942181897568150303176020280020524116373952900298903102876610126340730098545309261449366402082141738135651682318087988672521552124494897116220866814618736544327647567991341688744347055301676658457329509919881926837098314891710883108363237853197449644300463992442649113902531145183668143111339458792349891237360950720890320301274490361744409707600644711946347346385702644893676195840235447695572993476413571297861409986305832145924061183180089537043738700642207592181504253996830211754780057351756952867915499910131818778987275053578900309667039449672614716736394570287160732312651890205810611161616337901010613502536480598276828346301272406772888137575259066820913105487178022695482766400397359541001973693692628956241139555287306138022136917205067924127607291127232045303655745966209667653257911064169377013211723243501710128574429045457224440821332507242032249151406008266981826218162094372395351281366455807213023282175756489726905179866683410935105836106462613308073144661524951834624394896864904593019826700868722660876170314522633836488268787133391766655079732813857665410116305155669365229179891115762577883165882409843225230433460458482077958114646765507967943601455788852509157283467350445351331548857975780328445434218087377098859298934334036652007119738270130171911593414150577990895881727627451419301152249376447663241184121054994642197579740477618971524919032917733040142696098737361490213812470113654005415368696531908682759991035399271489212422484742671436142252047204632802805592326780970362069003674221797163025854100305083528439708518014174962377006345713556311550988208338136129985470464520895508611179184852138419166868144673275349093617916855217780978350343423817269642535234174184700077675651283734183529583998463441137737269799560477613775851674944047932933251548848803681428549132202879699530129858877640307696450503028864031901077981474839648724806558652983402101107203504788450542981090053960612225753000952687479250200660049452792939083592463001521111721397436781240632705510043806708283745855635368407123291272483310064210014137357347208013444317298361034302543364059788630780319469233966215070161873764922994716965795553858918469870453292022406510747988972670442784840443596931165953670513352615069702657352460528535917611902910933753096604199945173751064207469740994834281340672909141973698542908610403938127894306818763116349740718977302340373567169935229121130212664032299377429989639097097368411072323974454603319247560313271566487362422303888615161872518345724475761374614409761191787087772744694131863524226431690523775644293464582066155975856897161288767971335059737769225545531281093315077086584828024758597026979364389415187144820020027579826808834522686025555989429827962071517886994767406966722083594898466974588723608002172755781539810865268870801517177422771147021144080525400890557359758285134023302982018013056835631672670363635505911794899840500787121428028498789947141679720350297070099118062769076306248256082637168615481386461408964837711472925784982131982505461940167672589019682851648078096043779059995218320734148795749021730161061035367303973686014512857381554440441319362233352028528024522871885725668533041970305397610745347054444411302945251863583806362726323277382664938781306179833294250487428661186620618985956068601564265887419720641862412539001893234311240011235968304179327760989995254593202049959159358206996472049645514260080141499331070314433333133779182592859558639045626743387201120522472576464487712533296825807527782624205974075287747312193928600807964530159027268990650418265285073656307280245048588661891141629921464614569100394194573569090163947809900678835683550340793418832168539286110863255292188463651105722131460733160738846454645324513333327808274723468975062012411882482598718897914752447994070336466182652132494365253176431333307940915922392670486064718179301861495133118543237497875621615001972921130663618867628495316974781344147719613986672073470981399607908452362988010149867755308263095996289962568709280424471663827841001668875663232307997249790129045217402025314190605796363427606863425000834204585010301699889498381200806006869576297703362037142938578315784799362383842592187704485460183461692649057685449885316522439035326640512208049967183364046289421665715681291630702915018356415145448530301042476008700820205372824389814925644850760500078674715875730673839038980920953392890057812027145518949658241745762798186263511942393172353889461306285065359196896248669446066041930948218317339665795116131314091318393348483911523344388431309158886911832505098906828975687646773413292660018372619847291304455110521870137451557822929998210348183233085773278472452962538068456694330881519306324973342603564320421346228114880459981304769933909821059953458322778570498505864312503358528556692287902084992314868106858735779774013513978413022200483324026900249556737056813166150480578947308266710941341265100882643009687397167673911046112606026091671143227978037618079256962311524447281411821057037676704971349583519906923119893630363147053438779450996517834459396615708344966902114394192056248695314209602504190319941725117855398869761327981391276829266597009174010387603556882573488873774595720256323182598216736188766892655109276861200940409143874596431810388896318187538216600156847623469387765336071666537828702558141898713294386164618056121717534799510868048790470578343720138308889620782390342320839352612121938196949498104546798625368952058021279110994992899296096532447099703988046592517044821955727542378011534282688627815969653308568712027275406468803452774208232944978881536065235424596927591348772575215999327081559876102587314039922073526101599702086852440763004878270607172348898390824779346036279600745572057824812856505781048837936298683193398551294450654837382173810068704574396981686968110949793278145713544719585786117315314233710536164628815831865261145052320200171715794070802554878522172038578722126710569434536354016066754889179413566861819751436753933385693118774011395156848861782214936061083919453301156891798825355366091962276759624326660019819773211309236074631862488439522117898004924352846413648475375377386871892069861469942885073514344173207050545423563015083346777821212871751690390881733024523660439913182812866339551559580660053057436742533496602341618178323348478868543087570396394384678676088505337074310779682312686259898213775264688427081574980217148826618358496777770814663839388225645774348975493987629058587680022495274537595888442245793230279134978636858792865794551661439855578473406437047874596257578244560376545440830913842446142037765426775237397597153269672338021507199965080542884813238769065037202871919521403624775965265144805345705047715747488756663812550409530636504602721958619702873549806430844122095194278686341876307607071549260417281862189641778896623163915538240837794394417444398649978724340814106933159671233167514259794936168432222601181685806047969011299403377558843490957872065170524683286631745063298955608550344607740766063527983109822457701162067660620663373865548404162496918900528929048746389777837527122356902383303166663894584294859427657217840453121343337591051419741601955342201774158925643016119631626245648852815997527497224374295678412989521905963799476929580726470560920624775287173244941364176866403480381846867942788736785610573411255634076755463036120534869372052176861831555906919653894205845067446163166156942758136393109658455983384831435145125730623760052853795221642057623684715558411264662170737749035924357696419344312929776467909835673155996001311859139089669602349643581572548840893749846833395093082699762865134441478243033278834264980543798457753650303488112249205167271849150415676002734828069673965029938333912044964615098389431644138457592171872163184110273561918037967224312698495277711418838522690686751781036910825642129574863449174531014857400861486894026577306912842943248198709404532801673909430491490686324763651649231030409019259104844108570450784846352745505837958136787256383075601532549050818407649385246455930605075794118296540915529427647682360510934777208014007543048213358439746685163834517710791004987839389466019750617996812321652579992163144114652333588359763055795433735360533730832078102400195712727864822676868311142580897062074723643366854526407454514618632829646307199304425229698588912469122416526859210088254228537717753551941714998735814578932061693682506637491510603708149243566728552503116807166929152169521270999698289902347354681251461199238241730955648349700245108197510761369373578536761541620165788089477354471252893230618131266795458455562636623679657306029049444212346221290948609369362831013783738329140926216708663318657281013160655533776143743855458905228213913784683659194241905015158164803064411737542587214554153665692832534149726880599380790310941734156789059036474214311269409017886941790568317093973039228493960293224132028061233867494275849877211890849273040057690183661103410519657698329557046132514535455467515942546579737373919810270075219335619764395297234665580213330713326779237762356074441735161117642750149113229651853311415302474214560349494843965272755264650763513173438436536227461953235916838152271694544588475155010507322968381902540835176453127840309193971433739624265965189484438524462528742709616844375217067114942887420969768438691810116667213442473810798325292847650494230502447196046200306721128460201266532716522110290377770906327325854936025813009309694233176869759268417678104917943191924447248819277006929367958568045172038805675205500775766739475586718836338453887118285669931780905952221991933155104708302092194054928462379217740825000476348012993588776204700735553476504014250490577082749756730629078552954633320200898100559630016830400922040755782724703472599800507122098070823393616416808627633768154297767618803923408987750571158851191429549029759906061910362444340481277452945229365597467310004792866536468562485642973720478166499159084823072163251114665354206335329437708431765880767383059836600144589669578002771579754483275240598817907455785329814675209618588326706952942095909706480784219826384932123156906131100382998840465920391291014944840559946038658652173056389636479137205842923278786664295853313285618046501916221507803316448293318875484472991893086482549237051593062300699428879793272645058471723763746791396708061465051804746036526006914722037283455336535155921822500306582556855484262369010651348761669468819306589593760399027264411034947619057225859200542823158487013738814667369788968277200701645317358401250112781708088417059959995237974102708211402816482668714073484691291505065711631484593855985309784576636853444310345188879538395446489642800170606096235767229455988887266602572044135430251084280274636060349733240530260503199342183970624055950757188865156995250460509610554622558470964887535286113114789629929633618826889048622347552387973356197999245796861149296283008748242986190753073446111090673484288410394839735736957793723299316546747991246573615394559177373929027151100411006526516713152154104644336134515120741344826460714880089869285343271707013146812552676095528200230160033915997226002761410153904498612248998662286429874154673486620728319587570370593447653304702087963662089188002464830551945817833560559870392042749113269110833715445634728699780472671141604707974763414017268381583050613314534456104520728303168050797656243484376077370747927431978822820916898885769048449094537213965800075754666207403888504501759782364671101043630755022949228007329280402211054404022304934243282850053814898661968116878139478180623555199418553102757719560383724696204364667453685151902360264949168635477040847149219478578569817892194142991543067932079814830072014340344215385294789615412702180339259113658776346656287313388965239838237822563019084086521303636475815343865494124169467388716909394594542480521095866052038076362299247982672061464589141392193477471812113365103345532855365773826471482692276059241808650496048933768786766861454148988019328963828209086293561656001029585741792555075635065878463263766766701495612898293169818136017266020116249468319502744414442973174339084491837504544128056229513552143445826792604287932984634992455546206131007893093231690738563665128381483227750364952704694988851784986565274489868308734244115838750975490935128605542182806683493627151630415337446001858604697866647117752557426210454622517577233233372294325302846430684966595579439437861055050448965749333949587755646417149598197323221055317974221845641006140856642890446302001324005149882090049981211808981739638707354724098270864633206839799058339828100904762047631742156611831068688247597596592641502123318626386817170015538007240987097857262454981999807863626606811151569215153194261331844793561518024033712902090170699499365681657629249833001059193147079892186338917206902747411662139577619474233347384630498960117107520133327386916948789475462937651460056226589134394705775287986553469536765981661335785836353300182696669646587028083956481724243736158959825606398955683691352605617991238097877863007497677787464699028951098635770262318053439835752237752956255827995119378964874587441037495669801000746859600293080444221812381901562823824403088600085660659729463358315584595816879162139127438948172812464189686563032048377432051572835900348059547298172063212332374529090038026937354720442617728568624758812211163232229749616622718065982625391640407347135098261402959605829868746668371475294859564853401037266241665283643409255078898319001497464021452861441838731887799286219803410401700402782844903965178015195038400089703103964917611947703599399032079191089121977629320181299468186048646286953783729570495541356787205689857132123384537643918673827812190882268142450921748867292254947218681350090688811491489048594398795459974189632995614934953439663191300198855462990970331886702822944948175635835729178812215015524149373617197763655238170504184908953083973974797893280559952187361591796419268019566442007175651874900519980119284556249548357762625052096969965476721313641872431854376013404852934894426050656721970864139698835129935264442119260781652764010433931369938385920310597288097554092847720137971438067443421654221178447983508655945466178068974146742142376779365741118172627261995170288903077879159278143886966216041129576909656630810855461348328528589072879510605110842821264158512170474238852865537659202798919470017088133195729906995912541344963996880470461822511603884313301722370986668673296901951756550631363839556550865624395607168699149100918818539984581454860982206962059237797759093098602050384327136951351105202464824681807325057833290135927248260635338486716321506081028166743564161789385886523240256276242305515046511985240196703419651419937447226958603098257877937027642982140980057461893170833486398786079601523208595777730586679494886938570976856532712730513357139893605740117973094053991619133424090638877659166289917051352134013370984139574916760761321912654982457793822707305206179442792098942531441682586182796653360280668081192531245013370605552627802078256907305441015738124028480709191721703966710486538475161237724400282502158593257589437660121437352654608940388240026882808501058608610286035034410452153569603946961001251543861777912953985269257515966991089625660726328969436136323609983446911698780847528107554337673943218339239034259613142553639754617936335955175941127610722075327252310372493355858389260669345951191720736074096026489495181902311323331771222633696469724448765352556615160865009346873069729112113826098224974893819236787385957397819546111845728498649648175989801524622349863833482463057405085190826742118180009667301983837592864222790021911042429311786047573480160442095858745315440514991082192319822342095117340748173231274509507300359791916849167548912203079687805841462452932953335054434243003674611228641475756555552380828066095810915653004924077508191685658200927604435131515328951680648230550000590405398650075341336640881054905774528780132953947791054226276077312857204609584187660189938185635581813845078844550508136743257973099355142056342092163970249505220067028160512481641943518088667839419135386740780543958506941506713312469316638433121326497237456860782059714793864576710771948462879753930058949967320389919667127290660762936547687914751997816769362144269906543619096182970820950502802453454432031001652630824844329438651795547152521101416489732427240854071863385803352246629893463965085297140304244476628860816205009810018196076606456068678693690692941612460317805296648149127604635113206884504288848091314250010009511889119317024438368945370260219462459048874861713865589602141776305717671256754746173323185749535620466991980041647937172330406118153978935907385730867228695820515378613215513545060290853626666815087581299446972194439400651534771425158827555014449235047457015335017765482914915030475948460093631871004465808878824789384753191548843566372069901515467494920834734879698677866140731232560461237580850828744992183521151009934919470565148711883357483434062213480951680858093515505416538519827960673454280204805089473254188292741649896560350761717434228967282951388351848417417443359240460419016110977847392403063461362829800199523555617705966178751557731125400935131060241153147871771453410230254200927758802596877516042282271958344341737712787407409006599952507780354851020903405978625328184762802045646484651546504667346401039232796004002365780565485686325926295309351569563926592296451043196692507939055521753192519764400013109537263170471216870925673155142593716957793313518756650246342298806214435389280215656571394173488722614157223473976277888218460347273218393907515369930148099822768126367437826812781907019001199112032021683220731278624003581063819919896387490451891817081136664081845547028076034291591652778070865784555983654024790059302057080804340204298319561273626542608599975553222359044007613385509958062996082853641439455405761965586557886277231449830846454154522624219934888290470317784629764339681648245508843052560223820941181450665694679191372087304934323298771038438487099122993444256333678136673176452489728235761650101420358311984903809521674720881221342165576549328792861592618715171683926148029776335949318343520538392230918730112207957010177102303566250909284700785044435693454776924555796376460006622241008528286283111157710185052167513020349134717593901318868422786368039513929116737998044647023906306240486019969515556421885965040850338408401557582097707517655929155854680005757407684738345157480849336155184643319998726701092884459740884194340752582971169748031501412647103308442763450160326114709660799188804813453222149286598048458368906171526189002291140094757037857761370128212565223479647257843993438154636911602412558220693310042080139544158994373914398609357453087705254471018587420848474840055621855572424446683646269168900270657262764380791219729697814048429488698243574660184102880534420939299666996517952801629057036542613479806338077939984621718666900544969233549003437542838944125861026011340440699752237580038721365546510177366202953594905056134980374644207576411799570501963343782763236676378281056746553465489057612263434456733004620343720805811350291636346771152676636853178226602684414736426460881166628742321237160746115345208680170011156361734891149438926778359182745668731130738620992955889653651591144025715245696901521629740906927709587923572638238596929230030862918574144562653822180781776520148622509712381117354197933538474925664439185117559010106356895934279532851431798566584977343146360162619130995963674185260475474088596292280968460184680130391914235847789461505124424789242055090972204724297978857048036677031542877700975221456825195125300104897909681681817154767199812171557629781573269314408099914010296894152961760397469785747386623953141190889311142299790582203576831339003989607644167917975455427947911350919090539180652158394463073039684420891114727807623870597432383298765502100770891594972937830022419167652498661673156808006158871738857603456143398834822832093780454201903878262162007642835306358891963072598761884191054628060505549611700037537225492098570176514511959036828852624350603506630535329621415557320950437907646649745238041075239613944727543019311207534340822514274892315373970867778435100518297271348318901200694536938444566105333213441233533639787907634424286800379731884564009366151118741942648778043520830043427748106944304345203408293670066552825905166293747408783527143682832942258389196744469644261429787279795276257214284509118265672554692407860706821135313574002858145744294425509369265961924886843920312241263047342679502463602214470450568714111657239245507288419469306355802768561694625297082494376430135778548611674605873203214838904974375934606188693637629065934014211010065988678685378679010790102381220049726520680838007735007795780964323132140884619639470453618946185853919381616567918680897348191171617658852507032425373055802322508798808066122299362715034251993899840541621476689519600915107201351571031912952815861358289629537609016299309576870434029583651136836389842310906644733071971284219362364498165491439564948070304758555389258745630167078462557279194857689387621719909349026690762759560979170273766058395581809890923578914875575706577648009629688929898476729824305947087732864591561778571123424481882030982624869542193902251720956666562512515041176584604971286405572223384972561294206590953409251289681218992890940556484966636378608720372655837169973823177575744338823887487590408754494073164172222205989957405506181597931065339419681649120466997849785868930934118428080142204596972829428987022983663793229718866942482101747605880640445978359980963153800426785762698490938520667200037153462280022179966891327527292636609985712075087868969805954388508744068118494363037074669444501986937323864707469684746986135236890517161876623289348092651502075942690635476461072272492456926071513296251266481527137389129602446416919984109943030301352569153556880435119336822456385010189682910356252801882830926901354154702442828256593746144757720338640395941001068097199496461836307025837477374972038483456672812163657069345199542762878636792040254701108003423419671575177860665470420361117749200679184097960608602298458787360533652959859205228598557350645759247020493210416384635791447855345943091068002950393813400435340631373185386701541395667437889203994578602522104103247326019665304281397644970165752151198477177039950802233081854024234837199216058500578818100118506907541943934952205307200822620493434534433396720541486454662519196787309912688924501080339199244760648120347552120955357888839540102026978819119102560075165155433979313995586261038005692961786253551936364254241883575025774652602352310742006420190761666779558983725073010809822827355608011765590500905423305027852098836428121492097636390939414116624828945747869285935550216510426611246464165672456873763101844488855240060391352712717244897293276974368891182448391673903824297153910544673276665356145935647869158839690677741302165485086601505936420787416213303197010728192848534508559475772092878656229617179144319116647091047104995448549976216819933193081411938963249948753729891050554633234245543174895102632238224116443304311200067977961466728477806170354890281010127141401078397744645533173462043833199818510994872944913632830090163524984882519575744396893904176088511268523809532051928709933426883795268651922899188372633339350547170405744047413159236600015955358149620197243188094274296327702357048133321149698718122547990458208049352632978891153674416519605562955338993064550368480760461208748100506171643608462974534899310736745990688915049698213939569284497851426962288136794776483676031516316477024843514189370835498275519603118449988980370513619074608735332871913575008930820010093359649516964394057443621064264777940106055600120036389739623089453690674512346882295649059106499852078566728430889667213020312720243081127666985829706529057313121146434545008645795530765581586092017367613765420278364506693165720523238393124372285242978561994732868734484944431711080905892671041456864407203485442455672103744553183819575829127229436930715606319259848501907626014167594356133773321874358433096084858432615977440425159863903472194329110894561153438494570800817300329065698834026452152687113681611402514857066995111415278701774502543029188865749912549889042778418780590965614222937550876163562067416782563130189969049163232812547968237829951457870668361349669898607220678388158883856617149788031979419518377536263258129835011389451516434311355563951294941816294238653725039566805882906760327267616529097794550267935048498698265019392642380153016792256503950627913034206710867107483964014667729012641408200420174616310731702753274342748023128156620108831677533975110506790721020933902689501040360836643517707824169924594816270129912479356039332602832863672896800505762485729158095299461095678919850474321348615095900288371562324245804508411618370549341692593278438324215885846699365621300172841202930584685026871988676021016069683524806355075133206978817533298203296716364803442253222417190363365521103331907089038154214446762657037133082206833859391265416202219757462632640116880113316640856266491474161865951556341446327174027399068343325582211145737741033900308892331791657813536387068976155881753284670390095533230109948475201074749803961577722584922848976269709935247543635059186648230041679417840686631090319436025426474566721750233600480378148923979126977178829862063336199821279131935376272242740930229979991187965334148052761636302834152270297544803920376970699689808927362719321617253146282815471176903208157959691725857904168917777082742840116709763372048579773847475337494776552638164896042311944516900014074084458299575487718870390657201414330585364446746423121798624671325310868200480623093797365486298655801286698455006567173666726305480521428223638165525978708790618711057273659922659500825770897936951683024154537453608763048337641268606967972503965566302087402354884117601458006617620947973695278514650590564705374331252348230935955296194558417841958530276208988243490107834233399093160994831275840010156015021228292771636123947993203912668567026121852597836650843639449548162397978328949797693964573568415065667721211443448855862151519456003412526670629837279687033127418872940951752537179351294235960988784726077794826933222598072541971258567165973643947589913843030294785950245676714074441223658834413128358664401984863572523471315447757480714611078170081257723918259471503352418059209997616061365757024674418467276362865127801505550630693483347205580518178296334798722972594881360225041633276655505544364768515035520656539005765337498421971013765771297842210206271254359618999771310405675509625069649297049689167521359792725239165969955360718725939061125615169394874937659150649438881157662542215426730659146588374136745641822700119836617456017278835805935464562143356506121952820380974800286862698404667887022304800560948917948304768837701158675532132868752885223145170235507648374078710072663476203745196100855671633779460271448160743399617931457430652185709153558058757620274184648476864982844414527509740884043005635607624658700714638921107612646792085206095117141248618399415159705332673717638728628547730707292379631676209269117682349451495006725856364786054235256039815702308344169699595251764189826766892355977730973531985487834622529691691114851235296072768864635385449109223283381920955664653413521213663156386397225452668428062960026783367423273299240039265194310748524749561898558627950051633281620470008913869730311043945934173008118872845911320509941057438370452479684600273828600192674695731415069365884074876994820274824241741000310547578494194715782937161545990667158868524975206375607433896093365191560927039751704700059003879162358892936511993907601159010714122511791232424909492737673116783211189700380555208845346275038099517614668117132499992383687995787991488649175600116330858799609686273543165633206065795671766742987703861554802748826265530469768145877292348657468481429950684990087744032076154192597895151149853835250840331352218073664180767236867388909149069417760885715787907016194821998461020341734396127425705890300821276517436368316240670186058868317537611141884342137700269046670135403714061762669512627858131951088524013874256130207039448209571440944331867212649176221364667380679102233523084271712394682165148018529918148115228506809820311999244893376045039533804266926292728802299801794032269521058759975151414588808177743658244531356710644203822477925227411247081265283118972171876578982036016839946962578852701984399247405418811843113395372924971737691637697923751757205218173480272281901653433065602489006908670045084838157810567330537571198935052492773832142368603794799586367479979297284765667460617743536038598971454121397568356232637706821989273590884476422593197477506956402029751320060399531385473035061614201935862570762312973139576505679794274617169028930715057471023575168394920212250508360650095735769356487205014505981642182965210728505190528857550452300424160987113033675615633697694331880669401991454038596265609994430557863021920994271322178262443932599128433195021001805754426481280993271871868898123081049447530227084930337838953480821151781343850587338788415614566314157661135009453330432634700199379744067575279636230064718091152026471567329489263200493932671680067981872900738862050137263809130019154506214975743493024273970907751033230383362491479860271940721755344918963366009027661319283406516443526776489533038955897450251253052666918734493322114455065456133390043822101427093554428315103684240291411034681210435491705157099878001942308631376917732763667490452253616030924784965464382037879737099687470635979083428113857871856521579134262422538108592554321567008234219780789038329119997561148101501991845380471185612431079544745393005626866555660023165473676573177944968613021700836931570321317796400817199940497056984991203396720133323428637102407817800381250527437302297396916440654538607986651347559838808425453700436829599681769841881577659807783346694093789377877129128332915198590369220924822775441791497241945213365016812307052448984146733560404464227702106271688675641718066259179007763313011707729866156317078264052855920420759994232011509265821188440201799333990695532458098453281378337192857999787228786311260389354931719630322756210621694991416906951457574736356491739996249543281259847658158705751137757419185800409810103450855735533970712606431040020251228216902033932922278098827823538872949869236107123883946636710337532550526925226603568539656773055080891438690281516926195670625157605958192510779461610319986090979171407036360927125683670465082803531134845619655506719143488568415948999941917922393776773814250178033405466943824486240655304906893931577760603106822787461063682343413063748228218236895581868380206626900120390149670524376730976504198579701821741491998112887817856386508472269534175923586053572147264225668756068840653497001478016304773768432064243582871918540830138393068065435157540224874472158656427414753592550893589524839973221670528457378351764606560369954066454812321306540996604707377833802776348279866044755388533732382187374152888434283327285111299624543857280877542370342805479754584752898235829537486435092138636073438746797786195918441746508437255770991027283473144755703976445141894526416576023626687794658300903155820425197081462829434792589894292526548977125051450079589320841245354599592487968175948705358464352746452039223205592901603978497732989487594226484786744274633540213680892800488068448755967494750861876404150641491505261084073301548775731974997357783200796509139600795032708608238634586823119500053683987581096871464404279597977561844444074285624944317539173681955135365051848912858345146568772730106207676690190346401271107568867328115517738633899056915352306581752718197179369374897371508806533239446911724047166254703619385403387574492804061880957600308471353325055505849442764040558893742863092075892500927675298876776988267751366693469030691658116067988577973955363583111758628280001888051445690357175342561187555485597580132484957326568620896226182291207242061115780441841270294424483918304763243394005556093000324679559357254818695590204589979353153580962574204519967260782503746487530104566647533118865187447623278235112475245668729250614211923914999639739288611178348390225818293903010636301209140151930995540930810682886683383278880038717723544675861761332130453920248681200697810132551438585806868314974630257061748923434426783198137529127590821806181325501318428160218031253386754926288444128560271121209086881890817341410981631158095997288806173167787654071810575938220572727954701710486432521042813198753409300221532772983709992140573927415675067850673076433436676164984085407504197879261755558112843536445842297913804901168080324117715469125539563518943876681204831457933485421006793714596250541025992740828596270338393157549455930271255615259862976297083640880723987589575874763145998220484085666085701990710361702291744218941810616887174683427302893486768014133832928149256770608666578047143930019188109217612162665917709932399923860232110353349354661640249645671791364748178188313076138232754354283417841421153258386489638309549024139107404888689764174699989860233595865136386881019836286491152578666702420766565474332805573752090708080462528860436685070236599510429711263330425907191509901110883423942767479958884562747024225359886106107476847780230176830191552351758046442737246971849635058970167533357326057970026089310877835939257513593948502606367900446696704730298990978008797319406721392801424436221091281461761515902384200242056596273566508600696018943967168960598919595303122511463225157942585120032855326962172584407492831696857965526621123672068494514515625081570737273877041696580544133078327474461403682125353649360444438920153163149627078950342273702806904737518082092309489095219213219221714567787959313483329441540592213631476324200296465568898275106124265871699846484331830778014915982329472682617376287964923852935137925270768254320728398581863403432526639898445453189576655016595732233223096381879032952533618871758228594487019665664259447780300137766765373361858900333124734589825204856466548482353644041776886305053238884837888574761201228520832182572361714744726954616698640362888082147096548567711562369558050023502231023455483928107622857156687393228815904788216380582697986011809497271156914913235994446163441093516936553518230893092766461946428134810369250644114451991911143376157294929614358773376639831075122265879210227512454645627930953455700599427712558902414986645089914447013160735419418902880088908287706243478429095339059927634047831801202067993808112284823240559462753518876315192979325533956926808335555564309481068401642126010436896223762400982362775299191358174244878147134551578368774657950465764903565308523942669260367349031308572725850182963813378407683213290415012311304772767337439683779901399158964904093758257010924722297044768401323326409533080908054067197109667132813598769844596022171671952026977228735531349921118512844005480496693135327867585797171837823777216104354367281052525207006720170150575475859645103623635076628450177503881235623061769351446951195516768276134835432826745342673210510692332493899730028396721688827397184187905562583140334000794226930940111035505284659170784486894783655830575576750208362210146578544232668520507831369748371801691822637681892656698629850847328748365971069768729274876505707773111774814653622263420109001061666861624301086484020719707019978682422819436204209649373559752042282754838853837433024622833575556374164857312611002826929639129714586486471732925232131360025666823235742908026893422997057647703553880626068611015753260925730933153394855130273903370793691803605707134754474750557305605512495404275673081444886759944835071515415223121090940963353741584334077812110300573661204886936301802787010786612488221437865838543107471882096188038297479061035406316080861381535602453839579703682671328071364165837914121019653424632667288659005916388127018407695118383879880194990802774145520199740934906590192597213104185891980412584573197261450587902295081034585052777114140752788116367803569794912451846406506863876803534273221422989013967712139369254772495645258517337181899790543119698817980444261589380770361487106234406066811963503016875459708866068571725241379356873908370891200656393099821526024337556820006681740369331882353200501248283596947933226995435138450468007993757158242732167421119450393599055110041046851053968788065264851547190345920164154176865663897131068399297896271666826073318149861326624014707157290010867780908813706352819676496738196290891429814893970066542425209089917352686964188881899476104663739929278710224654381767494416428202639533318598228262916727775935513259680645763802304209392948138316112344796550847620409914464018850264636214713185458872011608742740385620812822906759250619919156917679203943519372654550368654987327901373926932658046872254271504194613639048921391160901278813758792130523947891265956490562960857560828086547309269804949964666901432569927953478512257342443224502221516752555877208653858397181597270246872304195674509575411062400845614977939577899803091515872987563275584988949582071812504938250238143726741756748553983048239644879659257680060026294395343460155551861191774137878532174948567717208194285895358466958569983260807633721870361671471431525969702419098616083947638491518423926394520785255000437270517128943960503714074041088733678897375216082494196596412978260120166570875275855335110937341395547304706893429283564101854094823105071195667898304696028762925602115363500321083769719575954327411135654211155348540540467303297495035593805506698706444283967674610555891671621160281399311367349688682884612076294633455579050034365267644431381306143649717215680220195686552711015279999631054606097052011224101101466646689101308002887035530261310744327954079548572561969820775544638537682762900648980348223368780123756599925243991268505160785544751018080221062430082777299296269814847743814900630384820870137322288761290059975701582865118322443853656906788598053704004844927245071875130378250102797253316243356404517120834748039731402221073587577054551720189760700627373981937122543848257344135279561496145570195507671610223400573552143402229612691968862878461108385265255037590829247630251929415898619036848637820950983799358829596486657600365449408430433467381232949412939638602850742294318304077235926367403509471464833009530774930657974946740015694953053268446838248556343102687983728123077215730853651499265959109857956008156038758760682626424280297935028502958821623765719981531823009293180535068547916358794466344316214839104327375115361440173572347947251507947131273355285009348744927521125043219955404476821840485120515122110343542042742088224399472041612115409493468304658956263453190363081310948802473179271518864778463598681160012805833174354288872649593934310813106511655310811879666067887559185253047374598978080606393314926373388361780689026660879227539037047637393723108020194136484249706353619331070801601365682095831612647044298098880599065864860618947164970184292595587907808379720382403898210692244744247202480240107562575359682467491007167751160342926312555236327513797736665272054684354099884723119062675509948596767023845827074241820693190062361768891989585828445195114909742241475878712396927091090953952031986699906465168714999035650568724330719196294169992157965420241052348704158902854342981108558667183362892420069359269203944166458028639543770882727178845370967464715398882836413266264492251557867034099476797135119203919582183809399164891203563677991399169362518335864826456179220093005865515199760207495123416554700496126649836682159453808778017984462311034248875007838052822809714090976065582052292247529870795374794241792881932570149117066657715574908260324733382759188366957249916391947668738679383514730098580228079066177703763319965886542991853431083197006012994966976885648269096986388958144459153775617012644156856790261969520495264478701732529673735753748172897960281174142432402380567676015528262115233511954429040910060657532934024542422268881120573784808872196092917498362648834256652564421771241357601258394038034925664370375629146239114696103930253906425940933931131331182831145125227849188248646366983635255058161810451699121655807613456983667050282156324134254581865867010657346765943603071986235211362243700412083418055445538471367745584278452384900043722009273910593885802219087350357559893572620332110730062244361958460468856986899004622307248707009104071761474789934032955971724680605955733988411223268969131562907655520390066646882713632569048804871361759071478402135006990944498839051078563608745509095494221659034607037050945218651861045561909459045687275370775083375743167463039878967664001568411970909716029868493601587970355074702482320278130999444414470219469835181332553843237411771773766109505759784284814014013204673833286009006749385388562903139258641794515091101730799959326622393671291330753817977877108182686751442043680936102231469138152125229909643896407637178099230778140347444242531096518904479102717346540871264707299414948589975258166943522574404903511558519704995955694092345775933178559679256705616489564140799889505056548690919306590823928024657982898034203776314253660727874499929851456354610063371652557249242192885098821008061769255901738444246841127951728372498795337857746235001831744593412293349332045092197844610126147987614834381512638164399046595641277935449115282337646346783395771936915079167382011345936977422216174308165035120301483036239680391529241128272097446659290527637525856733387055922956014255857200394988939040547798687716425405547518799558043716680604408337481402178976101457124395882377590251954031223235838053484022518267882533312598362814515881124691404936648075120739916575148482638486509338070906549397793328676915259128381537703842632909602432675569494657768015908125184033663260008671686112578377054913622857544739248509382910649347853201645297247459374601827767958716807971971146614077251379482274556705985431561068376855548712147842517682269239959340236396795949869340389477568557714670568796013720305229388988573156122504624624571082392755766432249966424906637185180280271830360545958633707717413267343161272263092075757073111330905852659838645107066152159831436916461908298175591680550141038995296762639061940692138616759799885622774619348572455775666664677265195667333592122781385161150954069055333805137976123480975234005442838498889618153629545375450779560224741812531238302326288683985142523415282358368521123609778034390504576381748212432281580742211665250717264244760980615550563951959466993673551051680079735279099657547940957691771231637565950510685024712437257863920675921064638233914250903640630698348562932155686856920985217019317470617567501336831535064782710439628407867119631122618241643063204652109971236512350718903717818428968762495720750606248251002821863447863640321441174570439394996432547013183792849108986433553998663286149748644009027967814887626752573745441823691265761287211179934584511582619062202182995097421621910493811271681600385961002017945888454030575414416530563395370449706398969892811213208313119955925101063911580774460114393989944025207548392509846578698494715047723000411432996817685609584481516662983770182303351936031754899372822117889839350429781465330552619926727320327174788177011196756168788843220048374895732928549498656037778904570382320739502415796757493114865628161394762614175165030997139654817574311942503948535515694962855408453704070948017744696328512089089020172479759985036100317267494544519329567716123268570329061068926547793331306769234063742996620956966700522906115341663709849361507684714082503926373725838599215572913097258240481579297479065759298773829382805323161415723128879895817077883851946495119920978321681925939760070892110427675253296175936801382127480129337054385851627889150749172615958989563913526917531108806113562590287290116405314007253575637390814768405227527842900052867320130052459157497657447168869607400876353596997371249195769476102249134840746686414054434655758966040344324538884746956240391629264800584707689605201599258328960079287413722073566959550990437476241073855852169400623643948336688381698791369318876405740068354327793770286554560194629210592796850606489164686004753444934585025532861880975234333160390605475252782102197111939714197059876678642059739003536598656434498017887434051104856313945608607299966756847309020531796354022482006847937710924760077507352084011515308670432200291634600814125454114262377582491435053091317705850911227836427332796701799341532524910094113608862591837149032877129496211688251828110376422957759322869869587935958782338093869059919142867529129206124510974245582416290649802944569665086994728747284643771258977282077189840040745399789575648709664458490900032937640998649366528218705964808179907990739830808456825348947819581434543146865730550766490200297802804363732973852027041326985213971011305902205921723195541835039164917127314847513834578842907183704192141771410939508662333762975035667918664316061129220567688958266114898677822832108677620541864356233168341329221828328206728409490616169054627431830916640729606390723433403885037602232151738128457906972260172070524244771224023741654360366167163613421216847735479711697036398547523578689512193646209044286493380447045783232330676967377843458056977497788104079745134643567781598238535824689275781758496806879170247563076493625129976205062712525147096087245618658007763911481739830589524109331426927434740616159859498961943248124450236622248859362010036050268063790277999918034714271968119663298697297489594726068200824946261152354047765535023402626042018346599625691169364271462005209257866429486012296971506817713892255793589366804508381746275764558029843376109290803165334783825881007342762727191383143942371018679105235568877903265351631831766983490365889881510308938177021388754367858832079520583669826398052826120995289332812181980816415246400486389561152093539293825869012174242475659920959206889090965945235131630952953883134190251052322145864765454690186601773114715912445345401657378315092022741806170830330792640297394201922921372972969014337292431547931215964374641860127939336265342918040649090221744356114632915846987894299661324841251114894419470340678689459027165836973735271454642175819973837818388663771240308910346350905692573041218289511718883807224615692603726452705474115775545332958505499950264527117081476901944052904530489426386416117085346959872086723161364144438622894193584637116562019537658630770133175641784807341866476815594145869540180138989886633321570172737700359987504496320588412475592902162662912348981032997950210090929226108343970277945077215216745188914549290753607159257529569949181355515560746415394509724924291511080401022839845247423396473667384355214407614762442268206674029370009596095163687292904476266745184038002877572199630773116413840785794938431231408040396841760513558969392785903639305438959691825043711550961395941709392818678958861139156538712431843190020188036916872204918325712681736140026293732582966276169453317825365755437299561337710362070738823382075182608358667328802748777039078363572074525415118282073896113160756208083649001007145414721077202218596610067378929944871960081413085614037400080016705496413381024033193925177191829798318963914705469955372974567578662071061517554812953272191133963974285331159805515726570457499816168605405970429808719024307462294812763376512107352890695601920558760972270635666423294046724196107458898640536044280317101836885039872164177785908131400124540975949607363666088528671003928410032365385617529361850555760394398370596361935062683642083849745105244117710542023144384343551409015425368425091833933796302640899797040958337578876712587880852226007696229805562127547692891750949506556904271497775581978135289895019085779419384496916065411596687709156676342382532700535911558182399889897998051036932771459499613383670678851952707903979286077113218970598324207834493889812982376783340273499409121945263084533303455470399032758421709042953896062760775036911274069607228196887908403466225175777756463947205847048325843679046206182445573129004385238027383209104088462233487697965871434533682483840274514733707592167237078575232242734063052456488824041833778264617189218350713099081378710460066385881422853812440712955889476095467902488107085882908925442531571562092247337771723130027560944541312187147331798297710648687915534618761819154866209645233841138422051010777053520573374094944489479853081557430211578979063486548998277449893064576712562902275319218215156838208244967766124806117806665633531660004127510759961665733543615021223804857605520203018397027182539177631696846527307137156896130735644819412921956213537213388583506230358286373054945981341786450361685565525673237071613127515545754819055099484383252350568841501290336521123676356622367560684686250507484026941205173232291105233179678591104402632067094555658154628109385868854872909181765586233075815040026370688148107071596464424149968211599739198608561535270786526139643107490700010519741087692993648015299425254102628129268421746205473898969197889467611924185881176998897744614363837141407485892966059299340466625100156547583853248167679312945493012832051354025508757575658311385227912650462942293841318508035038599985468203934876342967852133428071846592623996045469321345181838328228637822513569622840348570722470056839148052713637622426840076706265497817345309213252471762860342902117658334471400857123311187742727335779877732600591727035379672455023198680657429791425635869720522775747331090529146980880565031548417853468195858573267428010067571138610665801442621363229333403478459591234902308651043673739178224759110818178553594180599921242579002007921334548731125999697265355963329403673798851979202029947859190338917562447986606652376046124768238025634576509459319298449833158306625493164346536991320513530399588355379710485899007035681281483023579234688489391842430884821345914095165036293725164747565412288081996812448699243892637166202544650340145636322905897057465218887825347036391902036565548869139267655133213373040051306773251387098340974126310227380420464154561861002067624437262836960929151408163425401992201100600780338752542578269521835893084910965367742561052174330160008555734093143793100463268817743520090441757831456119851706389915649349064868002275739981933986161873177868784899000265197031890249725504399068402295447195835512500697339816937979302490702490202398180651812374327472922619751047484834986616846081713720402916809251376344133345338745269575419189873756022769158703210901398324600361933956358980077289537496007542742226981558859844109124808421884991050511844283876572856109559587730453227636831643503117674250791402536224758109489191275517153902401459927738655251563453192160408435228333183323950151288269103870439090926111014547386155116112102424279032897912349237697494449098360931417412521696166356682224753983130247366250783375929966514453217571313871338445447404072920667126103356433488800618925696752301618432450357484824284663297076382176821351707171895082655409064509843325366881813867557070711271160975584675917812353838314986961556702080782902967157215126402394377243942218569886042411317548627420615563838664158214514719844571887850065818960424573651549588007234681959474862362795716388698452850167635421209680111229193254699076862042613737113378877421146652448013454628641093271422119939098618382842700765113686496419785895870523892213653544090484841951217160325275205828520687521306288333471978847341605816644937657211743798091537653115954302286708136473031613119766545188600823830231702448069798020192792003590843384646088206419985444298330117950990875664226243879575172841794500205730654794579288264519112489772293557111930023210910615532285652431439480272490532587462317675342169421945320182935086918220143943117776681739838093424480891688755065785579420500272349996154587455732561140575615425688121279774107666424735562164181349123829352471724893098843284565210742205483896779667562046975570566913099916246364838448665615130573345873680360342756672346476566777551679254811813081937129996394928412990380342476546465617382136327575415823760710795838388060714175386934862867761160096806711238942772498856540755972773621668304693140256618150516248959304649066709478009161769299908372866470260572485802568602389868774707456623965508816478304934222076762466281489762173562212232077089574172165242697358810242467739225182290585419041670176482689497942471296772332436887816872317222237034443176749854586889210619498899623630578675446614406646542535256613434805765919096461330160807287363521453057910558632455335376931333314050994392231922911796791390452869915270352053141156439729052261519239348001332975929418869580648352105235060060965812328512904832620764920725179882686737638534609132711151830899204428019352315436549017745003276260981779723796560843092009353061570867600718969958851527923372983976583785017789764763801418429996122777831919774193565103626808205083634879098529013641553952826654938486608007762853079686349516557924347341873527611249130308458520011919724282430660822521276730186664356804267670600107597081828084674395399797420931684378241155802959149975813891883452033266151676737006478946528171331128815385298938963528361348955345382164322545723262068855314422859817733005035233443165508390995106325203064666609079909860796208981460986270611931311967788351847660114203626557834145789208733846824425983728422342226047885440820333035765097202238740635033459534225180532215396788321044536047052925153153234816574727999596784830392026417954587353727955140088144185408566139719719245067982746113475293791610002180442359107326522707809326862031773401224323931770090863593998280287043587828416034065737285731314362603035905091466290204880040129687595771092475664571046835016611427742953179917711008716119606108512596246886789047673866639100859360846980043462268532645627822553226071132399805188116030908604002923593827511134183460849285509115284569731668881423937568100732931513678612711259921872391863782652802845251399514707900399520157298438758332906034868060173748078838057218509578145151111860301882679851890927854587277878984313072611426716243034901981333363521150572741770129897962580623080587967375938383987730004884565551520533338714297742195106538084410779515279630916522742734705661095747972558404510507693130862413723856889983037569242034632772097431374068868464655640478339370927949880392634862507686141804628053427509763685091473117597939554022597597393377707089656008457858393790847254183955637575460822146797966222789202182917406162499085763117301651183489448393278151727295412637506708021932064854658783056811327071335480679315674170045226453538037571665978650530195766557786569178884126286160586829632490002629281424631675353217285999860243791681755490341585327112868060519690351481122463752632730704024323338129620014291641800512837437353092956574913046997010180774780564324604433442988614627347178788948229555009512896677432448027195291995207962058179903746863406988579473182466893397684106792383691468438567143341966789580866735005421723812889188031909479239165625266085783853545051801552561108548073583068315077363433721367760513450926711279959533324928624118684120587545022949388287718622632249412092651073515692628246543801894749809405571991119619624413247521086632630891879926737888613014947488089749806443848908724249314367524958606707301028279403411862951391307894670031411733986235101440307990994476745323651903507649746478543319282021619429859577365314183252356886415662776056496655016322746182414600591034953845520358954117429888637968683720721612776422305424571325447090692734167057262707690530554084578367502243745725051956550611648247549534365992036794901840191218287476061473955957268267831459152997360800791825045980278375744566413006664500547103895100958463581025997381027385917159152785094468090907034996993535239360357351949517889783873665845153588150719953965943487202062085255961871762340413283372861760720873625367050590308755072124671962022672213282148464591432943322682033807901381497744453088217975047353473079648602140909380000247860926919170440040939496900730709382958304251982573090423714983916763756903370626149449828827038234100756957716727481949922036385771910105956338059343621936843197731377605141222446615860219262617555665781573502486827375820917769250904621351348622897058431370067037294264085474190940069801115678308515343431109976886711947309296459803495898253940712998553170870369734857808987405913052994854146111636419224715171075917814241508235255706768069379003935061304399374309084594599185653182393337456410822365067448816424003985867417956589966399700736170878727052728824660277673579371125869951001031776232713660134995861787386902785550544617927049665890921022687913223286530257617401846017606779324781369838063807333725735320280974259131677003205654825381218572726611064946958466255287391095286316824260704064928760693945679300062271117931364890722739170272914385322645174257821168143623952991994717514065314067783150149487105840720584970999087054204342726430438983727059186732810316699488423158891026333228354775702120963558045801884489015808716279229484717959358152405854269472389826775042927779375093991231166570206067354160399719457571414453156952047031187199451212763183869550726106451593667883310135374646421117350052170173186059853320178852011902718316043297136635468717079121570138447823925115963441322794180981934612478186473119199789758770367757524246504253102795364325098379166758105037468614719930267013028559942822056470171696832609170563931270426387521761856836681828831960278754188343300609449673495023669550116827964440460264001567735653986371111356706867549575379307994815120712441421415956589106773216955516443839955698426279188187175585900580118046512898622828300598872994948152548129154971339866728393936405771129259782053188084655175686942824807807782220394515586909032317162919405473315642778135743724641634039924804973561556956714646270966639236524742050933423686981222942018948329842882757919552985353416784780251742903670459914008749166489698819640980629332197204001926684205753932856297450370748660393483260683826168734446914991314427444807960790384107237632149286227678920966785643552510342175318537562959411314999999350352636839857400833355841654063260951762673515423515589520330582090397715876490440306833233997459961607919653784008099728841889177433799257113962426056735930098303338261265886173469882958016608127515891170350748666954808078829837899838205339377904547210390779650320387427698750653486796983635650613433119797887420427708504696017302460400203044441015259875000019836908227187402310279894202804069297977653244312842500400937007385319719838288909395622003348073426738236129443012750665655179069309105423192169378205246677554385177859604400246470054673423572435315309507066470388798903485712858652841136503214363397925851751780775796082320095046085165519378653093106401168753618174852695112981540116717152746433414868101564234900288249951254128272106507753321841838693719422578780124683531418123039641034991672361755919865477412757425910119380529619756580949401150595096783121203501243432336464774771575011006256031559989283545901201394135494500273934502412218466001827943958322330095557934226362192631459039490829258207860786206767027262062767657437281408003139240498163087169539080832791807799833694728744665907628151369462057789699949043053703210396189302561140075204082048560258658254896441991701107656223869718229502693729593924434137077465459282047042878982802773233550850292651448618336976603607312687097563614858331211223754750437969473632008869387826243219988922723045844862874476005598033871497423763366684298240378077461323742125886498172028824859849470911382758980635170028678340433954079817736920396595465270101577610098411244388024880684447484465450065448103678621555019011557890259719537644644705253309333700653166749505306979112770666636275699043567899266370734035898394054508041322849204795737313907277999628539068786128167579192442091975572557654256359173701649455784798783829465941218694690279454848028932303171955570529969168809563444641960223416618982976784340460248789059069452634191243262978182823703082190269092791918873077846652656863935545050411022326861009562642980759628627157604621099901978975213718383485414723086564445637179262270928458553829464168291736217767522719267643595556374825898493825019492308406187903927554686539122614657328865463705387468973325373705633978859107825241208795302869292491931704904586310120418991027994100801585178701926002516523925290937464729776849659564895002674290378102775659972929885171065705429682831645327541334768516568856234661553026725429939245464784788526304823982958353358375774528703922705033417329972104305356602392509967917759878367593098478148757169525767938838328476323066309792236985109712195644633686488318325675485262795301754415739814144566483599053896754866950727406770329241966405341489024048959755440132237152352705835687069407237140880700075234934418554815468067420350951983535125185247907044061074300431854429585916086482982541691043602582418272501635748496005881732693080544114397150450590151121664494798705245912713483372200391031254116875602309039226188182024062997249215887231224768659341965315925875265863794905279761538413999700771494488088384158195816559211837199185768913751606221348281873148765573202640690211366601679863588598999040528258331853191584782397316514380372996382928964915645248192272269073427537248370362440117789022963676386181473327881677969867888743781433539311811309590413037697227577000897506997455100373334487225888909265862389822955461601531247466306877720064276201512212653603220658372691519057650226299450244564904616520980528250681089267227087399992399309300846505257088024796970376350052299346261465331676839944276508872439579782691031209935702393268549924878547269509889532461065078557987857241809561574532588183159994987824291442977172517331654173934209091538726009417277219034870674510419509310762990409400935769924987051223294315362424394179017865300669833535480232353748135646425774907436458758146335192316276054916413421981918928590734347163577386787071844026349283113133390521134929885290881341474097335662927442641068838818722633923837406260899420406946168269791696715678078524766427206349705959665260606918337423343082441818927786492279684342585278275428918728698855024126457999213973595164106408839510408416725686085060948576852264359287292279143791854885353855240550481105343066260878087463341090917269810332412396920282177990235587582790471566140011978486335706260482210741089888104454443177610844202406976339789337911134990107552312966334037146416113333076340417163400452933548343206532923820586095734553728211042569109305710622165748555119653109401082186016473253432596214304547907314950340629846246032080230695228321135887797265369022758463329913164728728009217918485877837842406615431912593091242878489377476192299260292878357323503643083882437130601831455709964586776175391861368368559195187215040080551091138746708134154544711256568876638613742984602366315769604926098927634848106561470468401101134938431145771810661268738772894662251012396071832945079352666133756151266235503479071490561981819721384271243253704397903721901897176359909159164052365724394032223725770300894618919461356455677465652611888533376601199854748942245432254826987301968140197233199254953842604179524165300396916478285623575997877081993788857629188586739148715871153871208312184776097125644454370881165271043975178055550615373055107902224519459280266083598690586054112649363338155800571994514566499279581791430447438606254332448343483691091860629647888645573414150389325969659632924283026485829530113193168333478079158717305794067162666337644918296309659045344755266630263171371549558724615601140101803621648923988492062827791560098923222934160357477213439763961685653608074001008702410014434580500152265984490025312746529226388768545064533877680363612021558827061931556915161974149283773465155839336366333862599907777621875744509898983882853564704554149487637261629118134451869855425690427442524889185855018642169915091303970100607582882882804693347933258197100692413140106019666619372599439533191743549611483247630940146734180492049784441159586064098862395575695814728823666802167339202899659365784557588017062728366447963674354537304641209595679252075691003224013302871338539333559132522756911452443396106607120198017902270284117478465317194404674758616495385155250699839352535872966718080806473845992953416238666057579643064773805635299356026978114972263932977475399946168491685510423562826554984294876576157462488844718091959392121750125952999480143757168201541400159747118370786104447585442178279747472621810758282551079979864531655053162526546671709331712086144260303602849531991091872369517618487469248309256378605005790213742200065776877165197066333916673241620881707721399912673627217085150672914160961593708320731761780121084515156434444673925472581908809765454874452532428677963612115383803017380715524488131470703548711247380300144299912781197246795165186346388291138741970148808653233833915751392687775891637478367631517423996898397340921841876809746653587694235012988119567812698327960309722061465208080925268771526640975050777647935989511244578445489186534996728014769921977394520591403223112148256585063229318514619257063736941936609465803454628962399684120496405692974344114106534193837307586200545117517402159325096935845370798110063270182423301626837482012469788329164218260023306566228841287844863558774106952949250636544649117361936047298035319485687979586499084937938678500594590657329033165021531782799889345796159024285928253647946455000136440812672669413720834165635970961994268160116812487115429255072332714774832198031351435022366019793181534989121879829024320517903148328699472636543391486444667495343701032772296042000059617857702635668713249979706834163198694316294551378862143742601919885370145860439738658874242785969791819291243580645360843077817956774506129321893965198261768927294618320808047601825765165082432361902123841495050001000269485430588406182222841641004032097286403194310976501665575806215324687654498212062982363291063424037966576261828463624161529388821115945666901870038061287110640103025264792370946693095948825596020811904971611564310592657766434845485316431152974576524512364455863998880564704962764149683690655573342801113405504875180953469670558146241474823585083345550369912718728753022805110998678484182055341416806341063864943639203963538524006086295105557777366009265712907300295406862565543136728945111419421633897913970874177714586235229301945697530772509740490869168817452198992271561104877132369845118632324203769883756729871782284299009717004954607372480576465585854338122436099130781288181837945659737923093848395146796714122920701425693323603983752653225137824695841077457769419676540385795917094577728915386158634514819786063350632483358104503967429906090908148527758921665945340728807703425861007947925169368236358750061820121552602400308474322666872185716545147910962131284925393407369008826529047334142629593365600379282553089458438544446420218327279143646013128453987910826620324726755797038335245059240805401334965469107838639789954352309676352752803555383514465104073302835691713933240847234182271094799773592123603888014077683779016803589880659084674518367227973733116079341374712340756502507829017928144894931189844735139446439787543466876088564652788645785329268871125214682636212071874688669422568951812475237195839280797926335261731195882756850421950633223593212786015953930588679811260312697095128864275099644545892057868455275543425542968018570856421935206283149788847501230922762388646016049233678621232718142496933962617565018218095926822734291860613303839086559345550566172426323991428726017121167988645478351080950510252904421432999197477429961149842750277125539103944464420589809843346291090770662204361641573630579563257676125592178728203397498051243231554905252804575980138631126947387571311204990119617254393858368967915875846708103242030557929040968689618760927672135064178413543099004979554274685724212071476214790823418788757766452647141535560479596531066057164417385282202072214095083975848100072580531839849596934145603890300485127304172509846954255178738964243535746999506735975965026133149162404337859426625727190886924824438374349481833345921966436918794724594246919808561043367274902772475740846205427277708918385691479128015437606337576666776041799336951373085843932622309166197402401073682256982581564513140636881061858264238597479091090298080481707409411826937546262197424808613867526113194872883751386182225175062293707818941431658687101292830171891490844374207803999583731189651545574914642290274256520741647863514305742056267895036937024025508356660137602592924226244988796990244200957329845445760810778686032306876301116436927573084247212405173455328636204489818590866415398519873879753923479284365339137485839659436645058608855453763953569582151132385005404663035492409968570817173640876794288756624953661818494608110204381198408344011421653897042637280069549123094471164971010902516715275152631727155338473768600207416523770676272715599492968948429051517587266139045646537111383353494226776924729647520316870610685965546997495046263992475855439056303862531129028597431243288336649995970550448907811160397608397634821081353127408105312371637610994094669526522347795148971925319513322285265098579045227937525440908996652182425714377225705845541014067521935213905654362339782897528698417977858942964137538054385719902999476684735323127815813460486662920297020709341374577585219683189517647748280926181097737015598056848243958134265337542040631519727065770819364761088077334872684133645144427292158347457025713828807410676347463816040188556658339826835248843638216321309216578249824672354250236611238635976636913399116908693347385382478271623594281290729657792511844107160498456406806253024943525458603066153066455697303309570953988482003705877807297531336324083206917943498847996835795500406777146085689989394980836418954928030597933256164152491858704410445311512210053878984045296049055834015000042018776824046850242987184588660564041429625631984336004492900516311050350174109313117546221010091358332467884535656545927187357109615144913264632930574767781089232389414771966240789979891818827475712569035275995434847693832130821033224729294190554697781982827463974908010055101224954049129386652585232155754854431445356646449961708796782191801539376923057617962880892752763390011379663631605010667924318762952985841187129998084890586698142991400566383484302280642610080257697272795201660920959102300726013196555883343776610892100493334380001262252507896484850547492043555468737850519033894575747566718373857910220134473518344062104946166675122832025307676856332724051254261645315740491050696283221508126709691972390946412778884993946088008460420141924131359649828269733547028919702685788545631280569692543387435475018275437249485122167161638470332451761526343197947584312095869738062402585385794449099782188467444107304438523978820092508379113144665772865414741247271496895197110088955793887500824397104512414005962036109268736067260855599762594963245008446313642238038152555223331544189653859597386313500565197704231084583092869038775229194521346611733517711775562093021734194522648832900905664149221312090664439110744451904006770543083118796795253909948563377997270673844819103477852557002463181158857820328228042513635031421957120489825826313100527023264409531561498538870402122138493313020308076960616208679984004384475488186340116039202415881687854011379264487379510549442211734332192597777483361636609350375885758719198374932077520641436209558550966470775046088379381678780238031389665963865479893061899400116140312825352475229288656396458408261166613190683304634544614948436715370862257972874210534745077809091016904653210396294289760368753999664748154422877617238023764392696424923364123919422013835406973735610713416921927208809079015026388579116017465502762692580494109631981070499983112116025169359618565067704000136574725744797478518487597828346446043213660431573352064884570958355302571495200577407230822988365229130472236853525648598610447176381357811569487611553906162207973248809774998642076183392231739442678438777713519825616821657285352913713301818791614926021142860890631787958251205704712447351188799296736406092842692949617221423723184714015978689743683563664002434104626575686293532204348879782671258995627919121295844924560644079035855744616953748777404889225614038985801078156587053108751024299891200488607021570665866977479539818304162415736781676031927985077315527162717325494340958907102452040663152083110619515659733909955430365930836520558095727905850100806797947516243348361171983328226316225852055925281592522218656150692466038046191915934485733359044987028251794955931473660383538551175139733071327302103044682020000703601018111298586404101608263698967294780516351717204074952057914871024228077054637257591646581305485689856752873171139581792614427326549272486496060275679377905860220388524734066165040194702873223428385567311840640203062057567224372848305848324870941593917386659164940837199174061703276315984509875304255035570360545273321769543368872709593647379927814489538333551485312466114359526951354532201843605370901800314462854135695218899469395403821580452177185372744124568646003666707081790642471677302224889796468100009260918156803261338716046724088806693458706841403603649528923115064552607218940855470766935747548675195370395075226965401424470616126889276048228508156532634104019832492869809967989212965110711178591934990599433546611908761886252553120489892300881233272385314244672735912953011080411679540282911523296010035712429049902287838245734249668584047939364438669675880538839859891033384944240630279173206525315104752299595389969519851868519924879586803899865699616537159912609643615983713854281508433146388990269608367312849371879098583315868148115368049806683319918731702083784550618662121562178643752428412429839886928179825958773074615674115480427108976295409348735191573409937438047820052752548960140337252371043784487380582663815335736126761274453884861965984927521284808552840784279901552486378102358536537046888868857362750074297100995526137325581402396636760690328504599521781162799242599585631857735546537688640721967664777252826824775267367905131416917872981873442391773935849833259840562707166703201760783520880162280180465466583275417180063295902367931833000005977814397934958993989068673765399591570850840902078722096130132125133827082503644379718732627549864182043786710414144631772899172255605379731279052778810715629184541263645123334642744072905132911390169741945705512132046239034638354017319371499183804823883000986310691219322380757951581462670430452862036859754690522552944479054712530735947767086657177828430286527592231222866491345725239736394279828208607060971305350575409603056641108403728919558067297841316899729760415486955517610945681254599637098415000028977706085219447569079049127223330846236364692788412431285024217702340942203770897174704568906698001377366467757211913766111866598405924993137176226202880809428774170682167489531099524421566451062537336752320681293399196242465400123840741772982682631039609971623665812411601674103379316132891625187062833907671211078615829583705525408357982269606349957008390012069180723401125908869937291437808282799142356297539781952753502858770645956642513227072137854171799497558983752872103081200767148859582222703620214201904713394978636924001955412345916614031662519884484374322921041781333541479766700895479075015928156999315723528389369949312946645430953249804522077410329652043388884245674997660621675735438732915250685574902096845525633799798004663369738602926635859763427069786701883798718360334110875415078744209916947200160595197242081700427223090513278795196975379844577166037210148321759221525069798936142695955663481201423699604108550674410284458683945133318971271554800870103478344267701518384348506358203054441040715523863729035537936687920379049806426395598355859042595902098387143324830346382357915425708547528549272258460462689474939329412033402891493982484963320448445009515793708265317818914555297202998753301763292535580839260555254976109029362637768904451915226923211861036576564296021997316109495219978937736749422494560523924217631804270655474368938238336260205917666157771374021582851202496766443324148287713432136717043870096668398241629150737551872289570989048706166363320555993852392445513915137832698729580732505319311481680892677060532534621501423343502017220247187650025216578959875605007032309606868440319228097455414314664930219630211639377224973329049577221595200178164453424064498497644171268246910350962394806785360886637763894288543117349289644929598157551217085859702009888053636112436544556791449188788804702674437717673130053303815095423344891978417681245858413507095572516858477875659167068124435979573933053411355936028196720247851403731161147494425701200173358009789695476460815983807905319510267330783045378897508750037291592892883228184725804372916935456047396351491638696225049835333747769315250357049148544291719746615129734340833986484186288904983985930785142124291542879137747763325471043936222527609598438653411368525754135819693582346692957583170067315294971091549517759468806167804262335076581261485384993654245946329630558279131673370564849758534659074331614060977756901336162090886118103201981724669081487764612908870407994606356294754382610996521108664757641877863163191401490680552642016016403922763119668995793435771008735274229778328957049029299245497692647116273351414856064901756791649359233052323945964874503487774455516125716728698026041080256361562711471152527492920817614520678957984447321861748238947952614943513065055035902926780673136329119072502452745391762322755324084853542683163535141303325125565249140235254135637932442698427121258061403408407589312397315219145313099863146438247988678790941091515923808620428893994256759864394489412433520015437307774196693205932192317536584766918569775061712664011267277844165314849851239380440515969729639512289544512528262685955214417776503290159305127125523668203674171761498731909791838832122878923823042390872796725303540220475920173163039657314445717600336664460091137023441796119592821023243171327485412423936774519233993785461935676187635530272212568117201969386985104906859112681885394376910013856840330572137745607272913794185734761450046861160659842862597239770372906167893943931403347043326583212479145473800839106397744429066881458954808371750002433209285982111519139383090115293382868283887019275300314528292042904563907499288065071398119141798175782618659567483304116484219835245900555474884111445344153503858207200546955934053802308602723666653886842595560613412719430240046808130245136768239458562725563704556434801097581850836989854076248489916230031416031447730482630553042903007684672705248339517773806865578598167931418091732611767576060364862145372206776583429685295607734244723110045722189346440324105814340318923465272882634974444794124264114843574869833225413444374365265986893203296108384634033543461248764213406589793722499970990574824525924978792379510557513152295386355168590276991317648781783747459822427444411959277061151590643015109163811944730210002203106661244726612194252231475699726395068136549430770839084584448840647751470614462265609187676899850672112917305322946489303642328125664037399465976140345515871075362942111234781475401042862168708468370145646016081397336930379506430211502860940241730608119518897527756038738336067199206664804429510969574859639306953494523184271460540965177250240907002083211776654316174918936723702209867685528673578579402280824050213889334732901523112084599011719611418004782994047037762759016142345805559917438479962941911912084649049168496634856997510116590616421854053805909298096899612583921908064408130841746930305234413739092002598317260846584875238106257722469374620953982708089697514807717725879622069963059588789620633927654613174367826336658098446636505582828657050427692226099129279551047675171488994661183472222150218912411643479250348822173462348993326650233599154466842770236784502270401147255246924021945089822432558570713082501692763083086213592920159658009543778390931352387101488468154295779722767800043016898852793737698651409451312765091298929105970841592185310510755282993663982126755117284879369463251995097354852661505109821593099358053855193293618663867500273465802992378563541603118957176803906454863648983908023379788811015337520433576959426099147200340202208971173027549636451569810806653370485353132509678655182128600300794368035568637484020288222618215950945399614065215411545392285840208420909633575078611363230284312917972770621783641243698798047797191495674080717487952567811617183777858834105331500970759715277289348876999698430942210643011777836879579588137874671955382702728450571045007865644901786226815184258508608248514461993416438201473076024155264255834804693988324288267395626529295782761780829284557953289272994518003022967019409481338451828158087574423043788204323488702844603296219931358455881262466861412988286278154945910740461191697400990103046160072165026931790878428481601803267796855785659415789695862865324389907747518521419875701719394560339731692170652298032331111496513333689373463967980502431840276918701598495354916128041865002182898555121371888813675809744193122916068696098390256087689508044875727032276602173700139252503136597325490558916202470804045936938312361685401787212486873712866201364622809769961543902924018777253547570137707544724615737973410722099489055121594804598079646162782920470679251664581200098732861589024085836974353067990502950922340233551984381534533635460570857055436389972079387854291153493941364561650001189964621285440424470597209427482484904835366321271496600450822506051996572284430784417435174017323191129673776434803076607694915202487193632980002670726294616913625847035848119849184495299488248955504849865892966594399755519542044069933991815741993978415844438867817130505318252985559347899997956860009729656747152818606570337806361082215839419822954829038315270003600534238392816743045370325652132629378287364344866106454128482830520819616998781121006940105059657559960895247258605065630571925620844941424594290896298843270284959724773627530989045618009929491768481786609504895498767492349491638220517059524787658103832059682104531942771675392012100534929566054237985127980620879009509013698272992535385374542555901604085922535976909926292092422486253254522043338187888173148043997251853928209917417122594214204456072449525805572839327816307469047115579461274291278468520887579960752277187536882618983124574060671028874654768706841824236252593922618232936296755963978440103741877166655302215797813758998731986253075631712409989360339790513683299748962869532269982961262454515558520106906822490951814682700800982374452180658939803612697138414631085468729015880577547605779309973565862620184125078345352027329952518286490676213982010583201163664525052132756549978380221630820765046449376087948436630597682006819295761594589381672231077198763737569679450169264911546218160590340836392429676807349287434861692340381447074174262608850566779974196900318273143955452274445258501179434257186273480679412000880965866976908049457834958222170967474842099686643538386173939650124370929588314677186853158719692462457611130530561508336000474329020706080982214448496536423643199428208542762207108153524185343428426815065157520645313801042444056838095698000829916966574686475858122856972650919531998697218891564797360993230598783879274921957026298067256010673371253712265331718190058817076368007658933519160322310208084182542882129761331275415857402373227317925511886293776096435097692885202605932007284632639422091015016176062097927767452082594491046277114070241301575393997538049517955989941278802145469497105895121208295275880983057329653403623810182659822273510106453830857736776273989943164989930181333358632686765184294475158324200941375424660616700846916344671881302701642338945612454328899071647382841667828474944564244758541109268020037560819214750892269764386992121897314085731804777299085526636466946728691293350378078678832651861345930538193943623464735789213302628485776302416130612651840786919751993745859483256711586245732142157589968123357853953156209128392595614224120810328082909622477087675808946534747498471730689938653065834499578207010092319133075370099642266370878447270920581797793422756659865517711977250332954057322600434012705895956511790466531846425645328421940192808569926155162871687953312953631619906727406149650016370708917157023814630684755573119773651165931209946492453862878748879415266238342836082170882435848426770408741069013537355730089397354867369030851111388797719589149711582501016587336227215811615886209166864848011688715959967288265447891007510140993955510897200385639388200163859647285602317704374389356578262750537086871630210819534294510160103177785770660930217496636693259978105236619024019177751585400718239974588400521228435738964652745928986908330074992544150149073222308091838679414636122352748371646634890636077082139308811808848850904702342858693371700985536271442873212588969489138589119745479130989406482626147556873282833862786679414208873410112297483343272466616270421556396437687824273486967356111311674909083842736714216816995684502076177180278039420050955053901255903800078138156480387707544588524219257319229538056079981048741677359373860235422000961115692928958121017519328230182895439044281800553276303473798039563997523190629799261898660661520662335235715360565981983653727111791074655312822622551547055927528869303695055473491482326062182157869788559081918660161060665152475298643623929595421565948091369876142146462344579863262273398792799933130668174107393080435435809343325130799402464660378100378842662794042281240251234153289415176499051645890485193143740508853394333938650431041890729989721898815843766707086408149036868571613951964368707240421627927487407108133462200321996022238910589535791522380065731396185680166547673134815935699119315164869901823930026245161490120573498213381887977032855879766991278744658956506329502809918835839207857160439680115879718705820495454354658893130631992399045284833938931936271129275244484488796401701079714989009414076052430529458465682741829877154885749693864063988364052956187770448815274346705136514903288275330789728057828938275815329568295912269104403881675875344073245660626030668334795191582459551593476004539930238037827832647485480417747125824295517224278106740642173021120081855360079681754037452682296048104515483098781744864472224390825826944225203977199131481633893258456064635660960515767095754415001289503321015693099820289641565042167411242935383022410225494601792857912232779294875962778416156791587365609631203458561330838640667456578037907354227044317683352996371127005748526205950463184923455905640535565586932580027986233297425097778062880410828173819723057805915742342138228766159017547044099082595621980297703334254079749680827658004606233358667150598515982201459301411872954705898897688928978761474846756898713750584524484999058841939440057952769011310950350771855753686946896188231660005066460521700471829031001458695702273593396052983843877669261363518662460866940242777772344991790589135849026747967085692746609415244239492314107586659646630240060170488105922811614039701339414097331001974166806756370397428175795704395183908291980778824608028258888296083160550639024395909458912637368581023971912260394506366966941947374876869458077065713353357497431413717724659361716552200250514504443625035612204522248302516491830948608306627498504936713216975682570379450348799518654994398737842529058415385901007434909604586553177874584462263306042154701943427246269878415545106990106503821418699950437944751950368133792614776147678525154792222266536547592236940531922349816329014686591610353214319271679800642683297112198832484612191511588287597229062808438001751142761810195913799560801398415523538602391754080494043745905471180776355406255154151622514318518352946103675013723677054654273288572700383893088225273850800993089349402982102004542205465876611330052614300400666067000432185685018199829725632349734087839495246009284298303412016508456289201714812629216007458012621838314654070492285541213726225695279091544311328126477614160590837994097761351251359514190279815757214150457605375553750460971336058746485155088693878971645847638454500855919105440130500515053138332497503421431615722083648192219104124197478656208590086363137672379929062669011798410744512961139866304919240126355691374313430029671961776713828935056327722458284892628705187762926888798151090865443981327794235681134365451192825197552425990089560009798960191437606151235264047247824325352531031547325132789784583380922546730888323664911336371163994565249266502574643449042235901804338629291691775663709678428629097491836890811927008628506860682103354105619594808744384029807119336207554292780015413001193609236244186981478537840602971194366402054523017275996344692275858818070723296186923853444463183699192677363358408875299025296765952444743440743638046783076203230321960881510216583696413307733367751349913768373512444894601876164860783197477418236131567124714294473193535984814473643945695805934299440605399254028575923433145075995339764832847393378950419145013751376655248698922136511689701649031155735770809660988621510709281195960716561345774074524752572988534491480054994903425768265899703901020820208709643726664300010533550968001703840971355032950266834582038453040416246676232998919759926320413934988177617800615333858794325865236772942033823683187142028498297784804624795805891382632727908328442925595389228603728686318353360232300117206306996615479910043083354139500204837915691987815184645498247346448201020068671648677072913652949575848113804827741611988771972735223440445058488567359916732091906411022311965389831110559646241983335827639732602673554290415622857836171168748594618238798178961753612337216701629403024272464510346622417250310901588492451302738899578971279236907026862971359419090596830922334437314529553917088235392702427944241954569015463115929615117434023274314947392381795111414443171340745792709467381958276364299506197501195349982380767701095851581098127416257962434521900133740302891841131616808005490692329016406154953757238839228549224484712796877285652183305365687719379788315061498843152048732444630933668682972607727608165799678321658323171668062182736055267781579206099737988778404724100637971154273067434213431493625873746586073920900958535583634509966651907516952605561385018958304952602292203267140618832657673361569362986583890275601289847579245026903978698117844531914831919773389697873206550163462872143520021951442375800098062204107592054205374528707891270837049781309266040381136607919978910300200573523994755356759542168819653628845319026600145943532385764981827608192102191536836985673980326961609182851534163411221078440754264691073986131850931369014358452864779344622030952075829532683995046862129370834088784677301206713340056948940524691410227023464578871534349993942546979606190750987436451544865137811501900724851894222689201382056424337209591377681485298652729917089724315526766136776881465026645237182487972621307326871365743503961300104843891303050209052507961863195812287949145022410452843200098819544514666147957730927316570065497613520236176169409860596653875369553989104883199193727523431053041265835488621596990023261443553970044257677150160984854018082103977263985348417473276524787885065135802337357089648933947608035597849962788121070233654977986815636422561839040718184725120836338612068263468809343286358212167379572569329198128414601608982561415416582082703519853210811153066395303415282396508386211353114727747399501778026054185321226107520350954171981648869061374546329016280630585869203106459795649716533921110050658168716808601340416973067185422244473800997037778938932726426731239417137543347212955229737306128345007149177520431690678179601579649387158627790031312847164830385908407694811923429362792446767991864621583732545401854336991492051897485289655917278963349938907160514665939908992367503069105125786805675399451248486965069448254948580335483152022617467259339396660956959661753613752300032432744951793494164439636360070069883257971800418089688575622155572270499772210149306101883026698282063145882008108139600703054910406938220855560790178561065049172391011447132933362939212774884592420259602911764341270100021796320122337168118121516480026482349806541990833715557159083107216258896967547890545127698862107357580653023755488061571986095450328971193826433082423667677797622104585793719966862456278439942210217097743546392401644063301664373567420881915407974010923364338722714098360014450959366506489713623179404496865657467189043349099586925640484407441609431776554130976745491273357024016293603413579540936193688022502054905160191169080484765216873210939074801907674094243121796775736353553838512942605479525931406118082175887671217343886109794818850149984754942915564266217935988776262525257426960825287244369998817829362665865545244571689742311715267307741542108611851738131061607812194343340194421090667260644172720407786889378024077190565566703605996224155257163943752153093498119280573020671212489477910000335640386246926307983504670679215658222147099834599634719581658945374993074927699749494398020079108491676634815742264948063939270103691085851070140623422404144306911391245471341382849706497717643124349511832314747933181884535825452907055100634713235059730437607080695119629529259242276199567434574841671704406545821179021746069416931016532860014730314394836367437997619013565947658691556207100829729771469987238616234495889164736387772647972252643998355444909954288064931062435887576114499562273839551443841834960762264992899767867029094647086219571066600589236649391304858204093902275499454093069964718366505802034313480593874328337920667111949700017229831125568484088089210930971103154645462279643167405751698987834466459280239260321289007659404556761577125029249103051629328418466988175452962563339528589296775370270461999099790992738606722624231292743057338977799126504682581102882192655800427352308922338627756865114761610344044989433471194896607850588840182611521635980003350471491656419171045736834548449049973222982832638506648358113108052305226019223285196826495851748357201682863474981939893970379073768285602730950935290921048496152340323033511864899792958740990882181624382710910045377166535971829145152564756940069851178442898534053638462607324626402676685965828131148932755966264144290797223526408307183663221731032581788030862472891073230182697369085595354566408387906928555321839002878188354798413984489513329408024354659473858743907107520711948943623126729429112398037950483438642552670741242217698580756644339774699727343482327452709691132480502635297641114402117199603138447514399993268744902234988432432250850533171327036443223612364538863482474114275052345856083438691098577330725441884299927858373727601532197955212391507737534784649423886864999881233918639108735400125250992469931184620071106968332908235961468713775890292947023643392871470718999324117609210323895575857484238424619349626695254219707735280352977594812168734248230404524315389541844015449234536584913747882751082425012966917939591165179782056232956841289598341872446589076172032981308260934305464857755869625431531029541072182493819575977328138287230169238231409176978522296591254709147137347524756000013486223264668291772205599018584177994601302221737491816890888071582489928540187230625441870068177869813620344530028028214962321934844536058707188964939718304937422010358990039229459380927603000883821235297050320999469604882408830386212388447522748543802013888153035762884382908126618835295777671745322878500051585694448362573473236385360670722548662558727233458860923972835755958111442027936877763777965398551916248215056766429520195678124569923747129017426743855368137153017038767646302224057584032572533603118762881132878101220857500611015209931664333466397080750436835603261206676226621344711746648339989061268741138710303604941518891811890785372291566073089717090330193837968558469342171626042959266600876675028261563737524373898277110015045677900790619407269942322720946012703590303808030951388170304007065008809256175359194740546223988244473946775354678493708366798878284789691810268207917743562393185881863893714209407987212913020561888903163718476617171484609375356207304144276390028148240481814654639669836188269197102480551729414842121198048141019696895367914665202801932801784156542280510359289546960977992313216384390520305153406476723054253170073962080564741119468693881595908300858378437876824502051770372204151462057691734452826829147563257382904235696117121529606113181868435408695437717333934560333191910851244743801577531559422215951743320719977424223542747801863763574655803592228992663978269982083740642514610250575671930806720080746204400340670568104470464012772448151400856709658676223504698042005139071362245906277334599946599789334883714483527708839533846777500845878172976753033267072824538215984153480057545411762039520914783589900117636791509724633348340369263143241637336984429610346411764867914092644701913921038435450032105355266090728352307161128968894696367307326145565032299207279807401293321020426021070603992887468592352885426597048981760208244457500526150796341935973163891123924540736527159684917100038168855814212205147524694165578389703249420604447628125297976636429043256424525810325938088349918830189077716263512728216288743150552020736618832541384201529866009212472953417603908588795955488339953555620191140289773999276212424728773738579967363197869703652870453811008648222396885951820328190376785432773960356404603981249369662708696333987170556216328172220505527113637633390514559222514811765667100734027651547725527766296914051399089880939603396297611647134667309933761735779938022151801081908537007050484320755084965783442507639148435740399634424150477211500917231760451121843963850153922346486510724142850323553640013240467753094752025649213539566505459691587132794077934074617996433426505846946203593413012773598037489829628814911197598401886099941517059743949885210252628982478552137003140952612462609712719548991024945488513472557764630288111409431599824679966051829773884267715722872912714525104316211863117003218589002162308546422880038182942573840788212838475023134043414308034393654941936074067423511611704998234187122882277461492193545649226746304578425210797565076087877584429128241534399237029808337171873172632385153587412802556986163275613735432332491700242409011292375396732730854971195347997336227570575996849810055533941734099353339417364079207893248897680606822832252645857188102064416176894039229399219170370703513356797592671807567883990104126120165124133557075192799244209263628024159071897365700481701064797578119051245029692101097633798779171583791601181655401094393130461398102755832634708364017393527870853108213130554218438022246715908245105791656720536916819276116644350281995861739300618012111611816327340743733650996990299438701946345974595087975932618617625232870482023121723512466288822440279653798421092538068905328136167957150352814703282096137072795917927651783800260968726061732061339478376368967186337974012283181855274623865227325613524402674888850329638786078690533216829464812972110939012798081233663011687910274228766997643120543767692324403985413428982840547091318495362829701092814780499013187402667834754338594755921080437432256958017222233912733472387187552465050689766689785970670329329771507647774086408571116834732659027065410493819761216082442839853508189708148947305839824503931587057581458562645339668789096539542929134492167101979728797294757141289027352023092562727252180818878358903921191619553765274241616128685175280509781071994749090945587529287725493863641115678560341490123470231352395982023734131142322113962566663867815750668512702569836038371415475605829975481951375563648641981509203376667670063123065099574224116525620253972035745841455628875465011560338364353629359789362626539073663509919221212828764031606948217548465085941327622055844657783855742411990600245410576049752691093484964468527013702638047043869234294307612692033254927577755937842931301177272417014443332524197526148122202726445856960346893218539582023842050035313967935626239252008674317240160427285284435132415850578179064509668242857575012255050297499698437588705861630777635573961101761617534220331771775982393371097203857721769203882211793277777333574974800273145560346210446137439317731851059460612646374370331637291488595001688275508307647081138117915513432547195864479252771167063165909109616324137019347530361136600694413135611586341789450583704498183808369732587573848390307428929801356143517521722019898134269361205374684502990099886514103835370737460029982850141880659483042521068250292813962565383279195323211119769102862052553353935434443539559261189136197881360208426565968779476058755821027167428762085229043822406877293014041262284881197659673217154931367847785240597504167074153469292592712734411714444361171505112693434500094965149737705909605208731019654075942965453572116265924123162643704605129153876331892958892341445272620209327052543449377454297560036707245543524764405101140173039909351608182945265897558204765739135680216794039611576507803628690452950735027088321122302932903254855379375094261248112146114415504780056556118823615047089561156339862206464962091168510216338896055328067774348865465659518132111457851639794113582861544313595202554022300211389596453870289869160446555052061766488067649441072712147006448723373846812350322236003741987856525866935928815751846403755472756620867729509021962776791469719333841493483498302949358201549438212392103693380511526285717687358698190438216129455232651737165457278873504817279005334165309416982151389136948092560764848998022512988456625165278766325163154972635186470131652160791658213141493706910402165352811558543123111308378561966315939766383295459724110696661538237856855100192879110001874782497672086967845648795327172382530572567785373234941586080273867366998387073633163572779118852897192127981200099796264103929818801935164039926050344838476771260164432452309387398170807893694139849608867109441362841459617217245972685857308636309713537200647012314952146668746597946027054134080282695048514042799972605594155749537328198471889745027213880101304394549360424873768867380096396751651850905564460351304579101147408327174899334229843522007054435677470434100121288381507721156817811109093469766919648820407112765206100333304261502101416093271754110761823833235465352573575901427916100429632256267275788850104615791919847590187508746707399127349111035051215988509177840203662622895233336629284608143721605884211679366519847981738196051202304550399305093013154413530955285289905209436422850598618557615836225727381119702681593375790276149524271132298174185001631922233808954356649328788741860843091360276050013009819716067658080504770069309333133065436929045931345157032565437334672855414201278506530397728444125394382321734424083574789947465060539598257501660837335670015440339209528291211316304369057370336814585672754627538941763713851525001769595509504666176310431195150188147056241566199292758205442501167466635875531183243873754352896820159824372150665562354720390470298139620905298016109820179826173583968533800015509647634205897456510105478743566118199127393726652084259923548234628932004626045930515555908036138287148555149869438600097345095140893257354237199715109811202357305173354581727768415317723879264253664604325631856053097080050671336305064260816153783674422507086920245737158925204076685627735173897719011451305334966392388665497630895462972861153414524089876087512515644134410930031318443928372629937110487087201325149344180359493982066942277661193971736644348605597400469215411352139287407394492004094298189105765314852286797548034632766490035076406954035861239947284327554958206676979490222467488449332114300986426441834776748032580040417541418353152735293473395621406332549273468310688575132254114023350884112378954981174952396817354463172349543807702304190752131322697554687954989619861043042671041879088493099382115865696317710832900643839768540392281914817931029621533628074275481872796082478554096958084109364956322900687215519362887820204376781647248886521122325049462835852752748281246169110316035366551233583095201535527638394953201755675218292011216628277320316625224962585159043826671654091686151844830047631749380251817479600001747444024594352919389514068645094401538451266101018859445414735467338380123904850869883983433799642300482153597431833750211324843378163325138760737467419321295156091690414125436063413297624440169274777684348415347612540678028146602989326098583210503404963472799314599863320373117613727269417680211334662227512806021583484365652643794639368123050826127029459671036140869746910756260086210609147966038016819498324364665675637710830550556189061167659868391807512614709318899917381166584631835788999418114680584365307861460343904725421914866835328750040458593919682659495648283843431266361241052576174570874219357358906057221373155937748123620807187437695041068996662663447012966508814741454992049917076923590548499723043631628601983010513356046687529216923632274394327879286430801626331220880880093229975248237297720571415960626493149202906544129692195498760969487699675878020095259493390715884196332905271951449591405487755931838920156621568451642207652911432221447503102994349159013583790212661958904515859012843316695941145741232586347963345201489183526407269007462471568831799144665707425747657590575680018473111011218983576885285044275205035048921772832878214630458664389415941779456908891290415188339164654875562654843232589925563971465207437646672036985314111684375945281155509947842512763212489642628882307748111448141056908904544265664125753461505658440951488778857883183821635765249612926466795051123948172268972427008026183345261423752142703225689282951269710286865535168336813011101682340829602587216405441951721067153552173319529192261406339874789643737621994759342251251093980990753425273936176227390287550256849815363480500225921818942700962571303035727543212135572144931172743740372634799870246413277631602912064828907069464569360407139417660198898036081804949810292598231558054321135559652912578001679165884424430622803739960607312457371519963604971516223267484054250781331040656971207847552269070357025316122195206319182269072620564947915657050524248044521125241455403073059844425685562290740825930552202552088042995016925105181413981675600453472557405415313589225409601492068765909911971766424657227179462555811681437392937272851492477996203504419524490049349181751478978205517965163543860918329034913246522255162204191355771428360155804587982846774912336088705609264892620459152693843152689622503283502227889439787318814117643942343270834675349568839551649442999095374570085022772624769351876103712431195938696335684291273918100297923976600600540835609060941193309904595984282236294987239669702778553597195517944670998583767736541147929184780271576269628357784688778079526355418210734025213919471077912460745573857805586459372211699309759802135542494432742693053621204733162887799675874163936952597069400456745267387925996586043010403262005008590748509783934362732048949407126616144398208048969670775942535044634228856868559322553742685328268174665058100360306432322907265346406507578597132250929760856242012151751460055514107755424028618820641649110780439723849807098645599929203079662751840532128816353710397778025826235500122865883239264145219058394826443712093134562625486494395227967063332138107339064645847790961498793650373214620639544850140242838558685164184934704812090969884797696459262952177639613037329710481914163671942939360260299596297888918109973033981122190243523613767878405499174084175987170314023602130638983708563111529904837499462213289166738703190836302075287397753383267906137898426689103589470385474652465957023298193613063695658719154284854171227168685699150661931403613597936358725545146734523001962322469719960918488275786654286380512058920042644541780750806034191572881042299251952797465026324381348782759919741106526971797858885736383545232571172336240764388522164953790292650008405647695163835858932899772842011541917319581164420081831727253526871223560276599459871594423238311837596392427363129584358018999574033740877464848418715538254884828809680899936608467476029890907108283953144904775256059120687961819611062425294635022927582985115131115021801815728761710696194873366231191168831559774353401788637057940526447486605156064372856769306556332317320305004771408952060337496779236380937482105099630235143194665528673110256361003611073402265267532148715379076853074746051449482192305429043064585879806428962380167352961017672403117986377459618240723330146722968062585550447160515536811658924320068595376583618333530519563105073592529099995632643591883302819296409488095905848270877108307375182556985407347698764500630451801076894653388311954888220810016503315266402865337572016475297586369881242725384422790090451809752914729362799178789597460286023705503949324002745003045014962670281504229581177690437581742704439286917501592807767797599962540881638304637079550398573133936978775317187511958060691194794411756462010330462373482689900071455961423905339537226827399730615109518476534492923141303790274155160242936207075267523240257567494132583249977389480130173123963090488764153525173632355455748493243388987125885699781427178768263548150950041584663720152738783354977414234723728367839767508641351146311295909732070741006040166503392613907806036387046512065115202953455323760044725733312090263305651645302556414859352409440047189803908716897012328172937323476591718291848099700342040719988697101101631677147405900472628052383727865323929126523033957564181544865449561656365898999595466447648575734969449258677341564081434002797264349692585256426591156240520877679083187025831042787970290713936106654039563379432654852297053421223501431883025205313285583012343844035830356044654154273996369316111017749254007806234354685424132818470604772803192743792346451793569869412866308256708895576644286601477935407604108563613337280188186082798159376315656244337413848910809913138646488090095601349790541137274411146617894003347269652466218984018523491273669356267290302846185260999727152953089114868907849298655046753663361985292999761705213455336957103391811693048862727284356201987750685278169061589363588524273912815174961697520780364518605236314154717863640289024872886925894204865032488798028167019596194371208385483071772972624723775548657160295718545980662539864519206103310647820134061666751232842073028001468425118519627488078966332875811641396687976848240282022637750996494311806986500163744718010935215080167209372789319477348402931738251581090827383133125344205882843293896481835453601741251802479504893178657063935030285142029416387186493637430518069860251365105655515082431554806144159806858776651889940976512176014709306189214250039628965579607560124028761836810639602539907232802726507495144723846487648095990351192569518660034004587318164264242468328511972852114462972665540433019130002725963510986499265055550195750722546616016016796893911847213899430015126276260851462446851917054157988297216238389190955741025071408352573147176548476555162058232902287022644419549130614265876889934074465961302697673059120560016617775472695593359879362940135751405771335206545591274013386618296549385035806658462794345976059819202610923677755672409040329822465789380317269943589378904041064183426163554166187294003108790169641891492394617079728229306340512283627941662671892790524716551097920067591438822722571001278863091475804190550647682723822737076476594046833503967735435728443386691045253165285933892475431112040142918264301816811624267985866020939887755688695952257356256030201884470722341339511357602603462376918947324073729431510923496642454741945572084907184443114006338403936135869119675399486465685513011656836636159555348590724173916811887654937351012922090760158791000912543776979309622043029651101310937268641719055180617460746361783495359963433410397756857360354347497787646651566991667560802101088627053758844213570651695608490831268928259115528421408033656943932489500992686385634296418128017873797341175482495560662263005338016909094074370574616757970725813443274648379445540698662067941671434479018662656400382228997246093280482171435830366759252068903291014533044595851735574692778528730401729376588519731041141539086389569804335405277890432382699443020137402360869637443960881064846520404958243654876874677703750013813372490438533659644508200167960020792222642057805249378755611853380188846100593066909222041247701758758884993092741724300683180107379283952778554831906645650740803748426010141194131707658536211548900014410358396838404107596491016990422958434195423763146705005802587256872486694029353671955350293109399332894547904451121522870155488111357410555016752947206013673744802758121340109988158215367323612903752167417434535177537360657262222372816801877628864427942175379539171952302015446457454684833478047531683371974798990290041199596965136381924366881238329992540350145171118359821788133840128719734912246081788244674780497718945870273748207891514300160834811767283821786466270955598960243908363538328627263943237716813936554677761620935161120698980808147437927830878509708548108622097900374062218944710035678677826754387250410377308530516091520082043289652997437898458150002291030970496611327896308761408974014730496950977012124938582895968143992685888782422539550765342654799140731959436935080111263106262592518059642734211701884049496597488170867792147348780369069535872759997905751105036515095074442080648309836127881033718919949948174701793891678216717023298247722179539296049484466924105842165171527366737746412432415444514144264562718111526808994505231573256177885269707589069165546253163035438576771049080876082206198849132159287554826178742639337571727168382265974073082806539482983580503752694030664503018108857178609683174961343223566730362396883995853094214290896532177647208032189385752465630639913120408385220611597781987900424359892899462084212778994756708662146301918755738907899898903601056720952099894274247845131919143526909384047216056219690988755284299005287525500689019316352507099586506840304613595301912474356387050025109198305223547812541901618755719029900245166288832564757347178812986892477804796334068444685922215783768299595817812160222645108185935072477167968027885658533739008342490845016099672891907609666471573265359529359740012126572838437368329140639263338300593444067356734582971798657691897459528083423612203333470004706020953862632465478542742664934799464488606089248772489571743240196194961767558258909692818809510447820681932709807179947183465765404737056544104327802952007944401247936156484704451797764917433590952331336233302921026307472326350345456082422164181099571922553075309808245657554143164122881380304432710027846817408756224805295649632935554411897914920283870908345931623870249781567203514652908871291664134419779568308785429328384818366187884779068901162006116514824165329971177900699874880123181528366539661912021804276611581350071192025238688066038434195523816312746289086973122326723811586284278828784120555613079247278132278811497821660372610914997023071049024778421916632250673563247005369954511708182803797120138738932128674753956444907876251583810153759415933271453805964614547225862584126502075325762627724940375430205191095042766034672910879079564575528564670869283362418428993357716255774818865192673163972515172426585817896723092797422463419880222117426876386916088625292767998387170717023448521688138967118394363452872838523985553548836956414966248457962711524142694580432080707275647776856852868519363614808028855335062172333340879588394131819498185453217998062387331969483786643322537100233747119002712215250940605614331356639855989609588270975952609409059547460238804538499077189372288226383955568528528351354603598173254138928884178403257126737829285092792505694432406639923079908664738380803224192241137175817004430736306532729507107453044988984488316070086158955803431789781522484765188649247161543934809005435587482475001151728147955868339915044936989986736994505551985980032237107188837899939822433750984213059209174601748253538235173697527802099349826477290957665640292892801457263464418425984747210189655819678793780721266591099560673174343246560718862265761043321673619174663045929061345023585828516207548283988466500656527070453115705916155048982184665495962779624463345051677944337366209337040328906757709856679084782245336622459248242048512515426123113549821557603074152930037950561838124297719800207884057088088772471590617051284618616188013531292089784366899140863066037663339253712833820258121215490149162425911208625498770385580768480032335427459003027561694898497276571816923118269688936409366941890315280222527081707092506175455707682836190385165422679232901386660764464229164293619750961552309975578775923213136931032199763616011510771745729365867385963133818247196832058360098970330997113969250553803003042407771808910520529562472870763488841862645201246051251657260153977813322214881837733938591259249746458599668770406133922031192302198321880045079848276606766917453333503813290897453100792077817191956545256094983937110783775638532261203554033118810202154740238691527763752426297977543379718301686312353323249244360804226503339099552154296094739588100868054836621940790512118980525840776849366214151462782342270824305958366692747301243966965432134812620843073854934713598566704276180275751487760173885096243011624084173362614848892257887165164459459568250835618214677778142224764464486647254272908632562338340919739587578309577353375354798726873708560260332688968067634700872000190299961777217556591095578822985084752224124736109800146824170736046566703818740654282018751031513526884422019099777684263878112371165677478384603721970680725529319188123842708933409261499326510868538083929078522276986457033896745784817368471572687764093386827309814422711681366713923515917513291204122074872036792456492119757442614660054250788054947014294201459998357981101079349651501666838673414474704823993853159672009262762108039751461839094445625108414534901893825305206493389051866693984666488099543290816767611581685388119600221164801724767371778502835486542642834703450573029641331510756014057256146644978472383032702266116255652264779059100346836880739368251978530350758910977595641970275720842435830394687158388916171579462353220555197376225131882846327641290984552342371264424628848653606003966054801317931436022272902388785465143650342860520518965863803033815539250999504945089501562636155450172919516514949599825027375476922137421511195332428182796962790986547027093909730198499387076697437473628441514927901599695994270313630913227884356654990609122966837317563156863934066927375717872467637450114538868455920221687108852474292730205770598419257785100790767773621790545277008230324936323192215198176670083035437447532509739087664319780146990489865058216457716699638102888615118555689968919370295185241985723455756444268936099613274769029940587830986668871657559195408466870597646512613457253881029279534502968554277461502587301930724560946870892924918167634053834439115791790884952326831729918137986132722181058710217261594197325544537141670192091520115482240720536697196984167423675846395581301512836389368892116320169143916988301853994951597556482619111906898659764716822090480579984115041509929544486712527826144432855818499065645134631931473436316381051693938540404089600054147849331542340747127911622033028229696953532352148733026429314872246907761940244195850631944684691666745236399138285692605124470990709957589918813182152676842768988347357657716429263571910548050510220391185079773704786170555949370026220933886859765511269786500609525621234753363853527646554096465644155182782385021379696918969061662237009448989437454800506806510157516178324750212710115292953893659522287902188198417230704189944498964017609016766472395512248480102219986779830208780213513532598137443563812136594736788260685461365029327446375522755443587700129116408569612607363656442817748972632741155556682333379462323131579747489320398897734319536090392510110654401866416207613187718988002306330696219522146075038119798521949371610197021726195459984280332056099343312687592292490250938409115473366389314150243042166789898279591650036611776676292390171426242606289513579008137474480544331107303435942677913270976028050642651715073218136953379103265072555281006451553810069956469353067125852432248824419710654589806331890852318016006760874815946540502865485751183356749603832277392202156473441503750467263464547314621446167122893913948743003705597106625093574700023484044090445960115997674418293624611960556034297415401054325606325598929594252591223011804957489989374073404784516268380374038989074207292443035696140027180302364137789882370007786378301959737155247987753724946199053546865387711473726334952787041067365799572747087525688179351711858455711922612566057674649840582992383277795544272097361812731606271577540994384363665747902115988641220221937493720750532462136963406081701840424540121003582330828652948562334995727862694368084013219346641989833455481797887277029817826123577882045059940951899208140398281632904795652388402173052065967956779437007716976002762318854525982261324210044827670020575131766091811402214961059751756418693912035748649890592268705497375953072024040440752891514880189969971896853564285358744525770357725145980803268625176787750134137340307839918517794508072271073233303764521329723841951200676964702689453819059451675721132839440744454555643025750251558712721438559067448375551379477450915699553168475047455858488922055252324732907942085111723340066154894709127161243416601406861396686905522096158842975235523301721123032479724355161927137243609665412344167791557624921920371170656082725923669998695832570013139244161262218298756267668225753997493727608380072607120622127745904989661863805490941803268448052348462732806982711826428832032978800865135922487485466278245543293875473068050347272508551986617437690659983755323459367842533491781190739885588632849685515189596046913166248489835744301090449331580621150566960122887824240067228769878177580308232008014365936650597852006960804911458889322849930435171578099575415230753486177228779902726267898016250254097727692196769761153811539327622770512613064403224829768955659213114834016412466353172185382315341027332237530220180469835667844426114349841936893802992242661005710429792393736256941459025598245880024127595982904804968465825035614795202228268202347400892156485121113032549934476144143808770076133472276457514710698926345160982297625973908473444959903141016168507561641373059402935621933136867144963734014624089429306510996756378307528351136655933181883681199979519158300557319564150845985076892271175095247602225258312528532387438759261404685114427649027799834508042833994898144202208215746345883763351311529985146678077975354467529151764469068229122698210080643102662884401829425937567861091227437866784477868056796647931937832220620104699883903566703259830983501111959138186241524784734148803042869249211324464790941550774780183884994046756629743569163801177511990904564939124727540134286413688497515448140524118570917554188601606721389858840505076867727160000052465725100946931996667085174263829592942888184316142294202633615516997840978243419294180745060837761771314287859011571728434265556560180898683339834182313319471856037188728174649731689033733396518306513808382905843927196407723508710896119243722350312173201456196511152914616695480158054424319790851742604357422168093280257551562816346529501160170232930211849310599971920636241352423360617829508215028740366196064538917220374770511902408904752418685634405477559303031374154726720149204309364786551350731831397375041165088697262906341889015107238244725631971421618327546968056808087336024173604356103759765889286557987357905734935022886719938299185371682130844825269419631890061327248424108375899096395338286435865867861468480281804610844564101396170560155102763373343339851450296842366439221008533725725632106572286789066862412451484668238340435818875020181984310999040489009042999367538854960009560448271914691198774255501841961639651568193717044901214827906924248032959727283392953647354058851766713309965589924920660621804221776305006676951618475175850757021612823862799321471554951715905139813648128892649266275214387355101119068852210684257184414174700348579288631929832037714309780049426854074758409488706974109352852451455829308567972953533379011677534966187156712847083190760932983435254272313167823138780904761214817892624951281965263278425402335474804084646174862692036074360402304911662011563233020012247194525488115705301163037327631126239472113125646525287165765512682884409471141336194330263262565529194864367620838584731041623958854710685088523216400910163260511181897498634909583140941451371254697771287791901885211906307796516023446250667177532993466181578519278699082381759729992742569155012265588161141666362266793437716139761265401054979318311411854661947234348342174843481312512545534205238430494572396318764458082360486208182344779780383170528842007633114486751633802188578857945183687105823371622609238450376348029433217801941308166009750941463665281777278514279342086084015849426385779106830922739778066319549378336405504958440598726818585269168742647621950271498988339419929412306428095295059048336502126000922467227058537695299903901951156653715907798084224854844207389597193185801503145314149600589150770658809391202560185872593266223609834331169144286088966626502378324896669663061377655513330203455886321448657272901202776637958979795909671333781232051385374562084308831747100729050257180976394759112706201301294026213217769822863158834411143228291167594517762664472521980753981972016449137359675666689431336094414748583650834626513563125937076209502377517227917270707074326445072270218669694911974830165447986735207598671228795496184214123687717651386166537176960129879570342020927605648304246500648750584461893675016581681252415856466852571741509649487223893954643752617944801954725114826535633958774219507051695781607299802923382312577875548668009772939421134866529199316517249094296160934328041545107096842170078867758632939106485647303261501426488116982222149274038569388903116450347310406631985603611879343803798747845448820785653229754368431664225547183167028515948304467594534547941660148527627925052573687876531884294094815735011647713751369693137742566599970621761692364821942450146550180744194174240602189056167981024744088926872663839287972263801362517643612190539053966052713954144514049018446587967247256582609272681082483598707956223516853716638710090534924858936831421079389953584997293427068950020178362156456239950965610535515400983258769787198569768644833970123299358016123651169280449392362753052933262960214855602512856670047306130384663958941447326176374957704841627173303828459072857686551432707278977132177209781552283009365547739555300146335834595684942647313242562184637851386259025245875400064934377643589606434645713004801933713694378186627426849432952619570647142489398205746697607562623723573086570851886979653513089008106768669874779224387146039068192848543530221302329822688566236150639138964544344938747857631480945504975648660152577215877667378976237895240367742807420000102491000611261497195939612479847793193938339506125790444168960699385741108323557964804483919691046660162827986528214969551763534895892051265920106176971625745918412649492244528160340714537182431115820218133862263460474334550903746444708141954876821252374116885139493061446228403639622505893600819007261557392151447819918278075486202852425079562929847185500465622671004794879483387968736704844667288822672022721074997008738871977770365271154054926210317601545345351942631733916768896274982807463632555621245738349880604339393616861168585345453880867324203963108799992472895815395496757352819204125086433011755307321284090987010616352606161503181613455846305188184552484577040739022903066208541441285535321404885308917903006329086529911222195147305767401598405303084132013217912612503033581483048404449542389723131002062498827126101047344129677643188789134513546496976048480218780756355744342710023245844994686606734872139668845227193326415980465757847791892089425221273535946414753720214336133633617482093220752288387670865763548029747415674383253647050253465983166778333394736226469976853052045059492560679942145224481233397044082871213275545490779860844977373647936240424880326464223767773679795618839327096796128426023550032220770766442558359467530997742177479661739330581007091851145809376384003623012176862358737707159098442790070294979645504150185656511914432097452036160504708454912785433926119992880637237175806830045604776056970566373811076369740665676839210070822223759941123032833725490266067490342266258692629413856278520246438037384762466665952976679933398204362291009597901957374878335917035334435883318384738900972965398142429363818345722261860287170974159404432686487084387426886388334514753200302406490883210081552834173912828672154241541113379156010364777772007247087202758169215584507061755995833411799793955502353706655762807612734217223073007189839742170849389070347847208787940367557967445776290983993529098228232988585462061014774613650360676055453207871512993886770693832990699513836162462238606177480198757628316298166755647655428504183938616262375678261578867708046980793160621526752578818360877276861925103466181804861845600828856584601633947322542592409602348413944552063694470217717602484653313459140913806499689927128369942129635172424750841354967640892295845224442246034931280451729913617370323984416025825524214518947872812823350669727607241567655092961961593459971419646617007965166714436104912573200464990433991317612649424955617155537216378013542596486776475865826946281777412448131670056093942297834537695889698133889840560176035242552508851188390268075485540894944191685667017407094919661941095914021616392580273332526914070040977349377621291972723117044412118840752123810124611132086514682547192419910431421789568109203401773766594391407394502676108000020409868687017027573754096146434978562739498232476216297746895758399118857954713046004389982809488665483550965055974356107991457754120792980057493954974010717466034190792462282660376772268392386326723039729632529378672429896845335172506096559045383082081323843605945180263345281509484115657494253898513861066155831843979483930385872019498547398243454776154492040305653140970786997992701184483864073105567072374960103115199301966309017413143803255556836851189491096948648481100904407896017348240946456306669215915112640490036912509865800292856569284334081007759704529713963597469800525371799935188542741079091016339876558601935870072210490754060260064478523134472122164821541098590355891447276153235825441539144324340137215487766131133356945559351161154320404797004475937889836681545342793607341056279296369336631579638003277444028810076117322824976648163176125382072693324470546879642562172720441264171990118319932766814795065585770828773538919078365146696957536187976887213253632095302168003960964297975092450756066474220722671959566864284042774756345082948982321847377989826993599313153738212302302691569199367558191660310450518568872802403042709906793687021186083497646643481374191667165413276850618404717617371393263438105957645882021174979172756784090899136986877183464849679882359400881574406311470963020270376782796730721527483666952323254957755393168172626628018364046036350993805062752610384257215883079171255833620769473644489302088237593179574751991071314950191753489315435865953878886371957589833373879643477998207849812534226862164930457523129668769744118298134459592949606094041551331554382485403462135307230145341196177568627324754666962027361843597794355230097630418678409516941523620826002946333233596486048639332176784143401004721705827381719672165405911599104905048493343591692708314261836401388802657693764178741088968400502620952940293058255982405284806480670829047756397157119871459598794784032068577050003125882041733175259413130356408576231458032686459895908833558090876352815601031611978336874686615775048514143803107084890580014649144573059543014474459669840134229367287878810858916784559964879267241056588770239919735921532125372455990684551903014732929314278355764829824087951927967762782258956008726541741316350532307906448303133675791347031409448374536431751030597000257624444067031596411051813012642405492305698974102930819479346006399261020355952251750048807241832179910343008702983830270520112400074979811400478299339703311753342209610717745617207403467924057910474828694037997479178076643788081092133368907029529685652493447123891209446911184579690467732490702229727498598191121665648306651914708978702286186628875345372330719850094993372501944135544214474623948493863929247780047980874350972115416244843012763185979854412591902881626719149931277212574093510462743775317256393468717130681516529014471216722464928978930378013901459581269991325758826621261249259614148215581955267733296860255748736562631758737160718740244663948106007515156971786908828085341359697579279134659858839101844138026086083589024688222426290302222137497106934802845184834650902178484119055527511104970284631852448234120377367897195644435809784598873112628619172454897986517024620569261785704319484146586051379560670989363423239541804070809298580018295915999778582216169311853107845627954204252393954194061429373630596947220853597131248373153804868151379867924320343287380671095707070886796766378519626014038905195995768901897438307813032649565435438561896690787366922291475207128630291954782798974095516241914418331474167040244944188913672581358745967885976839886647654200319152930035248996340991471074152005308991722679831855532544883523494045619916250254918371648958732670448974455201294990823759431966504627185966317803189961481816083901077180429893823398039841615109430662312234324785026307751107887630143436303726560005856022711331007392218875619466436261344286513280864134034074047510675569302189452518411201627218056330563579761297278240645667285917820547841917626563099541461108653573619748387741489279732313816774805436376450772768732621811710508793764262016959067938835128504045356587653378610367875322789105785087494755134264419929614910594088780867923224570871870268442464136283663730204858392452080523757628679992030746249143878474445100537427167017159577602350464318003090479753915393582129559369270177215845077014033108178835091348653027327903146746740922404532849511420306915901825210538380305493416132564567403886753166217346057151084135578994000724602723872469982622570115044161404515314246394190202592108399172615846097230284103245437933732741667677319830167413715171235213802795413878275583086132864462259175993248795844900481185439674697432175837356123645901733125569266063246845105728930443088132468937273881058296899257936268773361147010867093322817379254364150983976047600326623155066778908765482989858543335863702373872726391826562451067111556830362820505582867615320699864421514616858429402590969396134652557749824312001994350025156416862485423471884436916401185549564537425119919039452092998715208502658952889695871937277648337547231534062458604896735482374578210417293468722351086814716903278087026402898863172794128506237522637618349314867211387886028852688690453704568472207701918324128656821561444956615341292020365709717069711789201919469590982606888164944333043734493055249745234596334774114767586101276892079556288356079020696623374695506136564585351889014286102760035688330400684214372921088609084178790623594752224314466318067150035919390590772575515899686098161402524648910074752859691332890543670479408624680621367145593405283615153105760918231185557006233368340250083039137329278317253603946974019747580800424047418139664427439286452273913559495395634077916347392291647758766237108594375733042219355971075734251588084070497411224004101045816609007177586828746706109473191960292987320829132127475058995279089497669472461932856140485317429808280373745711055460874932763971228437935244372911016473689589657100670581615165680643762642290360531312290615647612502823589928258091119898549107019588284518488636630876524506164923973914725766248926778260055605044210200721260594432288328972713388954107919205092974396225371408213330070837101067124098075926146244046867139869123823224897156199199408049990158732497562666413833066400447928819028668619780926475550043916271585956426038973921591866877102729383845148197257549014470209801443515070181340155809148390857247332797078443288718958259786392305653026753381324921198551044259694246744826742024805238334184042301646405605303532456597053011441328657803236532978133037582895024561739953369050994838133496587895688341353723477140040677686681557057514279796040525474881288673351997164849973966384010341330434339632558572331387974582413835553622710287744602920477937744623007869905777659595529033468675688582003834710663526883928165095714458669601537200823150509025425220077548973427629511546284032956726982625861207437542252159345536594776206295782271635450639532274562027387630624130480245075746613169740020368179779274563103196726660419099322981105718732899982482602626258642878933598529634275338071069728595257612633297810217014352309963632655183919875490343323591831584687828168919003920131199485669175121792275227508503869038198245378840532514463516504309701159781562377037356279193196716003167825599707641141671225917960662705693289861964212528577598795291616575673254940152569031729479536220867951561113165892740458825411384283624438335146388136467197167742601681462285628136393216844162111992477316145391628590522951396100200984708259009506749452277066959291317226283568166515822775996696458859183087394910376150115427594139509296184706616050111393374865408726765507882595319432557994320269529899652360527518187976580395229188331704551074685873389059685802005743757112341310223225759353302750825768077369281396880727345428260199694733981525740490408022480854409705951405267194451710589119450644341512444392669667889138174785440305703531275627265382905629924866868654026248573558549217319718475383600568582978092399259808908497063499252868525867469007583967438709586004731195628277876526165050972791904115790039242666655756025920836743417348595271486928137136906319798512740031709894819574625841593605575546829652393337800392761498824377199657703147550869847442133559491453359200110840316474078329082348819280145981013089770245089713266928071113524189316113113381251637765434156513519993492717331769894040016365899900578777682502600008841991122826936118163479218716760438520119688922531925346318776711657361782565728646118546717457379912536881334833484192496966250797271456080389378744689220992566911108819831242031478101840864893237178086380856104436564653120558953456686920582323605912459502340843431385802392933211839405269685056692823205322079641536641070187629025667033504306247145984990858935058166848897067573849726842206080626515293907972401261817619099871817870706209665506680444158238812166272139579072054585498977988374820332691895168929875133808143573557896555357377339415079969308125859139200822861222414549204057858767436945716757839873903784375094693309472054990296472676074457120816922429496783463542977932133786308412465692376052041893527393779093248636887783560106146288815617437245774636421217672413154955808222374276736461054832936327461932013671800945069542004623220607695709763582491303813252198827981595837579093374088929288812049250195769095927531804991878078979246750208275154535565767998771246898825304568839855055952864447078030279451567732672131626991873029902107231420889210852490223380504608558784930615866914856524636939382533617269181635670047035230380198712164785377000102561212889353824037516066571094791238252860926457483862997667635228287305283037004087090618517444166295646987558699352904939173765284575570317141514404234884024542092117990461798799708866229926785368728554415409441419496120837782829156693605496065205589905354080916750499308193099459263887779538211696705230872266344412205232541994495808969098056690752629851156903448889105211916694454023284328135466056066709800453604150898588631985082253425025981444469528071416592555804481205465616102479832872959252225719887317628803880840262656164692816658190889874470187510437800251120444530974626507033594459525619834239083435488984787241638926789585676438456058154644095857595484016967269548584962316490019008300870538394300791251486977606832926400414998664996722264903470874330514011625035445249355622474583479104653050730096113394962837878035399126344055558652675307468724165711944696986097523045616157014493716249689126609065555920577651483567479703374653701820975350838932111707005055190467489931381019603980563406943415102439264845829718672097196411141830948601588404355979913185183488555307568128257877136753882981077714811015500640947508976934181279841921503634971123303692820648262382177612079225604770628676749334889871708220698502285497450900862750970897667285019257781549983621483497497637790904986405257555885530337444306083144735929547156868583123163885003380115198706618361583287012610270935902244343982359470684158864244904571590314713917153702005774864169775332242775977078580486040108654896592529158759229174307413739129166897859143403287242298733462519092517781800041667197922883579000149433549436252896898229607418194974177660742387626320538354537399943566731404426679383170785509696795460398108465445171913946492046994363304136243924671985423055955359456150937725208066447047912823423540787906714251929897902879734726583844077207169836413798116015901474299120389000202616261227876535219372750111774980114579783814092003494451185881855334239186373152456381677875970556102798033054908553532553639028847519475933505181074676171939480280677968055170647021317006693705691592079646226522749138663508090692513348586184445439332720127054250489053793951421073354280301132090040794499803728495888337557413228658065312384499495601546104667734274917357128274426187116942413698339623842763425429858644324908113545180817237177542300574961153238526506913107998671402008999983522212560135622272524769718120114247957278698121052930203190369678578092947244587125035669247453858622104183474463443901117217252710203554173004279886267187052000617152460929291621987381529944183400065541971223064723228939019806498242696754304448423664135555265650816901537558134376533383580836446814781933575318084222661387243420302162285355712652432105841560123144413506291318210257979941583525432520269761525123793732001231945836158807540364947168499806063193403077003379095153771225466943742699114709182866073822878992858450154340456692936532252887943902991204370839788495722426436608872652101686660203762712508790693710982897049385153887529803502303364299157892064584077949911734619804023110382011662810808825793109882318915218245829127612364091064755886015656552385325925835030769978176104716059571970664652898994603789108055143936762307175250870545741826240462094811463774536234468686495649657966036509255066200498160555962141087505616594201453515378154093822822059996786591163142813305171399057725685072642456503760743778911100876390911375739494961832198711255772290387783887200670304103599840691268834413228021701168932435952779872632672570770930337300523793093070267176452692356540859541429673072836193256768725281181828528799169019543201347766145427134211660365876676259800640421110456520150029784227895722891215076778150080608919960322573992453086417864775729485203726776331557074514957240040114969255799561510546896106260196427124013247769597824628296732923838649690366872840537918318104961199924440374096328701151742677149424121791626476705224275542355194067907196525434761620528195859022008966907856918260659782414526559029735987203514567208672635653254348536276338416488113741436542480347707165578645921773821588063769102288711536565016845045351892096710611122449683963202306543144791045180706564630070443315522728881630961087950618469054484371510826462831720283101551405245219157582997865013574463102869411254862384683557966173055236211106200573598539199990709683277441075587573561690626957105454796567795503449153297842055225511555027444518705702002258607131257632298207493760060161327899920122594992541676905255615931550566570556441750186751206714615647557325059555238536984190715008502279697324836611955122525807337035220018937342718147651253300532284667084263177052741139158164766745727216786984165332903040336979939448243356527536952313152085884568735978732514452184070027144226556963438854034152573770786567184972890746598290874515635686500917713475605919057626602492445685378447249254589329908782613201618771275008332446079303046861651558002578214305955886424366954455744572529031697141137766399691600268373986599310362572811051507408273315679822644541273239728114747086691432130403628664060515714721271137774064028019127292824620345329953761578544283855517226005208019448021809390181405161877742435621047180442865384218872498309677516447880850330272073994946069980553387860308111003699808535283266264577242475218062409411478454452414025522839046568491351004988612578661010882258787202578904778322334140943595692838159558770040839984799337211543251657781856584012648044832950653714145043291407597337034912701490350866399706079677113027444942379022693343829147687635330978762293687202825376964328675381501743133137667543091694046243696516009527577995117634531772668318736672779498862253785398123891291275244873055926048181912882505180079753275938786524039492748609057828832682317243630730076498351522398304454096039917257396108779180644328271658274509321723480869783494734812489923835655750568888699880452003455215875966748141479665688627168816487310649769290277770570273836738048789190558125922185119329763279463281668043453046826217126934800294585263736958788291903728423403658766476211625948817511093345889016900591294515903119442148267310375100489716027104229134226407863272812119410718848435183744633673742400195148041088755205203583922430081136373018041134680408270946181176262076076571517844606006924134248082235774094231156531757787217248142765560811504773630151535853777866468797071914251048792826076893829289996634264378677745716554448965071764616646376885120765364194038392042282513395960632151945896920872424978639228384334818659766762766704280143759585343540398803051525959032602647510204191545243602071638013804981283376914707409189768616388305691029699674674915890292095001589103279329631714843629216753389065034731738782073573509005814349664313952097745655420157334662552355044233987819687196557160255966781850178630799772578834557826644624238911652589643014679733961861348547639868018805489493231875064577965067555515345165609022262234268868821469902467100527395257076688300016967423038924609882985144440240925047071759326554540537983937192480462404306725071304734274192094706685959247640510935467026755493618720250182306387919667941766708854744924721965276081319963279702443138893557949053848771508717598343270982389503226366046400385170010814373667751469215531565136362512045252894310447059944182472455681288385827407306361562401658620753798650505958048829495770686454674006115678263720902481744843554997778124792409653376788949527575208854768391339997001107733402139817311197374472969575656644353461080829150563341610492140352330952709001653576704838214520699897034263394216864733677952230387373455876806704721061557356379872999305495166687638901631594910759321249227739312339542494373872575995394435273210892961466465689367121990946439639618813516803223270612629022728676192602680984095251346681878706688502506395847300953249894577103838069672975922917089428727792619680478347322566162815377108589684717879035236994001968179905758119308465992448461539034774151812576805150814262951617954647704028595698091043889028282701858242002221350923379377973948366811542524232229972229883103907193584458315385416752931836612898629813065768751222749047549531819297933932678649908601622973103851942312668489352846177612970562884423938729381682461066930275848824502177327107407429859686705942197703146869030724029849787471095669207939888055658100204995312017826029630107265342510771960938119306787380892216575480041764504339094880386995585486533900326706665950757588332634056414450667149125986474194862408445463138428097927295433143293766832223982465493398722291488317077194446358934075401836952456671526876905609277001194860736191862199857698855619161097513836124589257234154654777816666773181729479672799568996416171395038562669950362963065116362799996596658827341781142400317475097647731952129362580835087826026925397389100837093969397471959196592900232886976816469599692582774408000521147828519500669629095095622341902426244263847463762640364828951041489506433980213478225980364789076853039656560098943549717334745205651670448100029603649526509056111487158015898868422414462201934586603510467205753834747113504811346430701394363238393422796602009881227313822732339538121117837400130981806609877490820367526699558322936986220506201287155675533664303872306629428819658093116404181239012337837382967497117371904871593642613394510830147018666659073702561162974719801450263440399805039047251563618136719589974893326570491365119406354903748029143462131859319740965858544758032789873139759233147469968383918334214603759662191429276482470251602728682079933411674484033298581069364514987370275830857451087849372398339083877127880650069671939001362341062649557208108191565888629772589459947503150837606697948010490145410333769801405738758285231348700904784581510614977612389203022449753912626653795704343126969240576913951996946530153575622663958852902792561673370791831748456821133947913137831748239229233516340574297084515613515725384824824112192576860334232274491265040409394245267338113701263774185997714332935413959361337756232144633019936315006169894104133855094026296621572046816061245804479686513837239312986032194321525909724493843477909973708107090714108316883018016538113469343968899464339564299816250438396635350358623213199312250005982853901468569946974822059588450818220805812577187481836664415376682275190762681306994370591241276334565505272332111884169786702427308552101350116748510481270235888580027521425277647288651365561037942597803396816039006279439206073267800231428647716996121997486790722623644918253756480590298321920197217121831320333421107885247247792741912236622754265971593074419079329642786096906923597091699766816055032462599771576164813148385644332121365115668893533148876467404220600212985466794412907077677704851840849990631215517280023556004986470086426366121811678150867165633511515196338362853442791967128932164472637917523734831691289700741489381981920994688364760653810559497222738331128654238080502081941874999949564910539765079651422191537204511075911664152911055105239920457519706947583567234244816998274394802138183932653946436729420265111132479280638872637083075019517400728829191529097797615160155937865529948352257788806794778154199954782478594996098990209760710445359386633984705878961924783635857488541999021847716210099822483051416011309447447364284790436897707599370158698379905556667580296037720091692833808550826009941587594112398146141119606951172497149183238289038559052390168339647026340318137507343008137164811315164851247204636639571251517942564391271130095920094456182280187563627681388312974928401640675479026514974611833925571577165835205768121570232854653840387190443026163653062809731642847293479256752173807160699422035078840000107288281202881135444029404371823191984920534837704029057608052206376733160446228566691984024404485765701819699159593744052756976239828815006009194752867261127778336445798077857158195061199463787707848056121264408408758945618023010752417889184791327693947115147458557106546905558461721853165876256344101707440780270902449893421395194129409648893571359700727423919987642634596074651366690292147331289881349583873108254903588422399399112586850455214292224306992109562228326669748306296582886228098772706664368672094523968171371388948123151690129475766441184110943563277145116098227388638384952184607437003556004881687630860382059486280248155737592754588652393092440834290525035297149966518512135717503683607277044251909889214703449867498469260816485724034155064491046894150624832473266492339209708474986737792039014974031095581715839959102000872660463898286255069019010307848693139884182799394391832047665945056443287428886897704129175123933810020443969963696215625134730024043830599377506169665714528960439889089829481268696830244645527446918673508907378947382382488659330453600597865036196930670154804689469510255091808277125203857392137461523052181291006666330694639365107181947370149352571292766669543473344859257107595068623467921379147532472513629859934672522441394789429882529953826526760865419496364875226281399029304960296317207046083624959307028932490857650988437320816611670377645168700692256143609247124020772016023061381228344407960029141683809851714061011133857170052620613672193611755315032815453654820728595176671267046705380563278015858837196343159613807876964314937568823610388811845903505193139423038319998581293547059319724705852349412020614631842781440615047138982267692025085816905838060492688218890005963199482295093939139864297538434877123289293364989206845502628702221157489511179561724336522759315212470485214707685149422062485268303904573783153690019023496661152847896790077291807582958978063433434590901516643071345669756137064012680873520144894503254073700564362519868192242322127344135662238966479479541589673380907064738584778462463851207744823930697568708202258167686482029839213120321904968079665716387285144364940482373655395864774926749455728324673543500729583519262663307092779892050590643800394591730035608366416768873180635881651590911237479553109106068689294663623359809582011027207749262739980000356179838126724653955314271830808068487891822362776686513174346562307236366074683358327744233751731317171363644849753308388713598691144919795506656385582963680774097588314309261583237077041825610153003406501345568387600702272589847542275783697759817297987843212931645237281253765917327778260053334333018105850490403350017228708979420800052067888318059095507932829643318815660555065807854728315650265327200888903058657365919869189879861313288479825112268079217522438672369141491471290089169157485910822435032716404796037846449430190460107211605423128317083703585215266035992434458025884613080055922441684839400654453308190281859083495834207815675409844726774231297947832216038523829472400336405326722045917175197415993525927538455575121729108131784538423231681948471668465731514572110496681699746143518069586053517884779346669725428324217332713623212122035207483301349760567754631788905498314540398055545459894438272184138752221750106101253539910414160703559570493180533592740552488830175690906243134354251826234844152064395171806612713016172568318896490398145516479621389017384797641485271010372059098739221106622602132850613662042182301410840694742709919116424061250044396165212462066573466897201164285124161939222736059178894408682005112818550135482131604273332895070312273706433903377627432283555618263834595072599432894370454722263818998624882133260878122438834226386170399320611011630195727147546163596738990174959980914254100485231404087520378368524011784070029777923276533162544267948073058539322089972567995012097307900769479634644813925710448841283293262661719392191304099451154425766457264029827619870419168464378638812831309475302998074624918744681812404352519608993921865512884760677400734330592210707464167994722191735538613310599488566895185736611082700524020280993511858879182924172654276877691650571381145183902891201356214297967334915331319601579684636808013157676667939989333815724172468628219526814633987197135771894607194498931364909491022494154115969187041696963675021739721720357242610974531128237936783884820184906881537607974562584494912488451266868579926586177934398702565044186340463517240202246025602635669085862460488765518208877969443230279520880073739291363726311920457235452603975730132452908601299656518286201689956854036281626243601833916538758789168839778967670590717171674897005040684525178522340348032430842897666052922751275342099738808678472013405056580400042600468788902658625021833968628668363652669547944327769390608598736451226451158407177331349042319069445769906310301792642375401622222162121257773388512289581678974661479964919358492269225626825141657998856511649190757377401119772480356918511597189063144639766921593273039318242855015572865017767674640342244328656778367037043081125574294928091681924640992765819130156586672012090285967361268968339520860012145521095484486060367880924772720129346051096691668267561816111775718065621699313331542727416741946708294883266533202413732865912306415741212192677685956284245814553727844189631984603070806156155832573388964401608009930616341512144637970219528063675335043359690808163113059778610379530363866690684503674524020475720191978595468858327038271517199613126475536534097374595729097015949185431147919483258475113781082237373048528121454608149232427695972860824610597551070528054997150907527564624716783166977854178550278612877831283317116766592116952249304267492838949744338588272271863057567543312750147111534178788982101340572333960435881128476337762024385129374219990394989409615712122222409524833639272855539838585755830662081969472766900406280799559948277262867575552527568947823480584350805546120142411460684473953643595304835720397820404119017859632505882878618104994183909358704837340101171661725443699565273416789771126372764323306594329296261087847792272338937194568553670878170749232524701136173033700713718904538101267562692644344251476130668837749589269474420326290737317242026103987041621342658692886882473901106713533079037643280209597089025227435538823006147576318182996658322106779769858929550701630848409081000931924419620176030032507940501101256991916814907335730224789673861047047972524922514351436832871582219698709171200176378369058258639235860070980959235197311079950725143058190026653458373890586686538811682175726008802380486498164951860804684545976447430166131011986580820764290575827925945119014984376528715207539380997373514177825563745781861364507809888698489084326694973903281500821468786713500396324489583690544171067525767925492782383489722647964350295655589941846194028482378195639916534620857833241237962013543094958063875632553435403803467117449443151013810041748178769785937001243987163102598939421240591873380317661584118910548303925197122498405124278987732076324011689209522090983864166202519129509459678540957164566502548204576011527899554189097489399416066828218543650111465038344837926316734466216182457510371560045375371771979445642945042102719462719799607856762846329458608758183348692584967747613761670860059025175616342728340775255061539928892504463953290376573787035212723157231526212751425440148317719376423054567995369863272330410834164087865567982698020789902532085428420412083127517239545522701727470822806500372116190154431355118417534362511544528791080404509984340963749960683228981865732278566548351577034631794593807850412893956660799047568476365928010979258064807056768913512194641839977288375646755547197242243606177004949645145598275736901307728225652735338080987245419155905015562130651613271931156260042817252219733517992876886493074457856809991912923098955868693749305918619780688077232422262212199813197254124035329002972112355193939655093406429673210531416569683048805382031016226927287978064622286796064458187740599590942555009810797358184335628093657197914826606251230575471469337472538859409973647267967901998733014683980653629227360460725619000250077506396612029549282047398544884811320422376600363271369848885398833994798212153142718080879391342043814681913308727260269945178333213160522488090691093827758451080383905037188219738038118057286396090120171448229578523508724511228529241550610224889798308239593084216215177381951453432665410928153200408301214044800793671037423732284270107974918316239706466079200417413983079621308450699963305217400024709744765109351603712999410830910153702635123236252296875147783953785767647833380336234267202450921316747765219550847549421756249704684871195079446202915705504050132163999812798190098149151552336033917391404979833820065580142061602018015637806860933686721297996345835138359577243268438200516437424374954643543162642353052123161889197533974006998529866889169136631884655379395308583678439922833912706319443092727150853593940454178112755736871088639441595935486531543000824938242712143253776633628727436694296924191404126702663917592422791744290490713515393509188978953089103506616317337885562720867402794287435408948667280504787556604095688023325698584963168575590270420904741157134801511717677257807651373903985442406836178979089577178999148028478945606096173760349182356746352828677949821867386078506080741685739050622544061474307856651245924029341397809143345670341368673493540612367987838396606918851043352428344806755721781551239026933876876486665134698788076493788533421745693812026986211186191386691966689763184415205438952948750228452796035460336940291524819884475884779691186826362204533721513262340696438478442203531601760318422581517602529397933514848453330168337613768474533189060616468429410769806444948103771128399959952891064767590578124589552288913251952204386839508036473839671033551416988868417003472481950724563683563535261347190166623291028413136850836648806140543612621286018982795783150284227662667671809146729795914992687887132304963210888349429573250749974277469638492418741961678069977929653638612559822300557253801186029872436120854585869223090032917277839986829279104922752955931587228294669701345925433840448042356535189513308768187182645267797601628902095216082696902321275990985828517404688374220237656836176935972956426244789361317730323080969674190439331747374039064916004710729582254852290984925710015652446112626839275913272298054838013695053693760901251926854766848726521925380091963773556299100207208583613935048194567793611945480218218690997024794133187695413075866145429065546750876916552861065314801457431854164157231787534869446171483975365569823607518209823622240270207608519233742379176507272304923104777176376735611071454281008685078422783424252804954963321195025615459659142550482014379847101155707169824782242675486347005201577199453896630081592441670403114933223327712159918494159001927750970742713940325547768210576354111823027298271742709114823201640604730724408190351675801337030933333958133130191165822494798003134510192850655145475220121438335861498969538066619896210722170488280839269234915451128740456813608419732568515614689153236102696402129300287710239781987061426437839047958432447561319760471651126657366064125406821122443255884469612700527048992150839165177364251588766161255127748689719113043666017886445616716718101182525431327345271258054595169031085061145938559333847463356551827690017526172196904576010273241302758707451833618322253671466250529491294642392349064227361062194860250484042553876822942729423339221193701333485516124122466115903375776463383013330353376737329823211799574055585024802069921468847424430319908811881387661324756468816424255674075389388267402455058981532892413680027849081993701508509703818663011353203204543017418483549662618633501081242460428777480484223222107526252974837188708606169983331728445338299554777704084973433403250912101029322082467266168108381649648089330273054715541404797479287883361844784441351293864728147683643566506717081323477709151608421478948079747905088183923889427626373332856074714627784870884540933092704522686559295056957915236158037708220349125686343196250463010336391183208016295028069735906305921105691981951106644038275357334249494818564856826876833785728872036361444074695563736044781957126863044912893233581350605251942862146171001736345106506896902375586441871341660168460425880525921541389261640442101254349803002410236327347031379279350066794851088875824595055037860731105226072305017677317167177075768497846399713436869839884321771667235667696485011343043277059851578138424979828184646565468891907240311319238083136972769398765111188190164241054091206785612653500841518850390105873951993450208416200171031578958097804417808629177916459180836489673103236682767707054806593832241429964259399918139355822204493848084744597325161264382220932728366075265981058058391059393745913025697516731805480663244846649259726440825025840688219237440632521276638411438136590868720572357503727883559405892137029166681136774492700499126432410053436546482656009826280998223161551547424977229167512322418858176167792882142854666149709919332427146301377180151146083540428955516711502595564272259090924985122610212641697050836199507769715450504311925537287750826368883195156227847851561948194080079105191259558787192096324087359399307191935171600103042863664592896114014770647839535370700769906948968561185335157713354896612524651737900092925196679584997045826358249199593684179820285509686150689471580309774826068793283449287372145543164545764394434413677983250329903133511077941031849108234524948503232596816708588835969341829504283348895151178759979972817012743081349266270219592575178920731262033687453400612867642704242698041316789004101690091921139563007168106108443793803650356437146326103632128484539884694759745110773749280621438018020054467437896956750841417515854906091498304969281108691884570302212380451609468470200727646072491722811628243197948995172881224765909084144967930049798472995624378603890564385893634558234776196356709760837276710986747322804287036602905734001218399643854811806636312286036065821942633919856050153840475449713552335242052583696654116292363084827110318369773270022524684392663705583095980403048572134482893872540133675425872933708193240351521312768531167471128059207643101792872913048488961533867153150818554453051948424491518760444762777772717133939766594458116609761044772771790093780235255392390216653978179184556858129776303948845815163509330249547059337050388132706684709101800990546836328852495275522755569779656232006967874631144561431590651096099911780241626742633030778468742866027760072861129718377123797929233641127528874212286944991653468029318672257250246228593011505792090857185848537364900249029690504147244796155298052727086580228996001444769190946246216636386226723006616469042442095635633126876216545487028026460429397830754103784237469583369295605982382857618209596492924593604729746537197934110102314266180343573036527540274430495727538402238831124018805660763358283782462584673158980103322758120413251151312912375980162299378925357170815295624168804107121906800999176847138615438392132348467201850482820140664131584818325563064011127755420386263911251981345635569074314964796442339283412710579562143745483005097135126376763802225288728096791610139631204502775516186722153979378194542295181413412202018720560346468762674914976853882687805058667236027061039311160577701565290662739492537605209078449704557825349134165383391693514113704156880062985128287737797408336888400603491444646429625164203939221382820397746050912999444966762019289954461098967458774810803115446389875160187563965472891535579880117543383209452454620325685849246373618677909030856029831655943614848109350059090401797841315754225301533533700871312869933791963712525194433972435476030502344483961945840645885606021891160946005965662552883207208123175453335770990146635361799915110187242075576476339316551400693090359036062689587029513241729072784151626719711577306882577149798911573093347382718635651673589907471181099281203085390029939206316051524114117546783584707518652400379228905515223384449139226114108153693378330977462625455133936785366990684418095921006797549485944058904866012617246121230121500817638553241010846410076552425338014939258316742003136142124118010797696710840520395177122586649206488578654197215340980913251785069664285039199020442306323925081102530682418543879102698007927738028611370982785224167433819022407999710010280930592702451739154368390077849580455503004798006794895615063559464803247214020131154976241118847313124835827328033377821346663588247857874457229198903061777707155069016328295469222524690025407164583438009729605897051794939404452700775044702845038136903291826821795113086478478667031608289969705097665125876173965828690863653583519450495552195185693167586695266521641612188118067922014642550508100987494891598810785145450661267851780130443676107096494599809305676589103081372651149681710571018370552852015188368858144780275451547740065411917422523864348096442792442371839207957566655629231802037677225423959389679068552706845471024408083227789737463131202706363418637366521291997143582841453035804479389029116327828386299225209117372819960598126889342360257896906803071613019993546219824668357793330828850166382416942798414170239458309751443878351574032444513648128660049415385378279212695026728039112246555954894541644806772249560579221076888870803558754955615010683433336669598372893030544198319025963484245432984186927447015464129075674876800699098348208710659733982215770865245952892834250398031843809750774209137973517283235351324497872307178379055984977563977943396504999357153924091975779366421487577173496511631352345612881147842143366521428881834118851564887819472976240958323432437188865016366526845462180969261505268373098506755464009211497265420074144073073738511789148058154841546962029013905001914861822118688397534854723725936184517758316768706650920250844370172802967766334149190819883988455924215942385078953922354406171785348988238352677935163186138502848324684077020034337023181021150654324608383206143095065965669936252415289153346852158767376909147470401054942590407369460013922493611862639384390605167109880733237776174983073848911525521720784062816423003420659767970172785811893179957707998549809161115195320501721319526787002115854538128607262420162500406804492129003228303508487164178397450947230709957409424051051039446644107433405949303578266833824897366134627225127537480077540283706573374175142047702019078929296251607173831257462825073278205399305825949610640415094634317467000981106349906807351066979749895975623357420952473721108220770185004142054221393730314972292273722280216824038388905575712507754414686200300879951445800113783818554646454691860636875823509912424576304963499687964590300615431199586055413117201385060211275885829573504463520127041264577581624894629494460544205573242811208403659805996741856934583593745923855707541408474625110387453077681425546250035849568631234378121150028338392020622945248567903631016442368543087899850387875298087301144853687263995205659563158867581188350482964887318583681212560321109779682741099923483099031179973919331560380224273847709785867785772180749614669585259273506028095053418074079062050845719422807017653761617465845662712573386825962695736254137187809572027954017197672799804628746718375548524857664669648734073846241399733173571709067506172198690381544904520423630229867140229035749097163069590150173889788787887516757508639346086057264928269047655884990528894573104481881442701152264581829132545517962804637565470523707073032135133548068076272587370436227161452534488064485239146636967411354109660737829604243794286230109196307832494560537581884001573335106164486190959978240848665763961432908896076169357472774814973018714607845244140471907066004399760457589907055441923895590412846701873339401100644345075585238260123107495448147867707658279307699823165671397688957663206112575431650280935963631829222392812014148086118253706118491757355564476221331732592584395371815972197418691165155105638296751734152404772242865016745227776111797246137111691109581089633110699865414775146113793093374902883648561745112154391415691454126466590201477715935247677607995796128565493962563111294079068826507211737139441425021465935894747994039343975859106826699991387127921469202123120521215399830963116866144542115454210567116668917145868907329287569668259501838346111135839206952339424846430548580833348153567875253907119626009659834693177152068172503537848500428226338754557818907795941225267212057683679089680140845056178646143377938036270275797707707715052276365433306232492863275663585958787250578363759004225426384537703388521456546409139358773438676237516196703381508839781580530594216368179054804353114284748428171303375030845948479908799934474838504994298334790628769368311491635160173956546484537759174536671329742259764219082527585664415873539701707595380141653090795546393912868429166529150017483900998088131855063996489453579928161695434158609025555371262665631226924508408284438493393384639583215519191121468517850791696564322054390227936098106026023994354475722745316709071819060676994709591490938205524834836262789379825770103485007556196143610855388038299223396988687383384198506083145532127737868824703235563962270558829458834086375856496666293668392053285186293286653665226514361310897540807837490222255042674989935533626585545740377780208088025026504692297245601903445059240860957050492425738584366610114998492735221250874291106691296339098879057042314891907353797664783638502628075030922317505931251419129960342550046899461013713374268916762046445243862059958072511325266419190420171169339177874605656309853714065927047614416837647422296637663092229023105555807604172090114354827399264825849530226201044571217361559081042357757949510471780561106033456708265380239856899317339544955494685483084214763037613101224789450757318284656287263893193751412083712241408656474611388436513554725272256895112671995712401264266829649598243177966196626890146677888626133347477470934825985296871614689369906998226676132583674287802962504387671856539807426932906401865492924283057660531422514390163884131003847815898456646090298029446276317720550358703474599209949345128639134881960112066156261165913669108489111206574166682233759494074754975615718751609838085665068930083954312392346173183287843901089650816896409193030687641760070855598771790298360113720530639310247696299265144000675759016242662616945579610655002868415408871993030208722251030573025831477227867586724464716478889753474486360469864831632880090140476801999429795900769490498540369529458998258466013472018703494133785486200604113377549246758250470628641156025586699257106359822604870489478938773955016582350476388256015290941790508905430335134068028434249373990103272808212351309997343725567859779100278041862550138937142946214916604227778981026454127116969870242613375851496171957499836543822744221808044355114599027266598173925720887963199127705703298274958536022820500846340241221563857295979441041264564140794400721891831943370666017478547664658226087168555638317260205779753574327620089808871013220180661581817374802141456093563299781848567003563647650743108767955803856459926064034332929976059107017172595129332553325350491002956426141651644250592244283441763162179554277911797684705587877118701437998168449285949640068257544266812428657052196178975765718635925290008025817034525219620738033268907074927844587019937469997378771879682940411766987400219457611666710864061402723763817776708649170122278755481672386467838058082964626386633811013748164490786007508602420090227981637210520501574929432011185885951347386505385254164875188696730400613792241324759380376159209018341260061178725747711032504057746145264836639758132050099215369531541888128732567461984780498167311181610098924776730599329391365402315500987131833382276950649743108639222087680139453861999333786687488497694441718637951040564904704654767367135453443571780683501281779523562540524176020699920575503165619794414220427851602191915909105993799253067762365302877612013488526852365207308779679705582711618790951028066724378839575530967954196929719150778228291676149766108847864639349276388928079285073091560404782472489570506631102441602317070621338569035064092663728462435609345411658963048567579537741815382003728843187143866375986851570836357510888430834407068507435199348827885844156825198606725737541382955996241383275934886134574862833093147221792604033718874534807640170147653017672983331560342182373485903950141828922786537444450261557506973603959802264291706940289173503866149002511568185519139966307327017874606495913816926588199231527487515488376881870800611745402833973208518094366435373829157575551132234170180024442747090822473135542124632560281453772898130328401885632249241806552587242673776773611079952706298521311819984160638068594615062593518059298729119203186668877827063062953199359809705488913524922747614603119666073214228924978227976312888851674435757977586056866529689905540212578769501713925292989944680560379228940659936762457723968563683923216608585783667975645582283330170602940267703944145956296067785829939308856555397327273787900625961006212187766285172786320603975203313808760070886131934817458523611875645151974715224915953151085027845118651545209995382201342021234733723188918552574495427107323133594922720630947853638129100293328802349759750356426621963617377721258972239824918991636731481415143061575108133202351814781094547845467658772655169995299039411734968151568815714638763692339330072703672712933882468878223141078539614008887461730142762362305669862597697822825182899107358422651579330967234558062993025166987077072337549030509061678548652187068887044231343922979731261923124249053996394275061203796914916957325882208950738218607493993514832189264782496941739517809571220978140415966665386553073360459164596486639346012583084074482640016577999955584145633150810691748339566052827673247586293704240382118435326704796882921413456636938639075063336699113033689567394438812864805207508880027134321083701488221687342801052505814867862313452639771117662057212917965435624511331107756241464502763855815575919588989146994485032568872790741770570033932282981083891168149699598946574365866971964361319073367652371163373546685811780352216129274178900681268109052998830231026812032221559237808934972966917211003020033768763313194295269235017973047572335129193563567183311014954040125637240716681511663353955858838207856642377439893144069031594357640076572215720772546628018794295216268100216317271214212234428387791289023901494278937042345566110435460171764492981486673850423056582792358555798734613026384606295249275599548061474804938568088432059212196655365614305733938953603798957875326743841709640258768881407959681857442206827763636946504821044472512362038252471874368092132988564951267874248794432591511313239080976425533300595995558342313786634728884028100901574685936257408160092509029953940060833422473129435587141114213965750477115105560195211368623595341611360978550170902059365307172290292429990175703234829525214655719110157308938470265298655073805085083813186461676005375421644241074776652478782473114558397207764908859905139586391192964919554355287936108415156330290328130208436210986042477278430553841599464845063948683348460924692637638262212412686102197058534310339413447447529404683798758664464806092147772979274153965633490540751713669329398286946046439640560640159831366639632924349161126421809222261659979981173967135125317313243668071901886917200460710832522111483548403695112957394740615682123759032248580969288601986934932186006213898303882882646656067664010799265699812358240760081986048735334367513052796930356421190111317549896478036970639441735926070673734511933973106198753090607619877378886058896385872064273749420790351201845591024209750984065547790373017197842538153342839195521283170087522954001620171074301390854429453738589935860376195215051156724985177168453450947808223404025958453549247157543848244436346576098715883203909747541910227093344593384910122882066605035893940009716334535637409873673366074264074192754813884396748398571298899450526729957058963209190186549558051759811216274811946536455118608521538741057609894209827110710376790863945012098379425185497451748053266241185963187767010242113710963510608097312504852739947844211892282684355517131156156289867582879620366209555405860242966578378533718232265340151424175251581965462188096625647751460410800541695259944531489134330835561708353716713176993006243786446795052679225671821665119206294110642568930942753283202646773375615956173584416666785444729280812074341061973550844473428729552878589949724913094258679494835524804531432354430234282502815670424945011316881971786095011861592725399770713958136333764963013487663151985332483506953225918872639904760316214236691913052929119916726685185756463081496553519372671488241534007602161697058982250212470187379224220037484620383498764307002431349006797615626804011084965209289805447672016314788502734879187483580803182425323397557261994448764421663707057984603395714794803144126822906874905043605118166854000993937410484150975930187327893898833795079198207111970768388043898372057043605936788183410007168928592917556368923829748377339308048375469483113259403491077791350406004317034240024531398887595709178049586464649711226312042915534068735516624452993453796313674966110051564593804223169857158940583175029382078380426225720746116294090900464662951592306831562419082933308265783760335519012899988391997747257302606878797089578938295477671990678257377814054160813323807907038214608261920153129890164567394722816495426825633690916689386748101825340257171882113186951963102963640165741900017148832066490513216539220079561059483158129802329890586485308941454156133979048759243591788813021071060049759737876588637593140659338684377857881705315786010046557154832378057097429497239948733784982625994051710199508614861439629565426537470551910814916711807244893145063756004484775365509581061024822357116909216732069620461345894417884762237656644442328551900914362188368151190506032537381570241700203218007468875792432989869915949537949703772416067347722779633742186848005035213145573916458796926537440857905624602109604869388504339219582522419727572629275356436428701204369952779609624002682402264313244542219609553116958568566164869120012732034018627124725856929981079048380972542693059756832857821816197829471393436831444147644916103964972043673438600990462728391985465337930736992106751453481780135665831277814345440469432751143364180423314410128707000849202914698293640758757898691728693299636263424059176891769683236914368363863669445878334097320516901117781799701337507057357084118532079795420202307926527652223827817600337179280076967971877845394164939334210997474489159776614523500478084086358121448458455541966753878375054025632370297582313113451383138931277504801182725361844410841990432044901505534200498567277618365356145919627551522593043729541391250515517564898655864839273761836424885312759648303584807380865880939590150699353697942767550766339428801999630643611004732555053867983236962077798251743303651576682023107959646561245877052825545047513501461610560636301228399983534645178722330315225749752302635880886886295958606376415584363996499258574474219189772101225725727059946836299202904214029200484619830193457865052561290229168883273729478447779509432782156839311193280352243248555345360958561201828058411122839121203652154411237417344881447621988107739286062863174526262140044627270846902882725397420706172424981204259787450519903928249860010847404625190127142017500683161013270204437209280564126476394424164761283126072032703629802768410261628976145177908086107549252484166498114057638901079241593342726708336927450861076689529393634125520427859593035840456660860369414553667600058342929468741898397361460216288062937154812497634158578338607944609936200867106292857042958636916218210630172635732628206258133890683547438760089177950693178276431666214108639909488558266445806026840260894952246179695406497664726295876820533178216521408697959530385251846524066296424913600538218256791714383319725709795216395030386881552686194643888065560236493379645738730874050892616371300927101095929412479041306999018638305782786514572492531056874781393019158719779049565288148128309054695082664311886774364955161386370509842821355813439683207218411034099007858244540896078770271077669010929338381987450520677143316141582621193821885777873414587865002757509516929208983331828924860160213538583710703035823290807197751753855351098145214830181327871293269185542152059894816636403282865358559646231956724253282431580397609009246728058942466804075041768654810186810519757652944577884636844941838813450648628643497530064307520275144241476612761095074862082308481822384522157294007409935463379679589870312687646794656221978047938546979573423068059555728938612463672830056854184536560539477173706262548026421672601248435326241363745778335474414334829902430394970512349190895186641292839956129645718746242475940935662549690996376336816778228618355235247406326660667465882162370154249463584660962099534348442612720101751413422775678126277061825521947647014642617658554974989874807163190381814078487641701588652372878075987755388126144331420313664385053773767886045674541965408446118009412353714704858524393526583783752895030372677535990082873674003391085904719700009699414119470079421700720021350710450229534572518538935681738312097931115797047255399357106242021308211062672168864582146812885649755614187260073453845708256783671089662653771353320157068951037882979874183051257516695530840114426671294662939896200809736429156843675279034400670213333131871387852203429138234783351151097258153748923703386338449511781398741798533164714452003039402190887004776298199688591885637222117671345413940595531397948384313774249897395290611428784885092358332772399648420537935500677040144180653079934606058208879684142804961340803138325451225370553836670378961699313025623585141520611273799849243832613863365820896955509442252205041927813269840043102445518057335025873823608846237071680399406425494465417848575833895175248057604499733881360529080264056873223478814138666525674852770655149996322278805909999250324473176710538467737939854764841034786295320866690588376550203164386675661306197759325385541204451542081852466534823574174920259888733123655647596413441448698983731791237083409801836179224702984560828993793317911850594503941732730898518567384060422985759732396815101491410630135362747221739360045589169946136466686645337323028168009818905849516854055633672984702481864157101122170014138078561081068725504233608476561912915661764529394135667517879704062867169955247160772566927780481835130523068459112332329087896655020334670737746160314815236958727938459073725096589679583986187074485679042485102477829933903461178946398595929724201176559501290368060065263559972582268331906148350818225365282654228523011072165816965491205741963446049463491075998758120051533412748044806344802910771811644800413363886497362724227199751006725369141517686582055308875520678541702947005673196779736749620452173965935439476231833529313180772712816743042632094893490300792689891115981522445503582980275459332148546628120633158803378493503752276453655928392550510966586701408008304910008713787338787012324845396295181383884570387062762030427105205316994993571393833879017182468064929027395592978766481502753325617618091463410032803936614226874246669070305337245063668242477575459210087353586525137420377405617039690287387055982234889779413214986133563644392599638842971468890606824550295099719324171673148432470896374236871656294659426626862443950193959904133602872325178788689206163728980423706082768048560125606352789779697791419370702471362336966238511611926593905227918284919224356008545012042972388610100669132743623471616709957125181319087864417087629307447261336000822900799369841776922537918439618119375415604763445186075390381422426300180222897583363656631987796554586754069119268365147607682759202457208692804261862758544090802227386922759243071477145734707326604256664024552366356911220801031096431133566020846580949188082045832538459189358596672721748879130409364117384816595964526219713757683529049193662172460917804858232198792561623500098446086501835200678971810429463657735397989788934940113380863902768311214231954616468663334782786079683470008731185022760369065205222163331292147819232724063308689363933339328471118310752218578820825566694093914863082335503441807164308462007022906457109887391569136017922579467215779312943712101523534007920445006290728722029550533951455783740464693843047898999674513971122715294297423262317201133219598379188062209279078088280452712847583045506552001266554213407203718321942843827718136766950049425635005834008271677609852603630193621406133106724197769289755975586685049243860505908144771440920990995497845825297558977992535255474309469156917554092701759002774976546691370230527010717677352263390923923515119788368527864606785317392895076282987571782014780687487937132538401519419625425626741606581197648566578871685323458591566353150720744422977146459456228154131715883197692990875252539945098001069283811156733394086659458373135776113011547884659489519364481051952045857847596606643349934519894244010952896439811794154219703614418874092090944825841292236063173265384932769150316980979479147255988417352482292453802674364430438206226966862073842835954608527757814543739238394938933055451396179943395059921045829950079758203384665826760158607043506748667164922746921812416301538432620614666192146026741836889315066046742209437983920824177897409318928981296945516186087247284801220319102428465978239412282742850749714618782254524569837970165311346994668641334894461500982920805505113136169956295140335769836766089872784081763145611912551886867707668195446105330828900577716895792955855323795457823845238593804523681252706754293171809864283481275092923268626749313113147658024007855088466302458841890070431344096558587712070880951850174709990206053867641513147629145672260441347465785868291523901852509777977927765350873888581850359601653762019346097079629682740423848765768145100936308286591229766741522505981983762512028806482687803824893602343857124714555427589650245175876500611794135157421093666044866155516199405148840548244376970903432344095553938699721189776739833529533543990286527485529335122385168718401436748514272723895782521032004593163442209712385183194177982607555774547300233131209331933279134225058649892026703272887210680185518164967530924700585362664671204618974465920539815952759166562522620861601546975703127226232488084309969736511233319250411576341699225858405139490653046889534595215954121944854515022798020623129234842589220499527783687909268804469134277481647790143324656319162373238144859697685745876221302433380225269937998187615766859734655030122112169852093107899226252314250748153232998367820137237789517610532115795703688268926828141161448887135562666476888947273160760339789379352296393631141999195748377893864707875127031236069909466137350711102995810434615426091558752518120210853745668020854708924795295192610820065472413521518161586761396953872791712656467450288061035856406471736497751667996192690335614509797263148149816641402757676548027270285867143223795769105129186456506469231831851470641344142805199191537290701655717552819571846374430433850832045399788200116087234165013094312888737057322519602448069072391443896644622579676602499432046314455361285381183758177454937789814354885968473651454754551466843895757099805681102985499220688005689819159783367508585454703952719496872301612720905808235633657001172160978740190779061609465217515040583034585123067017532050598116457768536829255424051045846279554068059743780085137062180235659237451867523898886713541750238052200449476937893043771126394577975622373738183860831304902249437617905405077808966956514073654730860740314030413786560656247393484507297724794070703874967136297892120282968273233090978750285060041354640216404192183403442980463884183788269611784270589435472769051278288269574177031538300434382787122686476547538148825138098435649139091689521552818798499990270946735941113453459786757394413531205262376536842344853594923497585658568055731112088722418513334106070279369387125326787854568308033942635660881973408592585753586839244103630227555425405252243926261925109998707267610197933519795181904576663051944824621487062323394524073335880129817843318867910649322509536920208666464134469292479481192551976192546935861635935147511468384940393107000344905804131307994071690793345864804448701849077208662257840464456816636683940046325079123297964542858413158984521132367000652397268431841835068296994033898731971746488265379233878344250404489137690127507300794515360785167458332928790794057957636021223884373201360678133322925869104026963770848295749176433957195951933609032939673805549233422520846284150377644151834146575783130897455826555316813134409857214414237610271524760341246208257661224767749950701066974376389074878757980941425415317584955737858166951625768181510178639009239674495826505553308592009483365363506891253839213781395362475721230860434056262341016573861904395543784229634568361403538554459764624923949590822349205639009156321864317156311477562796292564867325582998624227582336025267286932330684645149892412521125768105296968842822690951045865720766149612428311173716986518382058252828865427523662911705565783534735094827043079878089205065197506076728147868952508890447958184769000861632393386543403478002405028155010894737367900997548439631943257349308147106944713178922531787200225214718711398101118033550286659506452306434716195923611136950625784129977463172424418834380103606101086100573062306156912657400424258146693262404589395889020722754122875245756736846629935140597999680269857495584292746771858911115299497593023738754746283006444764851613572564882153304555735374611818204841230115053948856241895200991814892002483824398698880168303671296646317114604811154147395159627048852917246767064885166120281584991817120465822443861027732385384672473729494163579955348627794817158076700476662568374280496961558798367390375776275987811872784635541682789664142170795195801593598561035729068935433237327932033294537699881468970443123240883741567170329408600953702101144150036784218579236966790973806444731248714579488518966628126307351303964816328695249947076930268422979905046014335522596710948908671735849937798116985340770346644280070366693119410045501285535569640656860890003518553304496068126423697534865783738696666061372834005332377988805484127906748947002870012074117710598354665593531197521972491829389977913607146502209768464795385932294583988008358772234448400254740932626825651543159402801761042324769687022179899424031496272653731527938975690813608028236708328595873099079835954772855048173368885513392367755493707704907150388465443185482251470041092380513011531418280763928485751845439486362354398738983576059491598336479673594297875470989281613988642577846220189447238680860287078225619491070509967574030288775035290531280052921183584169497710138433711570999524877734787458365065496528988676784326380907795666634990909289869300040707229587471139852750528821886026444073434435542538830163121841232133908814730800661189614073166787513242263225040695881190133026292722364373764228387587158330215044473132311036460180752414845598555180667018508303376404424743643784089762263237320318135457047185547079862672483158745085946003990957816307708237146838154011516617617717134565234702525021026433513226945353638548724706524559430876393599962794456480529269437745546327512783838955906512893693704821125338881379964229858138305679841599789592427622117946003866948391968366307857543855198348282331599450564934660408106417968030417548664901146699595155159763959237572401616411996427148138662054336426991780035299270324048394900377502093892206541781243402988642321031411111167156836581783299619249653013365736962687827457396440939143183134927489656376847147784963998825880445372431194924919542012657183085949416644495201733724054767829881290502656519348818962565998655660521285297018889429303943661865398198245908696913316358569682939969291853639222936314291337136891499645450272185142615953346972838072190031049267508788096887468187856086720779781813426208376148458692792294526258587858176869542931501043708149543254269248194518840103490927399576083039363209917218748242521475454879997011199970428068418590779528621888987014234846126480120665826089255987246991096635742549536268854551591650742372153190148023877929558469435215737472657256006854535748601482295937148358205779427100887137441603215875196049512122307350095685567202806235392190852279717136477195608762898393943999981914840387413273055493710589132260685852661905451418582299437864001145427680996862702688593141475302574125782757992110433286485002306328886583712839028038920113278959866708951191450201047320834276518798267756148808614319613710160001129764408210507494582694504610043446602469476814347704536899168709373358828834658471807948585469815276767822060462118360916466903297523653999601090440478902371778305553255259406511948336757866611369263456746537956488284346204022316392352610186672162248108999959861136091480397672839800654982093442145949636041333981127806586275853834528062815526155896928069849710156569781483062868741881074470772599678947364546488858092754116458298518036298243469002958390558187810250852447028816370944116638447543808009906754151383671154449777550515237279000632378159541391263955298663220555412558736706531550671821147141159916407404502012029801745742589815197105793603885763062055318177388205331894610336703638032023510075929378939941031751596344079027541043645828382961809052724349734843792781785531859041689219411058684169321824827322033577052060820717962070092575354217961355579564451631031414664198269751367059264083558958392348387360454484114805891302215922421396234925991176303196391583985172587449236326347229040326683944587881957809646446572438186403442470655579525487204614033813959702866914620847351464500617322790357517532149026523239753618463473488219363341260522520855468589270901576276326069476918428313900208641292444257772681465524806602875500801212853973655679967657995132620770883160459490195174017849534931608183526778253223011084172660701382692340779426994557130871805508529122082669386994294847107673898670669888728770492403699306528156188954943133714187252892977166236983990426901395626155039338723677065760197103552180906179482376778420598225162155363986613230889318292119261600673843426422498324309952870183112528584690011854153834139633367438541791985772679569989789427832612108845423143920535242462772103361528697564825252866602490885270181565565226327169363315142440429717662346511813935323412153932042317488231684843791997899467469558648308587000093782131510477961543960257040788909614852823960870254052327232068838235985338800224218918509369703961415788823248951168196079279498382345520765708990318650785035983684420552199478797382527193711419666393367019898684198854270938927942969711821607885917492944603794066505504435662599965132412812767545654849577408998601628912226001978928713367432287824537626893352804021647593051386805182537367915195252862783357374121333227082438924328511908795738402577249089352886851759923551656470346753067845639625192648115337192938792982029495310400607940767558133855372073657807779861000412475452772812730839398937501984649571428900815646148687313630785735661749785779424797664072629379354787792162319632147167559714119406800253610738976095474223480207102365619213649610639871932988970205481064496702771938067162723102849487435144696735162705073391854870152219460205371023977372513103028187914460675590136389308772439970593117837046361023716770585219250147780563069723416963855268758636466285412145062602974237961515046835072124352171504572124045993417106368779486758629232645364216132848176072927437543695040449001058315803454654813641557271484131772553862904212223355380627727228511230978287572219872428706714594568035276934877602461549019339426061077270618444224206078043310963296024129210629045859392075816255799624400204915398425982275980978030400919716924029327469084784322131352065582043182946906297782292651035756885149662944880076427279508761750357545010101414192341828535549212149911479169271421220637710357597310053526748561492375288313120625807262020523054789734560226365841910825069474515861646851844927491566680957575117802847348917974704168196366227471790047383721941092902705609634611395071570349894354805455027383793516029710056416213747170182995827431891975266845585581794097815460073183013975465485177683155002444435171767623819432754452793581051808291233456511702563758851735301837519156913451864619688566457536007495244304487238056612127837907656482237048082141768234520188492801893441775762841366251223937879069511917448430803383389882108818249988096204498119072903373272222558320699942084690595611722109255249248731746348247717971959733316634528175494436437068185079245344858023214684691250367258335743044992577687764304673154917904476962165686481047332042878324020383394726217238264492177011839277575372775661208696916042005499619998266480005622002361353485468507295062405951696116997297431994060366341852845339989562221494457178131961689087647191742465702738777865382778851476418950612380175598667101617625306862438095934891562866610668254210117224974352256799926598851406839131781812812359365052704684823889380045888584416799678000115973810642856782988349372998185276100264591393862323571388949819818982698990287976453125587586392921642812371533875914204888632757934668847879870528090469050638589076290792539141308977077849231038971619213904283421212692658620171146272572286703057374025830108388324819079246469897959466225400115765857081437609766938265115005867310791599169619391748683914756809741432425175064247463058369514595271365360288288418251974426874919627658972936241509193063932972398089687190105828065658964845733713917595269282847501923548694405414713116780640110556368914570342631500245538563391617184236064041989113943184691392401393069121684991665112375113127239507660679271288755935557194506682282236389082734253041225457807775849543832143136529106691362825700993863560054280101156190051658986722898609213428085243733670084079072388408162883547172894820293350458328176796948038860874123731600094776744543378280714637242000782988417813135621962962936033122012856967385114753858767472877675658468624723931242664975422095339171142372607477607542266038338493735196550470034206048069937347034000342487495626009731451012018392225545713334322357656814942804174802220811265722058509685346167830851225755842575258621002056447726515095244168647591778131168167698837969839712969899744053548144486459964287356919289310247783707575847389302621103520505500749168940765967963331383508843062158450452375026078662901034112643746499994554171059585389678241961298297699651514799585298120599419190323695994646288408247017390634502120997836740532687139741327583975141470751261941188805505540275808036006296423819699273859853593738565570024631465186597852983010830020374403019852404230225660204350493516506399420423343769891497721287846905557150007146799973393125080984929004043200109726262317181809742271932752390539323092220086068657406532848028244267400094870047823533778154284463283490121502799682816509638251010997292381532800242941461464968009523594578374347418233863079100248355897093724065960283199546941060131346092806449559275944884446526232850569856252760221943932584453566437169015371507423952502758032844374691246972416604124366980689818919809190701010831010717174326556488598125119979528785174222964426067136043113405875049506707045773401394397314924043793325194708171733215395220969754790410818425337396544603870387359178837664781433158647121981438245322753648711995425846943021045964510754485650465913993071104253453638256721422739203303442829078061988803935087744834482264633197663952986846029382043240728883148139924694164707104965405024228029638059058631605700549744459218130070861184683180177912162635043502294056523822402187356078583160418500082760942774852290921214701179521441863564338786243780777843782419856554412933257654251624019683889811657980611998547755165521443235465944299921936234875971023161426820741546041514945208328710000400740046983947684203163448331455299671515148467056665508184027939667520671250895513115349831279157958200654768479421449781583618104073619984032318271399007233627459209890035966353352098747417290247879120062572622093116653924267190319369249519173343790625360629603498372816335382441998391899719909904416259103348658293474246178838763311334451983980605090083834905023855629436342606319467314425053480116403331651850765923954322888738414288946133849255938350307800814511463705607726941265071095530026534676829185700549884220751596147796105205738377877578942863517550381901529319788366019287280912883115899126558070395884254654153805043050441565296589917298818795176993650993357378754179971440882091095922197098189076358607524326177800111530147907341443101326707286185485408957246203060961634881790165210703056002745341449440760440440424135494642134647669079511855714608992640814046432841716262439082272769674493118869005657682476554800419458787076484791808321910660752506834159383075770120528117462670281409739371393260050536502357903032454483721710790641350173278228173047345849946424589597810906434424278931817578968779685402437892508298324237192973997210204924893619076140773736578412082795095426678722006691931567837008712183020042093987090508777705119950944856926805718344225920057158672553712749825325571922571882960164018591695107512692692102386906022276999222557022125162345512887738030702217429548178899093257599213062414565102598549870614252291372625567195754208617825641330570011201966749646860752253865846718914232029177921513363743638714851221362438530927155940005084781662905083631794737766855749563627149311247318061160489316405430912612680762849318460120080230934525794226558253391295483515453196552884991712794663995968442473278098762046559040780563689980264672794662509221371057147440022089117617790917269252247283401927808196605061948761174180106590192593738909573584190912160232163729146700608276321077630458905432692900649009213626592742453565609263274467418466136878503459248510710639105083454973344085575029836482542032816671528933622795791688293455771565797850328254127013104314360345662014320302295165154063567012579108722873590586598215945771874403232332215599027390571475125187911255136369025882493049589705854053275679662706500470993527968837211847381331772274059130085344227054378682115787094088189483259900711784567361233252264608658981949352245073140960797616980673234725933220721380861990790056954267604333254082434123468153651326673663642835955769490208185422155444878310005437702656812645365235420100230197597528570153781114532841499310111106852514608826078072505704591052440035560111918671768880240141073173377463549519584255403660143124210539644197722479320931567492473383076437746325361757317170801737772103539814147188403741205417647501499033479534319092578386454580870220251457739258190008723236208862931147131146409986623911087309566205382003835050512553300414048998825485076552050098482715010772186650863514994700226742317182458241799401412242895797954655482880476582730025633460199452029456054068284566710146667514842635948385261860699572049655266718395730142182267924527114474429551088101079355634494884425200569992798805041754959732549760125919777028762086546633058744456737167249589735137537710909635728764387933557881240600786096516486244584425377788873911134425034106280629064292679099263983277164399523848204971910792766161221907904242267904715187808646044237331733613541354238915787012876981697233550330413267652890193609030662023877155752870878072887618545498654916999692182281670323175557315434190916366371031663030011974140794482223630730775047702532146535811416321890053120413535425949688924102753363837325489418616770541798863180463113780901477879720013597373979741973937651953195340687826235515741307284230936181353639415605218533577779958448559141223899157406634061145169270210998284476222241258157614417777681480336182631102823462583148008267898904177446373452366194955750430853855709125711938689725058989399952533409347072261169746090380592120795515361844587050287702836775731978331498703350446003326633936079543454274405386924387572840781902345730276936176557187536195882883384617656775532797757662475497683953921184608703405901312207410187705899549079900176763532715447394508764256927805872768596985123570677636874932326110343636346894183055271041794943359363942455007989750409655117538053052925483687789943824287728134454449502657631829194094905263188582976464829192152676443056257273238290492503316640834388132955402532776616274553282134690004096052452948773110169479890293563974624685407629205197519719908697014317141223921626189588764790281420468204158735903736796612200359723882754463616707849264485279183726536978603862143166669846439837728831082356845476689876885049675950966800803908111727103730290746859704424515805420381649626552376886248983297310694401362496220140804398815573511228824628842364345041624866728185466395683845983309433953535938108058357039174210156727467637995394840110691105253711984005992722453342843345998170979236440577523686160055429411635330384167912899896557841077782949789373438098881305617838072323317536109336951624538196208634123507300804465655098254143104486697758891846847188297632981027262413848286176821602224354638040867521714448663370513864720081449252832472007131456067030912819408187817678310458962489301226099400894809338972197809591349448122793938369118448935405731996399216480894105557128656838902832577643905116941550586771704445278777619814947490798458745774205222115592604332132464727115445420095730758214478977725195907641297731837708815765685437963813727101970592239469662983944423672648655941321482603028126092723994709013923923889645970419687469201629941159979536854507655892449374530970642645068865641765922991783102149007231391604601358751547304621119389289280590472853275250908123868967321941628880126766407621108060203529871463107708682445139256919211583732869018753039332452000056973940421324410584356477035269480333646979920152109816173521854248540521511667305773736068501472787618750555113628930947771051936294390730970122346118140807038719766629243495492020034823695243612986698727893767672849995781745530928304875676561029299287531163702305233686347457492540973715740252149527068232578921174608063481619782545894366934751484299987550831935058069041860521260061071977427241804448434075174358262668351812694753957431804845471892981796987783556638301637715912065784512472208596917451023540695412673996167367439678173897175318974138734158155268854559372854610108579581189595717330086568970588790239345746134827745184526672144649617199288563863718056732367161982983610672909107890141544562694265478244485505280809146291722141533433495899519802160699967898293604728305191281474124737730859323089830971578431663621081239823292346121046329806721845822510965719019711492374951342248683204659095270024450356959135058165932544999511199666105823843434528067052350978102506176320697813966292214170060547531892175695970635032667840793534438939737226311170218857954797217098347610813566698233553602265106809637882198100380831542801148896382488431642176729848816765200168122633462836587405679738819088676122303594791748445333339215860251566489527343427173754064108222712517849019362941326595463036345406407555928040288580094775719924059064489424478563002716738094848075273471655922674203070888407758794008886292865966377714503163330277652289151568783732823632741195038356172308668906734121483469588400209390523103322827402404118285290607213337499093013867183411498134589854242774631408302454135681797530589813211648977568187046061495288090007799153320842757030131523358038817189260747980788955145452787453130342186914098200932286890236663476180102357459299621287098667557038461229672863258471170780170667744807313149877478534242047738066144563405985803303567561821079924846609695343394277075151090998664663410662774790616696472401392492326630504806730886929977102665780805719382550396903236613597375684087947638291498746323890048360783656923270837606875253497064775088431998262217339364110539311805055765861309608969854289928936776395730011217142018027209015467465494340084510048960182822015258437793296167375625512939776037402118120582967592232658623100909791630810622668947068220412954704767107614396246420655216667227672036904491291710506812087331944505045604945711378462153622267409547559824875127488130741624695578202721486496652589793342888377675268823661902264431677703437649047559311026418628444900587961562418044349961988795288969714706624624943696528527657133158822940022758006288813943950465449577401781521311655116544276755874159965547519476484200853402685189306198146955343880655658671425802195212745588178514522309393636691472027802425087874538292341555274148149584454735155486211008454559361995862409238133159922300583861108791218038843842234008561074990578982564838277513780228606985049582462807503186418054743793227530567457600388704652795743075060944858453812446003222458722577571887804027896358203061776039421569773002163145260640480690305995298440398590443827367498198308936194513340726160352748429276315356121628052848685742616001297355800612066826644193830743082176496716949510528296078829597159571952516118679059869807741634068806160193265526408029768506744955526867055653379968867256277020572377874317929721059262835870667998733220841988156995322534329502884249033395311495204976427232600196214623344149141899405389840472365928419147704998284626092079484302809021806611799537024546959514636593884156353837321553863996598248458850016245909043790895649516093616662627513720257767390654367416833282170468486271264198085253179219496112766855414049618449647439450124261549421204120944603099888559181149342243873457337733890518222636117397946229457019559775707624408373716005130886584527487523618800045344317121183607117662557013961170274346447807280915825275627855540597545967078400639968994219689709690600664363599400024846962588308023152437670475504458815265641011966901362357831173702535912273248219566752206832549085448759540039190225681898440556352587442473482337197579926668957219146787064749523730347182800849041197226739217933591869812210626130061715700928439788923205772333928886447157671162743995653147385104221890588436769665214955592322384415116272337516060671000010241371094148701857371053752036623455518596292107107853256391342353256706745976872187668160070774494493979493846083909231329269624404398403301614924401902724319257984100298873288185617273754518131593743389500391581509541095495722041308886842845218722821497273404264104944285782287156739978305200185114693555962151733155134281810874640995712036930193291460130639398103628572378072551704631978784998171653194144318723870118446722597737523735173229526491258285535199835551074572594414589210168738236406959858797439547918287823038527105853211858087986901341265250347443717600246099225961848650575457487293404674375104395936601603681554332565119201441211938366700283155703854889969275016172133299253675772470413477614390913845702824591355683139132800898671886303595010264383170791566833931567230176512111354077921873360312455023549823885691550764254221810174110407746877950986613574457936347000420195962023585579633246453444206768984097626085661868424162733935561107920576740407476072939646261702081125711175420129282190285896878290403195976551454707376004408241398353990644724996946532850983094493439969260760510387561415899906478378849725189312044840637336655971602603325902984239331108329569146596691660245747542081149280723274316886288885293726964410609502656438282495941210179365945806849747811392088287616685088399273167505140822319757243479132948502607362324986574443878107439094873437387570848702488883987674631313412839278714704368115096693063233586994556023688699258277078744973039824257678997805361904297664118886295993900333416135531390917787918813574446891994223228218910974761633287805438812333572345681739077397273673865224801648284477763824867975415411634221102278719636744272782569160455971259596708546910750298467982680240455131783173926964737468784421477046710567036336051842347309699969162591740413082921437185888646352402727251461933668117375451052409791529842735304839201463156506792436046943109931851255966629925605064537221154108775637516130432944001728502568099251712089036794710873208489433775198882266413175425560041588295110721799583610389926775017539667858056358411580315770698478515891830574536670482280021731211841121806634383766383846193991716397396913720895180709573300593397375693357484445182965356031092873644079453341394626904775122447485665453008202789181827836860276409902111726364304204906400798043757251734641462183149800652992694605363021799455301130283436679838901994224639413648662792055366591773631931526938958336870610205362852173920554197143631875485413690678340620593320239018936303108452847101282278305212769972143310843872838222456148688674507225099345289006458909384627702910005838619335354320350277296727719954527257744030528654512252091629652485153805509427926065320840960983181795234371176621087832939285563229710759512605012525193545637949588817381574350869223803766172559156519077589536163704719283628044425966078928835575183603794799230375988325892208474438759221547697631651573839218186636256137655770160023056328407127540692259014440079302806576234863160040091024897239598435915179578067643077202499162086666066765163921712875131629581752127702416745843644852695397220882908856841238451690704059190697639299025829115067457092309431767185684953573250311691806044843064074977255609989279850198014105474033941466088093732177356399934355627260687095028396265752238079487835374504043853819080936191221381389193607748219140725551695172874962735305862934979429039509916307669533543422638945954538527213765466228427228787937875819923103786381052886502782287199217789993393238144862835955809564949745400013881089973148925055553320613417818417491570516637762603187980618086963349156929567519402864167495848910893323411311384104633716183504791690821209011400586675004129088834408809364762238833672502332154856459522582170777862259497954717500391137386897827830403394089683640134208167190665068769919528895831840115824161834303880088065050436158077052977056877456693547091618144146859313758945762647693267449197079742370152049498156910733523613553016164512257031713000365471445284590864430614717381758497796387589204197084730622725306993758682009609121399050381585667077176299410309325121744226659478720442096837275064466294032074487349608440424815746085192139605696725381864569166114079049669803036679934755646363030763423091790215129627904538346608890270992916601889360662673807022771601431583258941615944999421414360042795689874987570579365401549931037269957175693501930035862787719253123374662370130301010780200088240177901071602291491164253188730360226562957880289306056879727670051211282979654050721064171521911527269569008306524024882707150245334567875923487572392368235783725404679625162469501090990608788028818045223345509521467383701631827687081269301744755097289487129361229419297094520830719775425138714934846829283293591001558536028787343752691085874724828756868513435225217928969105546138884887000464616456236968482571002440553908032132841970895762076576678715546424907580473807991791238969488496667470927996908390020298735273619111682950826460438189875414467258366430314096966986930624389588713508535186371205665157796552816268714756554499099118149549252987179658488847208277173768831362915058388812889643898991496561483000586436152107292175535555246638598108937900074085003448914671099724520236861924517656407423805861509114067710946135384725000179040930716756361233278475430697377769093945413281822849240735606421529620098911976168638235887116297871849264328319570966805328347399319237843021376182727577885822770032413922348619158543624198934452405369633668161050480776096733997751735340278513123956900709471309070850673322458814697257399168813544253452528886046263190124261101635206377644559639429356613397721235729456820748842863982902087451772122631650219879042906587235975794540399440884854006342156444435450437174287981163997670709604963335135768144463787304267963335412868790900158637123585178123165659663991653465991624518242225850848236013513882262161506865939599442657140562959994970600226909136307117531515196791902932080952056786140967216542942115683761162273186126810069304008086041559701084295837581723593755525324160133501316874131659192142305135833197785186597805873387263157809600750134348912079493306457244837622845589017192976172091142329657976857189567455731219469316100211574062734278364035099231663392726804461418241748353159322289061332895877647087764471850191603080875175722330495917867443621406553555041735936405651421967832568981323144003059585523874941419304369844495640015553409304833931316434527555377394959411974625743770320488041922170854075946991585261336750125724250964402591590304190720685853422602207921056432367888262063548928090376143168656793158494938635362774904067753465721791219178526587280568981396086508384763174691929442258998439602074172107870187532451809510911479820166359383395706316295374882351158445895271538431751246099199030595036001824841610247608228691137151365810936929076252809654628565953545673536700569569292600030897160348971775902600252583410479879664741045478357096154979427399501476916018448574335742903831548757027843060671849608270376970479636111331659693855001122668021580325270016997323415343589108643877280570826535263120223276562237044094370548294424717280373625279209635982540622366512979146248778859003641111788521346560307240373143045186530643728279537852613474752101734761779257227253230510953652684396066663457936079245234480243939219737823659643207958997784585441297636514844754804833147469280718165899729036574028324286729041267938655563363906066405330616432388676313413197204930308841884031504776843429063357683645517615502521543834127125622015780918565540177319635047543548806922155592424007864358865725817754864728462692642892115512619138618553596568876034315925389693827581242511661116244686570606119384878369527510858598002559711085110495404531197932032866354927659702041954675191527209372629118910661109826238770295238422751826349854463300965773399835111843774116119029275418083664452128315487686321596371030535690270490458659524630714709982299863223971060436969175662753468686463617208205425775373434697369217198300085543946669516060723196976882118576528777353458469301355831321395222752017864625850587462501684398601079129239928827756630969454213985672383264856568948660611513206272206002720791656613930653835954846795811042743088170333539469698507372938864234660558047684813173112712629791630355770994905018258465189811315882826150274554410185326247136745255699159704906748991121783102899515000785927199678714806283080123945578850838071687580819401137287248848864241882703979161993054545673094941445620538855728995653968343515240888021740360162411990651373169261661531254146285317852440186948150752891770968935858682425776899905315003714558041230729988733407860907732893609121443864055976764054177560752900680494126011110060598748566949286553831427488618724761256741437427343746913311714607522192795089794032977428083450787716005499437123988259875093404102274875075985745715798777239579315660083760077668276087931098107272003621050616446680187732313078870311627139174413334272352532276806597618699731928471462038594733011391502943067502855423275792553345261973947893261810703931945610558892093263978324368189142489997559547171402640559042795931204216333551098276982138180962957524891395710473686847039070612858818720001786860676459558729077430863431639679078984759721184243742760740341671221999324338050391150618674819589133510278593955781392469157244834501975678986094990344532954049938171292314923449061453327147960915874697231215781901949133498918296153534271312236304649805690278985318830270712754967620763927387984504318467946835505819866230877405141339039117644206692774353007612552911399450427908993139760364214512629414295840703605745375600622503974089576658321512421497107949881964479085719743504880892773893705448142361888665188663960556565330216557656046180650922031593739486017779772430596496862206660269708836602880338400881816779937745624548362700258917542179969538672423838880005791257715971448393695722824827670620084429602791665666612420996173959598277758341563608932915930511899836103916786559909554318779197079751279874502689507095779019733661321010041105833548202824907834136092605284136717939769027345348567805376064798336735448350586997009844453700761204807992370620059988665745909595333562670213231480806376152281982248451747705552757686498411685356956117788887995228704430133967479961097217257935998559205122062082075370955488781759976922114447644200672713275666525460321520616803352323429801335495039072460066362272793111835008076777333383443064687881656403293078017654210793047055152547542271970544320445966899450260822658605556757523987482646119171040284953900294225627901716410918017923611048100140776353995288650041601994643738296828833288073061607679219487769978110443852602318968016892592403622159255610025534035681969428628246052509550817112393114915362418611756620388932806217224769841559010710111228339331411290909324623909140792711411776895520226971724801423792818625246097948695066355058417190453575708045555111233733391311674490688775477531635219630460207510888205331020095970149262710020749636178675256215293949415538805645317506378461624720103371163036939036983126223691791946883052778280369456149781767005866604524728233141808778161062774530987073557434451184042741069074811420642321507894598706893567583817761978501220612930010598461328374912925256117039620507783997821174973452601057383436381816158137562280626577789196173726328250499267958431779101332456223494697031642140375624790875447210041820867112314994282244575353937919087484080805477350698976594390226701905309011538206135668756237800459348646913383015521308260498999697936062364590073025723141837444961865658609393303684317276180059106168974669836998040040080079880688424572752551501216585521402312177471435336400818552050383884025052698609959307487623191412002359506845562486176162563651802945392065000228899342166024201622754275848291150857048555899029664498083904325451651343906588684368474234706604118181813549248238079222766748736568925221904532432627805472336488600241130594902545071658462463860446013556265611068206783133384063254833698387643825638568077571962615434310079279905161842538214269759952763011025986461657951612795421677253294936476536855645554903684492545752313529491766356928274574743328614692472543309325124286344590689777534270971781587734844212865658271587089610174414956027331268716757718190523836693932769994112598835063617467519414989632300377108936969371659179369757273433560006698913646892014227206496415770956804051567750668654101369272492817004922985082312445993872636120788685905184208957746715547486181297858257506484024258893507552938781291500907849736939531823944452226043518769647714844244319632064544480434073038658500245462120366510424491729590704591006775446982555878943542091096260835924142760143158950250075051602320438267102829523721810895507596886092218070746477329899285877153600876561704929608585550522631086301108757733353600158359036097508749556982952708479406265627207596050794516438974729054987304050531514193887599474380944358941992190054822695260696181558943335958260754787929646144677656935472949139031894841814321001171347382567390721787981024891207654806788639203219418067989900914796721227876852745593134625306105378693232573092131585895515650276191524499068446256628269829982984913036878932845205553509146280066326209480647181900100039046618265564003015862110856818763037388033876218172553828836757598358569561643912103976668189193735389226296887718057266928178623294707564452129266457395100097980147485727131182141652016879587623609134772965511783388361079211712362656456176741007410614422646990480152538735898020608858503435226810877404651451864989190701398333050080908809357917675805887721922732295375836664333968531067012290432061105421426882148128621902388583998880708991959293169685895576290355734819299361096181309511480450796158440929571738519876790961249906625746474570904231006196699000795502596080560628642021581959715221216497983017769048083581244228557663718625745942828451650663208489514560395227369570547370999149949013967327525319248553274502660682203461326735604054958483858545958778027718072995481186539649457889385304880042372592174315435395313686159125307016769155352848436670052379112826746095573957218241255579296573964138053593664248035274311787761514004562199333651001826556642179664660034855603750045829570949933928417059183410157057648488978377989850006690653166649289148108677615110616889607652470252720996022437864733578991744934692792838820021297408360443911263854037408067438929262439755012459386903123442754521753669507208206938248836608469294205788582612757249613041321506827792353263456789038313080734522857166807193346519158312453774670348612062968656489168208610963318888700448938367368243831120288662879878621605772821401720369164560302130863666765983125634819057788287129679051645148023955117259251659000660230250295005000849035844141363777045620136188706171023690467346615488854125656591871856416387527340634826697007729247270916169730270404370881076067470840418689075634209462525354950595514811741090302608938586791521843647958193536113239163159318393922086223286739512188114404233655498352439119460040621460836401776338577693599441085811802361106485856961250470961192161343484188187774106520300763913479613528037949322177934523127476513113449460672513634893839033115639657416848901913847626377268897959629809297089238543007356968502375351163841856852951910325001557931357168417021166068759393122639766571111912966244395998886746905143251507910260763548154299602601087046166911225622576451073333333329412874251135596785984587033412268019091619318704766903930121155765326192389754901920981641032136913823324177233169678648400531160494102024693962334553511245235040345897457274453393970610176172303549750318874741350227131654425973255583043197231387247676953679872814170525024927895545737635314794635619273324222855470600716610671578738523304593244577999239915191604808121727386443432347836612467787357705884060690523159841860660604520710337853255562141903248374630268917482610042733446575844715620643049454546845374805830033385598564305583862918689267950926457797626828116628569690303691458436178625106816589451308418439374987783877194012265732069414569587676425567153544593333337898884396004094362252917226823894658810828874813836366331204883722775101234930854472224499482124229598656184305392826424144901161619702693412546471921035081290295401954132972678712516358995109824780336879045946035077472879163783212513472498594325470675571571317402047922478579235319742792238318191419543880142686072587088706301838593349745975818365895840041026828466183726708069229982664590278603917864053258624709405564347624700979914659781694087975642529874262739372864518137225430845003902609625619334180448557518158909935374057423376633927571873077916965405222705826876342404419904045265604097402088616588386157414844327348728577965278906706232861050556524065697460445049147842694047179717857189598626233136707409995668143693867291493330583705828458435498688599208379071011438879006641564916444594303714357319671672742074014324018289006760416175853654750793771680368599024511997543064196738284668872515644043874323951250520305596962075017755062940461958270418498616692649032091247483634706602458248111391104710876139085529321175015046143153012449045365096579299164012856137955598414235931613677186435172007103710473565044465422901228401521891652204688042376912327025198274945051652714557019921656490762603388322961298734098887869165791129470007378085905361333050969066820676414061367922189099348059239889588028011121458834991795471615010299636395921222565305062863324739685680078136434648489312077533137954454586382713987134844689822291275126896000592684279574001636427619023856999469690866070886815649317479916997561985857094568623723844540601808537102495131962174563388923810937124155047055333864176287728258461009899986700673042517914773332317385586815960933428617918512920830571368110733786736097485839110415013313786160818841898849202273260198966366287104554189128179827585234296117949164902140612037152989983842366206366942845148602589776756046004733182290762279234798172809476998379697447204381059396387220810184332599262305985736623492143179956184310824425500394169217332127611523074214106880837583710092148753697339268202928522295512100948505273781011632693920546402842756718698151314922016380562283455730171290738355249708090197200531074955831427653767985066994778620447374650118866859579390643523293371081132096805466798364159959550845350970026326980572705117531165930673412916410275978686319784278729007348862764447166719897052698645162341784251894101044911956960601668310326008202887538282101201984929066623838799965253455751110572266695732453620734351750644060616272921823336818005180866611227609161342256328572280663270606819422596273578315979332160037785788983926808501176905371362856380527650957179321355654839576235108480834647700412783886191831324956058644113315849844286566921069866894432249327299029268779658086302091577007664768672652750831504397708560792001275110160851026080903299695892709705551319412817717665285342039151655637418895954396999375267201896767238985743949791522773964948193599765647784801448721258483897184658384614857094797494837298887084222048357116327003485388198920054354387368428790686398603282355985536324713110532975859720232331049166186948735380840776001664413590662940760853649647060750542786812848830411507489799680046404796082919652231014108207994976051751359176709481160319712881818736214892725917206762766430641972108608675544201985817262267971632689449695882343000986935926418593855006353726608538624304499361866328891700239625639599048935038616499976227323417508098207498769335500963993653923627800833500312315131629177854595276427392021878295837509929584130926291734807876869943420182789556284532407921041649368663902901424086155486938909687832900930459206722858349872171588401216928158982332863656225179980683078510047003497646318698095499100785222173178536226030155903756825712760205065897840789841613168718347994575235799114515733430443141133774837188602133625910339779703242753463855914801920547997578237340047383038573386938259317510151820030933764143183806682831300205121254447372303528847571983123345855810821623475244244645054474594685610995682022765336926867619147593101855772062993687729276795442796518949462484790715704829093691442905741959344752382956436315911194887981906226438575516597942901161835997710672832855160488815481585804526296474514053270423051744989445167096501401061100399772886928788211719254458829339545004860754972865824075877301322403153939123693444188450032110842791973771162769076726911647885739407590178130284846810741490754645476157274948616836298893192009999587141525933595490194861424917070407087525284798431962852612970007789876800460449137732428634895253062500015418971756509935284359761093531017219867253069751525012199432958976547397184662178710620465540267463982025112247986811493272639012935379750637988675920761159945458801048498775679500855974028720163966350178801223424093247884613352925441424752219925455270282218461372660458133898070421437410389261494369453580237795082918590618217645288722458450144599937065572427186803614423599230791323519550908005686548443725762549438343333831146019752556071656970072979043799636736583290745201684952201310317972946376459038986238204339293236395733509197476057772802414964409670157666415551307004928015712721177128216009063475695050806379597951833019669733061841619929501060029843570809349118302623117750163803233608190627090576824978945519899499091251458841061714735804896381455125867645928233948669020956609628056532068774941776955991171939452116880790075396903513592706924396218624390526637674383975503066858645015298072358275848700894158202060219786968984340370120108047350065636391171549865262115885098921547041726392756300288670660899833511189559912818563760976716813092275239383844022630318582146530522278725271032254774949052132908379141105282247375655855130689399751106639831724018034301292541178572745029511495776678892764024856968133824628526898016694325271647319098480175925692807996557664196208134432401731936950125031113923426155088644399919302498623698376925188360085713640678555522682599443476507196430980006065904735226147587499637410156085244300473155494609846132351060093495869102575110352905855338016735446819442826499860623648223945623584274074718003817443038022248665820844922650350655788988143559332606029528795365948858925755022271252667848117055591476597121971645670717659489760876042378421211147424359074855473601911579612504690823219195344759921598457766583848862067159778085188081810417389580226651170803832827265358602814763773143862509696242005735440640523603148241635772872943358170679514508321955904815456838297625490306460557964272106477353987414562235864687681349331260310452825242837270831009765146960289551664077143686935487973051508504705155323177892101447692979263338995854415660328467262330818966247419224588678044744580397836905418711598568409216360214182824906741247199218712752727059223863561234134332303166815835962129902810456561420026478049925875458717769880682603631391865454813663725857048089365242807683053889186743231392071403363853352946022708895980248025558372755740136805345195271277924653210306233413225515052343490751235519821205977713666537105897935757650287274888534094428230572312273557642131670111821136582595170555685532725076134501744327978894398604480869090578582449635879553563766243064267257694983700082172014313715902502007573001940118804656304626870804894962695097767603443417437645937434935739571838918815862715527153669416831574525429662103251857164796871868060496790503731834244614151021035473510432578574182648491821573284501381270727684034819629048952893632445846246031932388742914528561134797199674211036501108724146970825228363398224577997806258236039951471415972636269006376226932215524485253649908955746719792614805865556912326117675474909100341922418231884939804255345177179215970914242625270386804108144433545535884757259914723362647474653932492614940982876515637981514458359860575511286043371795004521575709808526304457493338039532557960878481723860972076781761582262500797211337834623160903905206579594227221597322515540286359576579321349207406553628275885648433953362244883166002430284592340166546913707627464857378900791849993873912525916596278963562100744690425720420938234705337797256131015976092373387013550391869274891143309600624085342747640674373533738774101729601657581398340898550683638244054821693983257423527645021601934411245716584807811843948451401488899187145874716095626958305624175865787828541684191861635616708013489593067389973952619883558585792138948747783698201010046091944403909103413633955995100613974908293223041683128779921838269783391813227982546729884023199765424406340789053467739209573576152347958010005026800914575616085320024627804855221976162945320241508652759703082280949967582279706178223484179736494946596388213144980701675898444517766844702284223247698090919038199771538385537765977227119853633314562114426760795810469518068299615943350255163871048004727625833483808316157417940670748262337858067673315590102097387390041032414060376556533277012963737702895940203666277614918303033614433844555389201383398702332710072629162834556808437615054556447587642261284106105965383355029829220841977781236835004602258772009390201281197738947502094478419677029671732224843051276893290271865008435498182092297438970345015507022715363015099791602366269140558802974704148797024584574234345582372406010333631288388073107723039424475576348755683605108816926368604222140456617854114291585784207949973157502448303702749870586216807354389486012384128144595016681149071700184616610021701726905454674215965381429859177869590921118270834057636143800473354771907673657254579792436292451029956043793922050344207847923938733411150308475965811867142062973534664865043878456797676861423158756006537183781718270796616658747348956432422718044668997379626497442894891073005478739486370075122452466896456967328556089892467508081452514441427591933244947677388014807661598603013849141243125738881383795517417392443231506924803835709957538831363716999280987576108165567878481535189878532619970223417088166186675494915574623608677324508608423258609529346238374221388428788440492556674167562165207931601640416595817947853142258157037241060735945652202969578768208839250991149407692328045916096925547090504644866716107467824677487395455752118769088106374356493542623965465662547102152945225398624075788484062108539900600527565111654077794727308545154736664968916318729912118159338562519506982213478582589440977890021386993747656229827875793338445019188111584027703328111786683863551674471907298846821412681363078768953908645594976329985331117975718621756645564234612660425000814478787347781378943339344348488686327364679128351304993051676464993525359403610976001087119630007346032260920122911940468375789600310278487225371058335435810871942999394764217709182740190541739159312732573018431495462909787637257594349182268238861716276397476435172548491423920646136161092269725513828281488771814603618930749287536400910761817890224876526265046254483709876008314214099492277478709306281731347699356333623972710024178161617147592712544487174176391547227858073782752934977418128474814548898679675834808646882874100932649779059506009523139694551109775515846376708296282100288275801004034424864169135472599974268802946763435042131633841934919143208863205661648954399497301914152882508483190644416088582092333253214970166352287286314833921140436778428873084541677202234886292951749992949184537085738264810150224871038536805373807211343485572755718363505253060100910735916581184202663686546978843050015556383957955539866316835635115892959351862812602565065532176006941357372671520168665580047918441332718935656382527666645788123459430308298443801272297541189567341544762638577872113283099893161835810365121454272658691621055029785603091467213257843886488528966564628309359151963874323778143314825083265014025796796146361051097577227884628541244101567474713219656855870273617358422328021961624907420861474510833722064521387801599077773799000735472348120786209539028174338227072889353147180877549700718341291547993563205064327437525785191535661793361250857075091733899285170160944409051703531278477213473569444931424834455013202603789116518584095970490534906744300350651888326017075927641101697462086960431720614654467245782532747853745646572971075748341588723333461194177334718715437914790420633423842506785830027828124459199405552465218387068400536834545396232780119530899055010364086309846502583979941681146225855249595059470175981601508223905461183926986849976976209601810282837285171347610859628535254861780791370591048945522172357991378038884404579913503224565260778168295587469491156252799115138871349347854708314302777983318553054135386443118748586801681169401336345683737028051353243393395408754873928006728675655541614952605223071620506417335250038230610317632209921705477796605540517227218635134385712473603826888859800056191433774521549705208558976174585346840410333669094714469377911131384309708124349937696725034646791950411397037834813265824992576067441204097622475785111736419277287704814947357410957701835238686004385130194853803358025440050411690658928443884062815248900088031167694487395673794919109474185803735070763575707258719814432330456775987341391414675234990290634466869934442321343501722340206875806575672378438624980691086339486541806472904293467177088874829082816575471558740837308110568689921966825237064504589148321709910644454197106853322990472740879121092186655562902228084405693652371516036079868976200153629475366254262319861000968925591162017117019672096974420642176790572153128422383641438651700054870006531073360492555312022775551857840176901183290075230447753558471668017194475657361163127724179589155058213152819756380962063486659054165282796309684571198427161204923147931198246197635014531760412725814237957503280454177239795098453346110208988934153512857387301602223682191688084952699459432205760655481759162628684395173608268471346752167592841557388716044400962025566884532973463219526755781357504836814999548090887124357464424059020057673129013353699023022440187359892659588944136416882323158046390827558870510382040199228733476699624266979345986959577108004112279976589014995104655520722809257161855783607140170724521147949497727606384567133659486480398334696781310017854626064261983691639873046115159715760356592246161173339739203391018276852471092538794025121473988841754982281379998505003466755851163615440149202616400116772963002792922453334993407163202199660531252807583610111666005442680215202560579308895025237764343581900259560875778538566760080713920933159207267639855648596166645839217539166450349023361898173820130844929475731459742765004710123553724450973359378578009667723310318159258740237393990140713380750404161266759012191160718794535437158804516628629493051399095526379907858411813395575598292360163404538391793238732566614571154500888537969449878485104789507503964281744699084726779131026216430786394592513949154968591491613524854470642442211519121929598764901918237080878936983973872869395877863817486984386707479708479125204378035109073388459386228498094622008363338202455180636728364886507234657840932912826002491539287201948225081134297665069008807745096546826708231588952527323144801360759991597404793434225791441241757653657523340377607469847891828555747186405090086814614894570600309316000175530237420208658173461406647327389948919200300860767085255950239957942056758815734759044545817760297649572317484831005612777624905640177431592537499717990836907657547963544265562579228033516866058136341531873770482821257278503035294821679625026813687759061591222399860093318399391330384939746211519823954384365882890453607406180262721002690597015019436538684496898612953973331037050330480066437554202485316920374438366675089632560991496860901160390667037286966602030627898171680598823890292975110723745741214748947401080586310564674464259882030475457854767422543789440102542945517274457679819738403240528729123219198056309869797888518125653075836766223302861924846987945898857851689048700834212210673246471643887594489742471581469232379702092059957291875733402388771525651256669704578086125514618717724523876318118592026562569950336026269304908736901109779823066970456598793299416326743095567208530414892430494833550864452337553240775251700737014191288531908255524877657014896462850795443698077826847200931009015319155250778363122303893947284533303065615244655561337075670791953681197926735033356948424596368559673820942101098652944288996265054171731099754949544303892253115576418212673222346024641330038072225435702214477575848526739310212427234482027234942418860323445231712756437737684754963851265170666606768560179017238310772365661247257726117075994290250701931070786432191422888933705767919704109891589270443865617357655180074561299555681225808441367587336063682370931913915123109984297687282723845546741745536918446207354223204965680597243914630952596943787056820084344389489942480598163950859716142226996485557563694804523148736131509289496304781244281944011991342722134863932658852727784057090826790711724636879058968247994998557065387510116313060666182140482924103674686184696368921574923605840571189505234695559099767904693201179275672687691400410202276881687799067878588041635255849088545992430645251746255511851655253501985234040436004178152175297720872687970455448475656720539486790189031246278075414172089526736450907570633008447023031416157871019601607201345448278521333396726826853578470341064303606928068562290294639297930081223878881215945525838528913799761309260514312112056001442303215063545575630321119479038811138357240890924238693480566925192669345726919434169360571987500881954303548417934727015441825103294814513019332310070787015443446901113614508318272404723250318326621242446967797389986159976728974717829562427092732748317777234537966736483260192993444034918276679824292046048435723746673599656971826215506682055955284777178788992659642490227631941896158497317554111083710557426487812369135981646480041003178816224746146727765351881954134648228208592248384340625013607028833900961920528666263552299779564085722359962010319998271131670882768370732474790779925724029030620239367120076518977374959573555725634185274354967534095849113297363932162538175160345968362175547061034330600434013116453053147588611126889265965285403084404383300190061528599380178172425332271495709881602918749898253254040702778700531937921969542859083721175242102101926579266650934021394252784854559079044476908071318175671060914526431962233086888197233833367217021397416394840076917653380819556266790009921559914898870439436416340644681487794929204390369469976192999807339592844027194149733206767899168051679770840311444536564255628259962430841368753493285285907424072998662284280188185111400652551100342235700795857156315515010196740196691994687476600596305705497133535722166434725615250077196067487633127075233324156756811690782421306085750859757065427506601447024389525099326413248924004752349556542438485701010660599472406941545928741688996670794307746190565932220624849884181129912912800520236236586049264687407890836823143702393578783355322771336644186847462416243098905779769425725773908622456254064392403334418347452255118431155250703666545517423118007348532175582323571828595081802989591129356783685263490588833614071962761839054879719822474101098029776273235294938078574370145573113405482081457885612145123787678508427963543151539160764153773565237573553232724913455967813494687201398545733524544884425761235439968391970759973275081731426291800451346241049279535905544177625133459027596015158343308434426723747699068865850565930685202005953775243192417005397207964972182854334759059629350507762916050672939232673167259047160094319257671853187417155937534324061381060416615213229036094696939527247424772977455263319169327907479769169379483621756130115426799234862290843438129717619816151549775537189249130639257125054400939184728894577977904598576750343209505002723872590018902281969964710035071687629839173368547607640935487242076304492280379051142797055969305385664622304980659018504028274591436637245364619366955814953620272930783699396486768679122968074898842339208812860058776512559266601634582253483534555990096499068124091655333314797616931403629286597179400879401614285111232010125552586413478821189950782283728978576910917855193580170771388756682330676223014854279575296660394763763292224386859149253787362928144051180919066531280019870542093375937309231079939145148099388883361886412153009559051303871174746498841630484391325538320398111296070273791800406431670247495120889503536987616514199529882600669627543865439383338834212561447287875309240200209730449755313778774050191985850394965133766751013926255659970231332459617030491907612886374430698041877321709500377045214106612198057504034222680457593595321940542736865158494069396514820652814847256592844965835313610985925424384133278993307758697418965675595516542288769758554166047467855046903230280480193733661229491370753426794825662756455892821253048816533981506920574918892598723318231824612175860956236147158251719663653674330501721521464671441447539280499701027893797031750017386733423036502984007628408629839601359946576984123532140073704367005365114916707946035274120714916920159048239538450458353211762880422222248924677678136131082161471169729840724440169193151089282528021199490189309261008638217631815250759820311879091086944456801983918778884980051662626600995299812329353547453154331828955953898114274284283582445379336196873312438565388184705609925044349124879297573236436176721494771620584041969389938354120965660180837213346149987834502176116381213507904048516182347237969383979847150816476528886975100010805145188278724495786174060793408125234829975348896957952778413720039694129134705755622680114769438683098589709164110799276118812517497753384612173806015811915560104748394272764648563455830259012085779131966907952952703875387963411933295805346925274545680439641157956722017300262622796209694323869358161582937159362966308492949073898022379552455794697947403551959991928602245213607752291983914517699848099558055795127982723239723903238478280431414374372842963971527609996841424877804980674270996495575968247298578337371886292473812791796659241840423843375682691036566339387917680031626332633933757691139332555050406969448971152661202115038285850032987592881353326992710169259468567068780930164668264378153172806698229838874561501807265330536705663591770243107342857368258213593612683431963052661931042376513746407226085364735569877702300215215485135731306269960693156763063669259379513516586495088295777172369144335243036852550582097878563005593905394948638172396455950090017429778466023672490929477140403219352473751814535131537414401902633912151020625762621539869136792734149599166051685047462189262134705621876719405771150995825284110212269321221039185373411272627677217947677606840645766080298541254688262534923611487370033738485887032178403653861363659936648247652279861517945237648322627684565479234842304557041124051267932269056632415340582906591170841390640147751521402091518727784635358163128820421521655275233449791638931612702037621183022659935215188677612155396029030145001107562334687814422501217345081406867010897386781624478554288839044219865383553906800600592046314703850329385298514122265653008831773534916395776884460765850571054597538157327387987611196860823054605206412782949142241193848488916032248712693999390645231051646755971308426450054779393652129194524704627294076641090212994779577652423247114530068807219174177138061431237097265430194804921061684741062571539753509093155194957273716224384849002089176243958446378066429371478611767162190290094741239417776179907659578561899514721947162894257079517490474535843644082176042672507159551175849173082750873517793165160546458596439568514348626637384099947077577695301073566255932869703837645289715603666985459227738185449927986385551790868947319256617030397337281925848352810860128899885709148739314743892671230402563353864457569877059241584137300103760939711938398944285018785207726140351702023090353451984098977348613236306928627459725599010928950194705844293916854789822256266047278163475107827785585547165044292073104468179191606446635122452992943631183398203239641186665836908765402691019002827530314885238898481812748137097330395598617519788357092692173425685352089216839745310023038045737490183959391532284164638943408619786710658493800260000427540854891664852493324655754319494190105331273436947828883747181474501204146514648631438663044520939635654832147797540433519112183412287593290559845476268035515746222963541656653535698850868867950233430935089866992715217911435043211020816929992373367042543139692112588721259813962561994374450823997586174716414135129765287390711973768066010064491393836484705938910736871235188905520306197341487744562501431834987462566243306119816455548916393857974213562035567309776778994381266596490292735141893923728081889193914166161276674864029610119629165490457061800311311187073387464441092892132026764471723812617766518209485629168804052063552911076150090955135981644266244592900258467330011298674657685553457415426781988052321096651656597856606131950853191641922084662430105935806172654187787514010024173341539680764461710231185679732474351389062536266877469539814678975842265627405375723755214289192892778625584275196084510965473522873809172910343113044533253132517783288102340449874857097860924277629555494358672859881733550344453265103469055853092694610652685389851140633813901999560092319718945520296752892632529488833409060441738669341217023803379417308244975135462453915429609024086194205698061657603440033448823265836275452967584106085942116812869324447800160577993733495367215650658549853297617551888893226702794949846137128664260327703029071906856515203483871654696627180665815272116733130987901889575191840201980519425978583132687510704086306650230356659212751659370037359763480418734303927857917422185248087929454766826691501786310315679182514995565307690913347124247600314385605336220863241275074421615146858532877963410219366388771131519783619239001208422947852756520344820229567202787479876107886032427430745570057899649724745022152562020352234400929773846958967182434250022262533692127356646826736731121591339831093961332083118058307750034450214610360087951152414007383860258252677411833353230630052013989356823955476474558007203001826710061311140435204731956885102550733724379372656608487250915084444443543533639313943674630026206577062599345117854171069449735574230060542714984861081622038721022905399791616083053810573994787079040200077570013862041635017486166240762948669114498447084962834304992211971840408876114885336924389571439191356589672970995844733428705192116669874962770122825558152808026647646021304362725462565652193689275481667944735418021036376731247217191744415623249963555220056883749894411759332730382313270800277696698444996839704143315134901200259430332691164125585985826458565480915776697122792667236778449730560817211348400200240658179995608933961392074885004247085043996522690864124253706874587612421475236534660431545912823669699883158376377738517995625338849838392611245013252428565165026229497142784136551860948155659834065211753208805623920379710504058460981982811881996674248382195316292242235711009393775809522349632771905177914058036226190982892072719868555693852360007094012329861078530679800674546431828927666015230796906470022223586759197537146101442835319555703206134509456761396114557705276138546543733156179982767682833949988407824100027948853910282220277016673655471550400495399269944998324762373369028565465914815088041087002880058609579374427695388185713757495704809316409381230875846575562085061786696873689075359347059225234793540132685521082914295283939668169045393905893538029651412831184529830695619639066325264780199179175350715173070518748296811057234190442602360344065097989880129530081317938535860661265442349573613181313834542369145690781505034608142085559881727474791558685691756130480295204871098332733202685363783381333503405943364726081295581635050304320628072473947164834523196143404352561542763873844900158957621743664886801706467638343150084246677723531972590238076450492099465599101884808938123213888487834855893465506731059873342763454125490293569911923716348685465638696000603379671019681531864311092714323721072665392926456154312654554943585140988591166969836970649895014600215607367494612100387415425873359283889352182058455402172897072156233493688989983939792023699092874209106595415029017175971879048628709187078078713022009283950926424124787395585698028890655659143824677301218296882086746601063965528424950903687097441556333009748524862655365891807035755644056896906735719894877513157167526829814627125786684059206609978301442065133560489216937404400807762930422205634744499567025743511525685290907257001740569821335050726731098836935632778856424686781378335568528285338317962242944635863671333467289537523140819896982297696473928249895017532064318463192339963319088496300673511587631137573018292601393545278541223246729391463127303105026819810257936774326856796522982444285499500198296755949183355562359349299194599841445015323967480265046881894527415657590296391847490996252748259902877932894324442205903770487805254419767562620114955735176808336238093082953923252043297210417002324583725970573686572019675193586529070148596466360828188775985982000374270309552264146003832062527977276442067556760152287701025924991464548155626802517472912034013161487195211175455289707177137190796416535116983876947764310357571163580508699241137529539706022172194421352234673257923898584213739216121003547451894544700614330269697245049142317450133421032522197169122656024100297863990755052905963541020187314186455459500765648382604006775743433415984630717253906995625376528906449547734720211724238994448917455473900249468240165050340073267077130232403018386238665430204858555093033806049827440665331541840595535108494148015140828708304519238911946056763081259779383146929312979252994418001179373418118383231563938425122464631186226958628667793637148213796435006942721643861813784054876923795032462360180968218541107686496126344855549756288083851722812737527629643788355221855348444741552110812569911563661390089497364685377928443695750617663077531054392803348002058518257492768252286316705146518944145850551004497864411199841004162724280083836653404217669833377452665492320296511017804515083064083397990964405693057770042630133143074301931295927292202599279724778183812254298183965572198483543973504734372126735870039659970957537696273321294906027910390236915724393498903183379744956176097184359633062340108214171842915365605453917880422331323439569399398800211930810035414193733010906638454004544430418442521759998932404368985273038562800504386880048573122391062840208972075849271678861675235500389938533247757501681085093423955801467042783403799124207918600238013665672248830770737788247098092638304255256541422051730196059135920792488711641839323742124421073294342736089361455627081331478331077510700733365821186574472785518133549388743844111181707195959161412946164423001327774118052964263094927115381583631979712115015473797860692026583320383713228088339031722175105895462780699673349321466398930775519573072295798645089809329048945561599336149905210042104501809855248189487905033650454718827350805930240313220143329946344536932361281319394073154580014278736269232295348992578493459690489512044926113943322887232678082522358604952468214978324699970036629023735943224826956770831329367112721098533510112396505313896060090213696165050232397511725460858896407776716108991382564728958502406089581635150972320232938797550311083532853110497628899976433979755383584277942819270458608307774066896732642358533352107573286570623186309833901024233394575975145740867985015698302992698528929607803333732907846083693824429059894178015777410028781872480545648007258525082730881177165225675616008427298998110803169264750295065509664198953857125081127481097053379223130332532458691731616621258348958348325211151081173362394954986161760928024993644393908664375654478581600906712137621680376822100559132722738066146340945809465404262274043311825063135963071606242381901833568577688838792359179657208111839859107292881093456338294522104176616607044104710405065809654924155195521777038378378757385278662270758938241394749099995486495971304445016018382116305182915111273749992675794243608975883677089453934540828165905786039465281745892134523653354182830152179477551505319197801208796671521735834238049287324862522395698482927636549306371450546758951677801654334452223768500199788710302095023951696286553659592146092837431958750885595361271205230383050245058539215852401089937128916570790937084544949639086815862730301479541004383752527332266126898566478823919522608920006502573881180755908605656567054101162798956878930475768226223236719280224636899732672337198273432327198335087212238257129483502199252961212734756604526186126663814321502523951785193255150768091110886069925655527712837675555614535499749046112207294014226164575472201074975233643526137704009344187627713649890063504879654547114054277022994126494390242209196298857325535795472241471282485277866893046167050412908677431235893609367563207588714150189551807060059729367563649129599042330266813351440760937212073861558313951500447572544261676345253787128054407971520214409805907527643098551579731196478059967460543363092722938602258859132433752822484167862749135134913187655014964004122201764434238678430352875070230328442482780494739369027814368383200135965231392778787825609600987715557471707551775009589030161270014697452990146827733865305343878816895131918519373310902413729637278828297103949082393587288354971379276921967413508920826625902500837210561170937961419284307357968035850954325831856360041375021000187544153942112352107399756673449071072845489407788426746868381326377117649987989876309908024306497785713522173261103224617904270322144556313838547118967761974467843440161570604104917418745099230272159852371726088552141517229398186351640706490894998684825114072162085614851253068018693880590517213004035445438760175219688649050695749944963548652095302457918067223098588390527102140048310939986651143215882894464676432451916247088809548246990625391853812831761325198841940180064027843783987072692579097337100276310595642589597898079322526435862787772445224826723847077472940244101290554775160059798901999307247102524917494374340586127379762267559342963030373752363790379475932351577365249579737373241337640231788969006853832232093181825337866014462217734320761112869814770993359473956881649927740772775024173445099587753040986021396525735906533124494516291543662976517239300183509497182010778259909009813926874620794351536031412665821817310827496333432269281976379022809545693172659903761517391922763911129840770813087335092041438196134963661495454707358495247054225848493784430355376936605337761428515707932846148822844350349166276198669849570118461501110840120276897965982906757227184024424710899799782925591466082881534803422648655450072348370411805798130593566538875426255273380289461462972686580970987866135017916186498212414314822147377014263318572051448126669299249486295909793134270376800896927327105059419776443134811923256836473154867511642284108498793932447895261423982868848735639984749118256901140266293083002743687885779999017058847263095349824019609703437842650759649388834518628854422300077082007138938355923315189821478494356659875533818409010260362949696188779114838651840461672192610285571422870928658195696910982729986128530207341309418638680965610559247757851896519256965195180572031776332910668774465375864380065841556436793958712319364062741484373189123492511854858930297937152825794308740056604728374150283184311946854591218908571959218636865163728136258839234732875889635772874224514496600112939725985378385758645164495336175330622549349908855961727926892923370747567430654376378347650020807264445864734923413448170471611837571874569133221395635650711560160895305470923819668321636751460203051451096998457973579072161639583883662158674787896341817491498632296742055099054675365809396294777364963751629679361860805331152419114756556785757484573507793450239667387723467897494674360797468431548379153913430483130302151460649883158959704283914913289488431724101449336062545362858320225833089675117500120923918774190954044365948277474109778080974908185617596405697464201305924591677749330438209061920346035917964263839688614673608554283071314043364810508407521180966774347243261294941505116658182051880258275217150948889523129117447381201943048318470116024076540121154094019574476188147721620903882699806225851271257883056722116698738802613283619412717498171076969123944437007499801319559275763487482349642701121853487443972661153844665852441736539767508365828889869006174541176207293922971792896495696496759142309884628461438313830463441248751857781000818407061643989267566745927689093290440284832205260336027712858425321008558973543275425685331366084021119394921636740650541558255778031794147648001060369957481482418714522807387353031141940691546529497195748520515694434497021623559567198014747863737866788393301903598650890129067877337991814757923878093610725872728278308533725863052935570121263180024703607344460933089398242568911689920684003621287433327546165249567310710959459625134393333009314241797492882296905132885319112963549910586190069150669515499004151912560067371152008453340392352682260388281885485249607654622690310272178393249374104285039360723965026014398835091043523387423999262410659812321036899649420406402911183283276431245899011084867121550740980560785302108901331010799261184018685891791612146405970329405161127707687134337016637548537562245924969366087136466338186994328349729582024786861863773474225766459467822313542726361679349724121776447521953743633540358363274604064301386984718458151751949061223435278654783740532939761383507067257166059963681532777023835081235919797801731920009615009368890815668203118929440162257355407415155066832395173375588475538561995732087881693842127506473060039679139056460863848769498650941124721247556004695342030209726893802846327431026690299640947352432572439476597594151496381556844273017043466099942861630560049786090794644460505798430728351511003346165808435296917084851573287041783799694704201482719208164010177358409604587627602639671173058774364590048248625980044593358795440181876061384353415570014515935562502338037678740528391849728823645299618248279283937295025360007262568638980754154061629743929566015304706739479046087515771923464043363180153345871792555581330008759907949783689879584943217674254683020400388259192997361308582012775841809260190762600100280093999222751283911347705402859021079777974186444642806232206611202124444170788394285602875874036741974858300583252971661921534729732019755997264374193690089167382391689570817845024877990744249394305298183284657738934155796571534318087890674343267665043693835424874994524795797375793931230094095653159957594153931594237565958477785748469814159945863908363267722440767660254997368714205331447676534448979064523154999636499999448172657159454382246584422468601406779972488327493642084438703214928198622355382444645821880879570281675008582515477905218977102125690824825583410969780087992839092786426791569439151623494695325224582429183940907323528832555263725808505795015463297290148851527559445263554872089560294244970493922223395789942407611423612301190737044696308954100290592643776195346094494945222919001672683876164272827494471084819715274909548432179480959723639945192404121222093359309080832048285578423404963303501246520159259903182136970660772159151172736060548547862404764399198129119112680281693709554641335367096166886640014725084868493130095740437121215666581244867790443155161719389208376921690364717802513752374997709389528849923777872575267640861784402591604938938214355008662895167279145207466729110440797543368351437746243236275118346904794170164502269380008080373510622279848257127005877259975627390524605999136232234035248628976761546832096444026100187692754424408853041108139941819126341333496732456963447669780220812025594572153526196754357862365553753558785354070054458064157082751425538407418336827920429661877519363243905786961992412301430166143621687870947147657053162297271555990622288470624529247312401273274303760119383015048390166186568776304704231415143978340594715555291892136233151348828822809667819715779943918669133672252470982143770219145444050223740734302214814801061468872553914152596084388248706328939866297459918788736333397723408662278740163357560177288456153390774503883431631636304787355788092536801665776760373452420400811408472992434948577436219910100859787519317874098115271604968742660340885664411372314647705047521635598187833121223593552417993097067711911178670437828701625170187159125216385292374555954415725039363595283321145327110113571454259311600302558374455081479985733819851115538792299466181244914408797468750", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n638989", "expectedOutput": "1538699306822397186871093817573513287820305384353754799704263026361698025106428681431095030478141268587966299202608621879613693403359151392836304137906207294145759097023145589177805439976013183810691070102842680271619965131207848856445886217689767493970469832389907868569298034758851449128076974752760875006899498645665434242304828881933881470515524578535413139159554506117318943448280874916325900166853799603610945708060908993191983003244953900530583926958770899309305893674769981644500415303636739865253278988471488132496175826244607479440993577453752288179965085065819410752143403910396763988393226559928216189556404486490497555138956322383045736411585803149182598269104391255451392182046700383201357635026047682115260332819746917983007000218540611193968154648989911822296812570560646129361071035262686293063713986371390648413159185138778390785268585527476474629844668514652733942597528787918291439165626661106946804221042940027538643928354077754355428990453810005218233428223041288332915091018512876100571772783979776290376178946894718614923129822425761120083413570885985734096591295120623844417223677278861943313222783107283217720850504703969566860284178487329568154811441960779510034929988703403434476317865445364035596558564973004324785799692043204493454756140988134161369359385542536002773397635582487712576533914482664269828908676825136494496186428316242133114015627878254759191861636047803618325735583849666726224116851308742970964516789850331004577416514626556519264344555461380212350419594708870945995378691990430197643727977646635743382854104084246441227808046547047956237578575574938828658302778139189726989948564260870289663440156071006225629494887155088942195784542705044164998033752904824378783723677989098276961170385429257691634976706150703134160203945952074550818862250166324266347532122644874269881457068740365086179847923859932075253300440871998075200690114294271853632919377578736335741846968773249044418369801010307923655797973742677988482383470651469021212299392696955498911621117354701056117591202566915844715838081367567644701202654020519607761265577809292595535991844478355411354760555813965169042583422068046956492871997042832506446406299053070186529617982415824607053688461153416737992293352967878886700407948833961244329833914338634467335887604681291755683161062707153969165906796856600727013941607093493008281706418004925644361425552234056017157820238350379437807095823031621188327969370699434727517130921097354899911723730236874210239409221835749911013658868881434833319840073445313976355140264549591357540987434551153237223361058912407333094642392121388741191732179317772516807639373207285922950649704688745556307430767526958114432577426482523591057419167007300245972133427933373424718825784526232687869020157273019106125813662786430121229557676296883644155480931396827773487599048375538537568079696851819016385805409174616393905874301999507108037298180358639507713535684087351074746813134414113234560338843394495190820945117544727726353752403530913441542061509215002897887123318090805126930717338823205668735113617403127153754894113791730144080506307004474695273205468820601707377479912411025956601345822194690612335070173305109871276167218228577353100833288172582047603784964035895343907322893032406444389950248097060095965000420320717418105684665428995837400450824168398960933282302804698428996252058859406175673209290852912409757364667742023084223437789930913371979360126503302390327781449015949894718205245323796821592267209702651948338974400847038054756235384897905702907888100764524195134693820814084787637138026483236692572373610570415532332019731797553031990988428214222332677004148330156114072567793518617173834437020662233118186268853855412724268635270028097824517790801040384984431005733327069719129628884858122407941130322080356445968082049621992108760340311707755999572134119132420926597524038764694242906434577470564681583636984761141230322094421032839572800894302233456326654962084804118244582172531697875560930528453075012349916748705123186458169356043529496562027659285922711482537510603243654924871947152087675665125683604713636891295428862222566281612035189669236838271276280835497351342008892987305465264361958551076452213748953092750114457204591130972809046339605900169606064734762945099718826137460687731655367203060523901383453399462740965621178590406950210189833681260415075479630716939128374386375239735376413444284669146328189416214449878507749326501948096376669973445169708105523614922732808727468327744841417940475765159859496990281409615819500908771159027127869981575533391666233736641050112764300124088150791200010026602592051099281906828517379071123023360944848654138262397055523547870871810326977751870192528877293085641110264793017245094568269005004639124345337192569245684955430247575649560913660596711208430973034516012127971064614925793006508615794675345365577785545851733823895002813537288350496284642533670904131495010730665482860269293493507196736824768709646417815358923272117424857822427228185890928529474282689265156454239393017181733861243176045829182560483622950733929525961968758586855796839804435411659259931238402621912299313806136099970539030217071490150005280870025521808179503512837582053552142382883257816570343299551698974745616792233936772799144483428310915337556500793716920183517035824517359650968173777548295684294268830241784335211070429331790963192426383101963656668347933774900948598488862719226461446106751870250510467286281600025562341621277995895090907526359312373126085300033690327478083261560015591881401300316723147807898648313410002797863616858367363574533339328808991322135290228195792891953878819774441903563122698973623490858685182654279486975405896625644710146966383808386136911287949378355116925996433353197361323299622131522529199994417655549794314348018973213637653447455162495005445238532047175777752440281773765101906031041855846947394949372705369580535043823580162117700592885702979433439186425500309872405986587138095915264311253702893195838535212783313731949846558725014881811453487016830464425806429692760202305399542675559926101489632005580389901598444461069652886395996039723986112107439604124967291558350506831701660586516456786032100508390159468192321331516450183789350720848070879611799473622024762203913523570925550057023175316074345281590051154377676332306874023113337389636658084911076268470267725473287518823174616382907127259756596497072395134435121115186875188759660858821262570391438011235583169605661856028794427894240150281291679852023935289882208378034908843497114449023230065389807064652630423973323203965771949321530870980738218367043724039229096334528122052479770809937656231306987478280681284070576532407668621699057187612434957651933840530023802434272869491329104550974049739311050686099386526873568766010458837935138930706145416746133078738689037953547843652910698623515604752356829252801893287034141290849985356538591240848314510560305646303284033138814001987568217484230223737750777860401095452775571128904137612912061060465885342456642817329938541946303138274503057176462306392596453000066973701598855460891114340022466161403175403519623337075524798316907506273323560315406689788744772137615776500365580609864614662537750846069556774909509223253854661503539723785651830086700686691487446547138959407871435373958362679979564890893222581376131343242246193707382725994483831862718195806590641421523703455542068749977451030997273996113275083584984350030267676084925867756974809652956995728263355540570315071683930933969900383931572624092319339961668051889315258367586614373595389643871560665247713735410391936737365337658316990076889731032698078702818384564765411882240034993206160357421982850954772178413167243037602569333723581179489668325304636545806058298851958387227482913776102415576503668538466283756160161875670561710870976167411133072728604312426101479741248582757663189723362085592392912782833523760216334347971732201151187435304609097636393619941388233343670515738387272228139825470954871275305853573688745252238630497167319779139950204316230998521198036746181339672667703213066655630218489518110795271886847794322124451188658007943244810497180382104247338439742769001018571928630021212802058563709978295114346405446530205907092005328704303581781377588183521394778206196786220375346423770266031877211282671027218305432807344017531189965592170915289806775701697537267791730944132549111111335788305075145547363620719285071783724351318370883310405557543595602122052420757113245142799723167703226256953655009688926951357757232030217576629352975705543680412084970796125001409894083138217626602602933667412148242903569659236650248392052543321101146958088412019004899089700807405012285728413152809584146448198085419203901104627586826769827473095689843147852866067703429286885328499697997670264303555744048931116791982601069798293451646143200501966128333930917595188406437974776076842967325678239855175312374619455226938687287640529606363204793312363885243479873611521393398866883989868272325389058798360771404686959818211427631147828265616111263560972584678247741568749186431137160247871997536128330426970863101010949471140029069026379108279110259942067563813973491738144172664735896506652311270793478120212773458783880021921840630887232790601533486056040782281260380258296695610043924291394140797199133034165586536856875848649520233488578663207800225749216014012309028043509289215534301620723106312429612258015963527858447835149815034238267084263090059469105894769468634841634678920254802941076476858447049456992106070311086197915320623572585105618267015847170031589531650044616340928737986946129242755389365089270880748853855492270321353812489505772309397532919578755627139006627127219772878311887810636804089217958756540763510370060179362222595350553058295060561985884797524814387186114068381792784116232104984342528105119517809782788013685667977465388263340523716344832120709854607788530371383295764076956797546088186885834128975537223280930057808338347415704202159615831821291702095199657601609237437958213598992015408409380749928380924931419048464742217897388842247387473957248856338757300903917546911368598027452110066425849293263146809457246165029263492509490480297655936918223588793606061952082303803152953349811867247459154438470576442737530660585665061496009585968014725839808711354741166934824649836517081694277558961585079619326254972345166845211414886255263406693461570122924014105227273122538627432137697336154943586651140141825966309291748912749837064803145208978575273069359532344357289220865708446544307808640281811680361088462486817217894772302806275050901224023387703549669539885806133377094543483860905032404866896736990110859430278130810382602451094385656019358063622586337029040548637595056827039753039457581556745833755846977567940351077627569199290638588591624813072816836288027496436439906565539903647551403217653221074384748012763127441039575526748050103524815741637633959861109264744657235466393706463026398414051160642155518085491823421542771223896067641809335064992414889895601328228057301615989603945860023466126856973174176701870141030886697109672802650812292073491795373756725840740754717395206549122440626485215035700197398675970094108951489427637369321714778498255402969575496453448978783392082117052790977946441992055726648675357430595400188738071818238377334763685765626431681601197851339165487632022932773903515906358351960371598584392106002303839967102414537946672348665651249787339780691791765433195416874510421295175840279905023927517871448155979465804028833535775148495882134761868730695230423856773562130764871008225939615196616417965235694379283886691256641205268249493367065880712578207439120782144161788860430664558913923243711279487371888558362422905879968234618240504145698407137003744761224469318202255910568594759218524900186916119002510012070802459594290325445747168658652608457199155559857160269706565622690249251479149881165198487857858313436098056321264685281558696519660629411305076633770038202558897825249017834225145685520621975154517311376923611611975577641704999887988320754209438406932391759889495355085145155717784839400032594486969016838667681939877795042346476420432557999681000634842160234703144663770040933179893198747090717509624858890360056939932674422572019329345146576822313065793443115331835030083591132418336350814919016148535102377599122749341706924526199096495965318450458676502098217483074005687731196382308055196630971115121673824175030303048908812934238514317167891117364024129103143274085062884472928039465979198497312335060854470363439045933390008021193791067745666292620217243557672606043534001346847254429039088811227551896863134513065932478451154206266513410843957558348950124625647736346390509994608354333437178480099079728808038398989102396598810362219095611239449604061739968206368356265784744462194981961392530420791122238367076675058804893006538844895671841607447422401354532716713587474611802537490308905216248368852560865289798823469176325682304158506442434249193279136739727676657882576410016146762982118828141248825656384126321696179166075192796128869490923300713591631512286285624421918554853093473153105050783007913781660834691816127840028967237347591588069327867936098984411756941837794314701074530754143085931018227992620289943203105336534401593292996832065864206550669812140300092406486677001869115552612059147635522629694568978506848997501188093102592088254257320077940343875588131151844003695532492701562001645888228186601693091902882201724127249905710746519068274495977863164678959540457779471179060238752260600956392640947948553526209147517566734868782096416176743343113898391597885116776961733865134648915645882762015976188379552027310632563009431045021415940716858845884305393047060065019090333962776384531934512187502421184802741782860164957894344873223449269587090101607434011448994948647686514877187151592116436997686582930244086537896290637657610714430162143454158646911054426634508716805251199399906161726632833212937712618346640633158971732199469158428731048274303068351154687698309457794655197072279536759341596002044344602453537736136608339572478201381490842005649400244400942846905611337316290818897276594820064698943514956982795222593694052101238485066253639170976807055893546472141499613206284849356932224579195527065203595948659122308990240327568135870482880498128471150842620356289056921313025118170779868043183724424423394481748075003277009340355063439416136288726819747242473798255434028459808185471543739273342474601888933660479706431692467834697448320543468034325645047295329259382435272427286097479788999156943426680273803251664247328931483211749634379750039733137367196873930732448312120852330089288908308461210195569534991583324450662783614298106549501046072052090103695597211627827029785139639780184257778532934398974272233803991390443226288125757583407279260138347743126524480822683192782485182262091312165787509994195647322972342060653294697508032366677099040982965050184831236197848471954140474366765345493140304016883835549280631186939916613325951940039739303611755117775402414237342101278296158722823893071874960484633235987580086322948261207787002294358025918106271752185309676342360152728253012573583118658598018078305541736803482749411019720126906850476973670309741123680477542982751224851976339332829854398142721404392821835670931867054838584722126798224128589955862473270482922415394056310637749364545348984090678132594379150118374264063854350817524554630789451666978381321303917461444832258372848196750623260941393265526317924433496155598866213792134983013902320251271298514579209533219124852067590504504292943047116893785591298098898536208930325094226906646889389128617672186684751171323789929968594298860934025443523342575038977128893118557453620187282240458147555487376663567257317908433862496585512665901542252833126018057077721599063683634228818667867321105418951264833391245875510077022012833785105112322767840720848973356362286298322971892064277176703391692851626053594690491797081842190181959624544487381175664636057906308743484594642775433371978430170643185835146587377050818598036721629952743137268365644458262925776075401122512314377929536401757301011148763597520759196775001184066398745857626040221481081464280455579520835078426121624292257172685591995512781508732425062130957914401531413909088878980437493956607210553216144002087554439736040935902510712187114949726463071314793689169357356325686818624207646802471667750628880446270874120114187097100037560358804086723528400730266488443853684341822382141444598401164700258789609391075003821841296700443370657672246644580760241320054918541076798883642606831614483997849015388394172741672061870846217520222997017388953489995214602727036751896932172422907317304469089118528723777322036811365406610902654113693235255700601863861025963130371810103760368948005671212692733485047381777520343420896900023672895529151988036601009091626894859922628938893033078886427784621874649733147994379113645367174709948845700389949634011843157487239762296540130560082221745419837384982435858119780631555099890092668513260918379800616906771618274702957441739581297805642173123014436629350837205901562494702038229711815757974966676173782897644883053069889793206044335321668235998829617899627106781416209419554431849248921267483273047707370101549702741311975157676655084421829109657649263580951353286268931996420070270070003554319252072293192919779033663329630931912783404830399440187851390248198532131720200415053693657379977343685484140731848398550559798000859341018468866548016775196739255699508974519651098736548567708664243998720951417911093306550502631831431687829213821044202433322375820180468723797950476656228228114137913633695777056330529939224721553485520436815123615853275681114603626144030722781868666270222803561615325510740931575425671471833507681143729507565183986901399082313955728088795676429968228357595315187311390296804945955625283283542909517172000943199726512123942415617698617176777096922756078255208470230725768244144207158080737548945214832277948289533569056882686844235757788649412943994501498657773876868600185037848060276229995602639300741392838011126915991128960009179971811053696294744816421017468831842781058021087370864696984856400758153848995892080975382101509245653715888959752279044455129541094353341257872590116065691345612163573789580328953139176606366516138837039686567675723166985157304901277088307721592666291192853393764870587118870831526212334363281519486751202705693765071283583728938597977054980615342478234275088423475001591494219148538695554229576381979343348341966621530443389371929963074242633993898230941415840763218197686806004486860316854186404272451164286541764176180612383975593023153658641547264405917354038296977528783266148875790901239263401439092106424979417497056291484843591047848916874131778589565551320243589138460552014649135383022105950088745751544391902305818597303584350906335994330304446893607960068698129306942984544871986414237472991254375979155751413067914005675724747074304402726653571799380981726058966436936402659415663500146504582662131779934058907391260232217729920736140752132521952606099121864995944910781831130094430900312198368001758550124031865940854613495423286091027873608419449241676843846729474788248743503573930381946843058091888749417656481070519057557589503652994906688985624379311768064726308559184113921106194194182309235797577126799062192091767807140064437394157192367131749137588666747588841470796939082653345408768465748752811755715619583471017013873261046896931931253211668685698251722769042599974374305634791402549596225397619042263544463727230307518227087921969256477197274776576993705596973357641410873552542809206396680303409554140962081693011633505800817865528725973266580970499229338188042571172148089669422193936330330395964471840735729595622872330675139833060394424198409173257452266230156136014852540470631875982931708249186356179940341599021306082171662059456554635360383521153048271028275209712374464212509482151625347513270423689193357528115309706349507261440991968519147648506818922341478472648683553488830055127340774632377697881990202754365077804506305426603869400024789640310433491551206102281427828696765253733451124281920097478312725090291567892507815708144944035979170467114123846825854037660722747345671847962887749142477714073871205204653985698474020235532755901005728457581416689975016096151067279229710034111464602390723278156446944949024912589494533877698972336066624165154271795117810575575931288171402098539602565200886658268424940937568716829361337407779784112774659112772070489608365181853390162114850934568834279664226969483836134318245179490882753396491799160122215100212024235353320193088273837627626292472930880533633315872270184142879475603143026893047148717273752850625458271681100377381565574704841990502786257634311399868047674745031544498898591193521632402279953467851380564662975080391444515992873109195358648085862717188218472618991793708200142070517390760051247830371967869320556232272323443525155747962374517142154724346143470940821747474563697591846821610792641214721108406635128414831448590601853406622605326253484716008318653334198786923315654698285089975211791382539132616956717211191727291733917932906141877826020669049538189553900700185745737278393884221479709673992621260306622704953543945011262895632770013772009525229285797066631832726286496810286400133588239428658261992071383230118980775499597476095911782693981379405576235119044542624192969661830644270319570124396747452099590558596379728656909373389752518731456382467958429643201903619074501002284838545542303066233877246427352259400299916764766113200132608155603040410525472705775205930009669378093897777827091207380515053857354958607791941441619973515941482658337002076385174160532028540951694825622436632203881665048483137803798918697628069427401701365949211229042314075366915035094024873937685359463396360503385085294245205981692527022662012833027751755630522551057206369005521849438299606671327369861763693337351900504355333498097336765804807403160108734488428723646707244810583052391493078108283951512845013112305579367075093370752463460136019649227416717694198925650264414518105785432741475456907653371555750253559807543845768132756588610481086261999794819483469666226281282777457683761183025864063993802073919883211640030617834990849542415694817548534598678897337917799500115727412295389199781416157567394001697769782734113305969592361274402306907405527785513499996291789657974709018121405311181630432805332879611724922278089098842927410481492229541552185485643581960438172016773825999511068545470750129729866931145232404513685812916337627088918271063989231367880054993298661632812894903080411362377793074070368920659558978672282304027881897839202911279765060213356701788558658281196749438333235245899342116417592760459718650253218813013797755967231251150494824163902049237200822815382631347726742363176676175491983571373896619850318876551553297991008876338468758709709008922993950867322855272281496718467996371309436104382119748963702752854437377320813794082228250551217819427510685317155112449319181324696577247171638665094005387233314219891636166362828154947864062390103069108707789714905606774842256572644187531695181841044585340189032280639133826689454301046862181585008062992581778571036001334780466038942622104748330602520638161435444409858420904602759630462523368957629948076416530461447799970353112512763905074906226010608316240361021398330340622549261713380674560116268916856469933030990780931657022155184097047148103526583760343147765678008805368994899691042080309524956891613582184336679934150690631596027530547667325720646826140221735065141594787550094217040656175918351377814685384679439717672402547120160944137743380235043870664783937411545227553418100266902316620146702844545791285586381098818764525391517323346726873446545971675691878076232470149151271735296422713011563852808124898289185828435479462467100707225908929721719313110784867074059267773337304073917151074937827038064341635510588188602619312172459160564687842606562241176330938358189639540688768760513366250053837903265092631218739006065908715448848373902173296968934339013293750940599460847721163476399619220316861675032719715309060256246170035245589350689445334091009473817618546796477007002547955814201454554809482991158991456115584260584457123361057649266804636691249010874410162718160816342944687078614960162026526616265192070741533619947745976926380279939286993774485359606968847873615984776608358605294441935819601255876270736609069703254712610932424724706929537812667594222348254442235460352270127881649529418246414483869509177904507494967916149590420344718217652045915673050528212119202982393379576544307897938853112325642995678449628679174975136304494604006214160953685810806190783508283074126727539868936470010588366799720269251178396602412417836971271292107809691218522351436058269470457229247938669867824685878950847446567203197896886715636876403078789007482368795237810977134091078456223328974059465859114110951536333286027584750606937615077719579131853558284459006090879870604374224577393405237217819179839315321511679296206460660145432091077022266476992754403394923441488852823387460593403393787420106460850008759055678887355022049998076902692298434923073067625792849760517238712062416377870308026101576829022718670575486991164106700926189667981041513604510478816737969369915336789584101441037586120480651018341081384735687787993615534497210332790889213978353876513171875453908046742995323301230552877677849104982240384416397336862820527974209123973509929952997533386228962563564763159515928966765296262334844497900085824435632112602749371627553585733754103574809741934597621371412842679428634378900407867173545454227870603252931607562183075026820892405405935712422535323091177800737865187064068602872437158811166682555628596249305171189185092305384517612504918189173526662759919552681914491085972038066386650127138094457597899773287472990602626917368898694901025664631245881919160959928389592886320843480771598973830282399110116913183881473873073638914013347464525375518254955286737799358419919501113113915057786251873146602437272986632511981865890272051490224580499475821996703240066570522553936748255124057343018458961607520708300483671425292448961335761501772489102882917657270477467427184406392558915413214827852976164382442074598077590345535808179643225530908071057437624798413224684568273402425651097791732857540707394139536864472785180667574882921783739111116151148587028448268245844540117002436099201570959815185420689804416006083819709755585468021042563885267017550831044856288381362901588919361666823517261644865139667886748267412132459504091408295222043845349554936487628962957799551863592620143436871718413785354065642754998502171147569062581136616435710472251421678243326750362572777545983732416889425284493212008180178062154016866895662434184810079515630090441518989325649398698471705661529305903516383781036709325622503466086543162185191561049473901949373249349011061661363268328842019103020977572568004514965581360756478104002306207183991524326437984221984133682725337427329694089688929757987808005645066850165627924715691071276458697920757733654552594441620538302973399556193928653039095313850531400532646966705405578179430178162506180617889555693542089544538316677536723651733161446539186954745237190013721689033400315498691502188519758772069225549007600505725385165819667010813573707303008935273433117167850233203432425787412468879920773754893787847748589399430617651628634819826852892170031414530916174234121340073853614834691714581696465229879913973051559151388387646290957342225307578931925695802148158088535500784393698055305397750055183648740514455070126273514635586576755334927767970751137966547601850269744198300608106335570996821219115195692667785341078095042421539075462148081091851454169600423226474046931136660463735049365113816313965151931665010195674545769983193309264591625614487571604756089149756198554946669455834028670211158538376238947746067855033055105943281530962159872252327936470830751520987629487652443344241308173542200279247146287236705495497101591637270677387014014283890911712147919229165000537298160316915205121097623155192110384689707384699752991581059025927410752264232049299861837643606185832805965623998094117551758537536704503542219696627493156860336420512404077342669539601776090395140029316481466578400320716708385971829660254971639913894900997600264431567827859601357908820230429800051417952652972938653765248979782599008653517596156526960623809134022838797872402683740499785667972941241502591534241483311130070981883435200421232127154980097575040282179987525154546824858449038310330345788755441037571119837557989138780905961263128996797606606886488023976760651536714256901827945933539716535149491353328622824629647414353809642217119961237006083383795508314046183467134103849279106219428716203741649142283584458796466136553272526890642830538837199120071712033487489913033731379665555209642804311822712767079013369261971765811760810318821126105222213946367585511457621244514107196181581179836485335253666185418921818797573422477280645690825317516707032211983721931535712585845514356799820576355739920571099340482717666154054792996051767696335771565306519935675836314097054439570061102222763356338937513636522905244135962682256877443948079796033920015544497731251870021591640440532712097706219815378691639443373677593932212335630236049311067579088255343909346666005153574417491902414535710634867332157094894387146858828856742035308010643552508448871564663689943282843595305124041946077487127116442277603199330520259522384971639610695136235300270810077064293028422723769418325710162491394997156100889377965517810320336014462640458557251971973900040903576959418279158689694205381992297523112171268802784811219647855399480955587706327375455490142671390276870145826992085704285009316333150842730915766640756905098976493146286063321433219653665935420866439983282588257150272644402689622642214922878554687470255979591482958074546330625682970018748974949726762416258709684858063840790161017060799815769983037213444687045680757113279551938032875688691734839605221702094505706128770336469380705732594255748225011622063615536944124410729907101068675470160716757041792564862294511411387378231976714943074213972361360323114323551034682028533759351942873080241056340725149031958278111741704195152512240468637335244332537691657296143963886994513923165429090247166597478386896927832997452885291191735319042571688808749088256392929557462883176509892063666322098214886836098841602720799329769582897697557706008397244130314144704278785121602709883127291835911614008328089139858714021755082749339884241293598240119591414832303856482244032351838335412400231006726815116406089156101577417916109776039658757299241739440208224125787527494066179829427401987997696357002588772038193447373802997094716330335610477296334057008037263976385692648273395610117980136491893815068256816700135708013810690082425359638471532846940345886342994829493996501166860205487291735603038812729976491722021469043448838907351667499081667334195104605160664955811979938879076983992308453680553439032822703411395285850461455095002633509121689321374794985609231431192104141859342411175230970764876830820191737397152989170060371123430308002443228902787642063988797633947864771840447359975929257951709494947195062252683824930043611565107816544626662076006579698815987254769303945799583166353576058988667715327011555795676610676938223272721320087196724402177233565317828351603506349095156607152628006604007191459822271134504683541428446732711475081607076669812952446845488579462959194710429391794555332897868389933510010739911337912252098189894117824592061399725798910705194348198318862404170441107032783965977996985670724787928013150697288584581103690215924167337821790967992733557507727327348860731993526492033436323985497033364000569202710294440454711696298629334665941866292136687029403492830737432267170621512684775778898143540223823521388535083232090219671893883681663198795024017312151685033057554213241203815423932133227242278087589944767573708246192815646427766788782280828966199971503038794852822377061631008635389268619642340103930856880699970259088549425831983782423548318516100912064163393808955812316825537279395835617113392152913867381884452902229102099708228831794524993303992987392938844320722917830589840358942191714349414215844620943878478594469433890553234622046886250365436983262332104525850804801180928289092137053236184353338013752604878573964690761383028710356370550506546923958188250628961166929617405684458532817908985082490801465275339852693130012409119998766194419305527653084271073951316580949574431172331924023898700684873354876916156538343226534795445462005963696866413206956808500671679160120437959297386454525417719964123467655162740745056163745292548018565282993069669724833052661691968581900052224765558233954356491760109938301354047277193586140359412423022432766627162168841396018065380768114456347363611727814147410063170979762347613463217868605030180529389366799329358878300567300968395134280264458532474684536709493161273355103168987528840151198001060295689909046441615681725301856582371805070634574423811943011661316717490043068608778529732314388384354484459119885850989528995771774852793351514986528837950258396542123814212818280466048190080293785980058113906868822835847311593929591249892960163334104171982561585403543208237245276773357367709870180206842932734722457416586583209899625055568359262137011156888809422614711777907809690005241389059110411436307330685830770418931479997687861124070577931011384502765653788531536317787099497708599148994300636932444722913581479927933331523123140371859336347948495256675766571652692683621442825604655752484148208961783089857286004679570821235253100373304727519385679207254550485858244089919445568058463630380391894492418988850561309384409895019374428610760254527426345681851288992923706369848641035604289507183405793252128658461253319622520018197102078000266902392354430101978657156513111242931567324034697331999918827254684157912960130055246339244704399052591329888799560033941580509212447536490659182247366832361768747684378327468979275389813608891545908240378474398113050860125082068793962017090715819644961344089727567133954314666910061463028246029259040520873799172795233204090228899779592705722581158939389377718019780519146951236290904101212888300510351133532719832808036428458185614973828859591232582981564298751257008065105401833605304592460719673578058148964376833413904328768316832854834113938203575516334364302354160103723290678754909500194169923083699048963188985921871893694905516752424655720969392656141859459367590333534332410096584180864034937804325095967042119308923772195402441862741152881581393596491804883383503308037384768010479804278765455899887487671028233473043084805857599939323554636620926614426310136993029386171190612245393285077690819524958331214916668945251543053728225669130128397103915422736354116778984877344660967050230704662260486573507890787380092889416616353859531756877639041754883791171848945073542145118349889057945227616000336001834352549975103541731125497405828062406495177012608452672661146266336736219357393266835297557614652277605723779379578048478096162927928960299872021165684131280079021214942598323623687816205000281998841451403909098562512424628768410937276497618877668382473364934818741519144834216186458188924309886185504369003284359388804001993731449256157756465263675721730060066082802598496833844911226243815980057508412366342135468171775995451970243414254030261649819929904050458797853894274655829273605938831011714829527416567239567741296607991653668243827716732308145288277021624963999914427869414012177757746465522407956047625249827071624268656847786532121790929617718875404234015370323475520021137048937416578708825302763465789142398053242099299128217693956475224053909958055242024438956065596940441451915103964095005957962506417737940024339564192146108849466205151098837024848486219137764533814734407386272216995068235969610489910909903267264822057907822858922587202112853283298444470457635315584426423338311926078918785152357219433356366801505900650007392617600361384112449023940422071141973288102785651121509071067808494049414835507526312913618843736196791213855810926117203392180738940868152307441999671596079048959450619538261736750617429064030296859648665982869980076863347940942994246641512740303128676015271544757349374725903556594533287149446264834994936098626099735271412849915742641300256938975155055132072581253231384483156373637760512591863296387366756366887196833093766293450790586878552621553770902881368545425614695552125668561495528591259471782493305440455896933873706045188212820080960485376491865474334357089450655626946598311660700682494624726163541414301346805372817297617683657708054185405208866419262429878008060258590497788638609204166532644380570375602923894013363229382146849512680005220910959747145670530858748566161750261784109748394795559150528386095705622871504647492065184100199227516741608932558843152611993147059608735226383184358235752757295415090776333129284654531768330945969170540091220184229896428797968782013420452110487499359151566025244305203768001755496094152389868077345110607821191048365694999455052399878983737867911101971100196963478308436951221263654302378435427364939831356821325835437832653499969762024317310301025996391129016109739948600387566993650470334047461969506271152631900873880993786302517243560844764923752572778576688301847623979456785314016878249710978050816880842649836411889266889475766594247200704673696346392464048869243538115419558224315243191492794086261240978933520896952724319761751692161795383612937695550412527513118596515614875888382644185704015959277648967053309410577890984012001606454349467441647097413869974806255447158485597562396510965490336030369973007001601430990718936362423864559251048893505278326850714438785540069378347861595496113620949293226994117486384348671200242572837586704956732041793528660224458649322913771555630324181157919078387625880364562068389309927426071012667511288489725213897475593956866695977522012004267558335415083796679912847181668431354288462896834270142106983443921756181780013049630648418830301797700713388160486134896531382053008258882386924643082566562998276597239900244634529086064504058660078039989101468613863193265462752534476061637754117009941218535033529388023532859041690609027945774477004248248451213491369303886072488368385625826483618368236870220986489770489558561498277287097113869084648632823112731764266402596505616926459726681147772726078232241588412527935708696046658811539767717117693950014477776747713603631056261483261770502445467178264428473590855960311828705118713203865584867654239308231786857817268654839204427331328500425325989733481744095209725554294471840599283704747233634815753061604906253671841131953674117668779728837785944089025411723772973487951776810697398181318747820482945173141876836158380904157330999214525097829959708790632742057802811192496385501512839201724180223200633497000428652487452707468350871737895170790120776408939719809923573094771424559577857437850259978421449552426380610334054533000987946802274074936887867411549118931593004469710832198257896846803978488516937456723831906305752269553822040767251176245307999566747294147284625342393008538067103233397303195638720707546592664240232006442764488062242539905436978045083263554989666737369565921120935716645649996580940415418615116265739533957123045292662661678905289417007720131583915746361491356356198206330610655352127710923298523554854819417312628817916935286452046028741727889016112975987715079068401298151073894729272260424080912770932727278589510739577566566917877889705403459312085789475139256096478705221838582408758061977876439006782354799564706046679473586876909184803609798035950739995718764501126730444275087949534447408126445379117597149121653422073958057502455628334907836279403757297753916067839671970961734556096405498301163422626223295104798017740254751814008041504396588965755028536586993015408593669230165913201121391884918031543233555410758270890619427161462215261791136481633164856266821400612442178652433494051914733748172716679353217980095138368126901607699433162656549076999205136858680051793352151425489837991593828158498764630644422863371751684045083240439587298109820776227725949123873751411080520840715410787139502105023549041285601036496589068980613334596268903274390065923713901188025176106553552235693950052412898402044973655006972710968911641699024924296296336536718114995187700540766028683374684540858265354875971037924645719562984095888548676267880847899579375808735133509633314268230978187952789690411058667371269746631670196976528959881254435959127556687944834173792848269362606174522197687265938265780364657680730846594049199268196155444064676481335791651052152936125443760523619381817364689526422964488650220947918209096942993455091381344186066536185399129961876042811800721142546320564506630469262470254013617392796133751633109000664051248654111448691524586527202468976743664633756219209496664606313775950694616427959171294203484688639605070155858968433178391276934673304667955711481587214862439564575542905165592213929529460193437499083763975298133993850925351612405440774906323284734654417137404683345543199393883885178475917157009461510802084867701705641740958977454013694458245883037257182929734035243373810412319447321527915563626916609086592910455161647397462529580232181865038251549494946863854769695324207815117056932630523148901464567449831048605974284373168345646259297561259821155940355376229589689526762644940881734138998221373217429423531009539477256630411505199880286502798514656107158653026033505605841512242674966104175714395337604899200351423342616447873851064687209844315999009765439799873545785513741806331274852516148153729598689970305165192598974929517578711302276068608221891030385298641188132776857531482133233670600715332983844836026536622033788013075081708502127967230366164491930761764712112449765275275909694239456239173391031958168804078308138779073964767227399090129588136681265073990797901669128023185041628408839048513833803105762025418530803863921880573903784997849297074125612358686319955943879946640333140206669283261730740898402565778297249560018483156538820026837159365042478459378591352292858363976237378705905941475236842903314453812910191956597628300125200416810408979274938158454178006507906933168116495608626075050028941799121253489519225578214029929304778682432626105772250968604211653993478550045774954505963633684870457221287732341854891765643932562062618072551558772830397666120693052261413177411930589538494692014252096307121235260940451240388020162571689126341307182133108577359372039007260812517304484512424833317130731549750074577907085780170455801174268803862234859401444726033649252286378478691982663686547201683450880539678062232477415869166832275533492665578449659546263035612818316777007769801235428790978606809670427110381105072940224115544613962399366188621015017269658034217728719531680225659461041899078411028827331529888539954983265601955760465793474032174184049035641311979185367183886341164718490937285334369771764487355056763471064163212818953665724254186275833285427131267152957795977405278530477315607098950886331160914942364703447040314672992087193635008324762836645686368069957407558591316161268036140778839415820507659024736890738915849921136370580237259873999893617273437228883886662837769159084064989943888930436855635411750268777826971358074205422066626255416211157473744646505737021621999665061463550260294371811221778045292269777475151824026530113971067409666510696258499786015329636321977623829038242759875645738139030722277918406378329472692276580438379912057940159488781050343786712050581818238290517399458348011665536015337075435384873985595566292920693804824524662808808884943052648751212747079268401803095657317251228844396898964498996314203624834255501381745566273925884317423115326254946294435055908077437853066142793689188031171414009235702625872101823523212644689114615316941402245518555922493041256803619766851762786140474933675741292127316707732499275367078446331292696668189070642885291074997289623651375219333209236620097010962984259262138026655123348397803191927764052499335093072500729803061990359642981995078079549443258761384267164984489503446112037858269661649399477200729970095959405881586126321696734462173997347897168710806811422431092968494682438570110439388232829793768870554985167019532916276640732470528826116499888066179161787288793354851501158590330887927496173536973984857524278967386452293229977809247354153475163260675272925253413875694310000834656503553857745091763684356190346662982365599163813666578971585210202025148453325933388956796911398502280197464864838167344470575981601828729557395947216858591677975472670395036102212567373716451414050523493312168454027237880604121340050939445541564249930945196100849562861934892548750230970189259472179894617511277304700960984577518349868255706609732322642424839457731625833281516253041731312250782714194505716295228457837677125331038038913901425059785806142600125879630698554410898033674009652435733782188026746460325723449487852422183107919338078176817747341826854749578836423771645079233222368453280566769543554703453684657431264309570338948995552911216005979510204787000239122788888486757713635450060771443858677066326893975087102523793234315856868845022889116646647809750895488332470560113270796702792853153716029807245177866825853620543189800081640319132599154611742826062871542943631069611451490071081120037097880638509316172847768411109125296614200050703376375379575552506116032018689545409206744472224991915830923948467308616306451770747160537889544131008790498052514403205028987773533708631909616009579314440351064166172468173576757904209504862645116009018193853011274654001104358403818487202056150956662868673508457677510233448423986342867319073569304180460735384331958460594030383278217359605612770002807466260746996932486797581507789840632164614113787430562474027771128015816556916171252171946131422774668936816152639375018754177480480369516705573346377349576768752350365568936359715795441923866051902778507591857716149129669082140938098194829886772512849896641220889840103902504872681967131256042120881242668588227508531549523671924042086830453663621203474984622842192268416536011245724899053535312265932783577603312643266031163479508603590011443939882344946011011076296014973506022907734026556465552388107210856301552814272271002619255075124253784305186057018292023339276216464924523317038868560608474187044150602946719401436153508362851712914373758509667377677684658297962853318662197888786974312510194135314391528102420739894567839615592970450823747682504393415859314557430052490829811914728744033544238165210270668858836022805532778260193639147432822330824525320427592492627473387981077407129303961419325590378450958224948378696008326778115038188204157810688678945761957692568982363309429064372459547609024595603881829203778591018955873071620892404480654473735787466719881893572372077841446901120398881990689255516852794409680193021076691962245526820313012631330980422805528067971559314472751793997811791621837280909330879795018081662684447736835741534752171470458587894451598037713374542009535435143698578391781108906422158744153539200624493335586388596900701976660573465370005391156478390337703332597074503983461196261640358774409129938627212052840472687127980103691242848730522347699859571584333269238451938271954756521393402269527647529656737602979398459769949863459656520358408061739288055460211128067745225523724148462132667057804261594453243312164727430781092206757193325363331250766969341461599769986488087617297849660090214869170624280318976087246516112350863769593523168794133660566196499119725015723005355997639332803409162263116457242481118495497835048079787440536277349506859980409011423032979883505363556469255509948525615752246478375913678007673835396997906757056561904271807993011063574972075492284179919123241050052069764279085997358856890338163050626455780328231815906452277154416352178348737096356209785795672334837907606268425294793338897513419073710528956497249847561811478471053035482250637582768509676645165354152377803378496750578765360895281912642651466940151851720452447220420831133494620005337759578637733426862349393618956798248135817438180884361777018073676462307127973880160159760204814558383718057033459010834990667361951489946794492740867061010749044956678148021778116856012587457849755243123649146107412500818210434159052928086909470738771115808457612820177213078100068069472406604423563164738647774002170569834064971136542503542157504255228193756938380609591526983208162631658310650913467178711904801344331728494890118234047357298377171270356409879753314129368498664323648549342945536597725021963519646072792603244592518179726631478282448040112817157071035486754837550174881928056745176214668646384259196299454984313257710240317911428038755912393798011707854462635117767681547637163874640141949975310209739704445492203147428897481958032352895861122591317686247131181786188146762481782263048048880355005865574407387529458249950370219902708028003805735618444548678735886171156960670434343170951110857038180298187074296517459834544782712147626519468710132847156409279991514286913614684894361889870402268001250598848989574772285425894278084393587908464054928496976524556156574554919755883493527307902818938508255528386909236669930240810216897302085271963024188770262859799833179798059513985807394505072026182736441524598703323537334172240254506089521340624547493818614830921673456629983768264074705735803636304938432558136300335657990544950215062722121700845453289469054142172945591321966751291590368130922793094837591122630692031007391973426005623315955947800258625614312529504429092155563018813593890953865318271741055239857706554598751199846081061448101700328708979448726214668892612885340924243115294374089034839430088030623477304705941919910210368126500635753075209867548045775408592067590346783750771278023296179152646491542927494103256370747459599793050503243631120617257831663776154105635083008171672727170064816405293669002181092170907273794706599887841942796458279699835755046036263235252966088753067842191559683070307281147976736690037173802869029176149865766166202862904628293751038396637088846773510515789716694011891595773694809462564186160123779560749210144472856161454722605669803007615109198338167230975773021929390892661295704772240966806554009338161483865894127520358624834835492225554904248649756961537352717800830125135380190699014011684314996418570259580282450569241334049749044317637076101433148284723904862479051507941137334370765372826563031895561936215954562067491206013334791425495280200257447304901489063966069198223552007065775944891411932339405019088534664502679812048390969466379569692050655672337389429952906990288361382277170215258404849407370771166534948387189278020290008407455509202685013072218556741024052710636642939184099163422161521399535264199254148409701208083579842333747315281582990834407479501161900533639798148430936436844480765216080621861935082329721127412842450527744740124691967495469179083151147582665467700010003192956321244397459762482508938160331014469638079580255462244510834736834605142113762278430427183802547535161699717771687002716514345618969501670651374467112111513555363062952134522069668701259706866484350570486142971667766658723004152471723382240193247797431888785389219420843307920537231460489917625064787265146255148969224179722668887686537642301748757226896317925226049575481361970725574666868892924548786569276523290934365424941020036370104753914893693378871925953437378304582329616434681345852034052321045915196874436046025693571817527027140038943273360925337946770087914664801896126171513130066195542944080753513070928088247904809987501661046037937685329095638159854454890953193535189063938060655058454118496152695944983352109583864479753404283491825226251854668662848110940812058069998293631419412533789170667998985609326712453884853090132758203466833154916325875551136336491660126134794482568034763404727067257315992640473931469486936331449081169139634420328631433143427402293278956518409896243552213806099536755155019979206803101004980358527068638402174963387266610388934665409487926837782312326173148754000430242363861838859699844567748889901222391236400501475828788297386259327265441125443940749499813748883058577616545712407042502455022575067829361517317606166944292866135320529664918963105881071380057508057156081078449228271302863806746887103303968712088417756842449110633686106433131024242895560457986142402767156634328469170014990374980123192555576920316829193882360404313947215132854859884146522362156953966092673019647405325838466058357188973475449805328447068203146142327867675369324305967052278946381619394607202419398113204411925817267447821381472867663692550662762047594095676978905471213190836227347425472482426625902298794437103783410427812604181763426984406580097310774141692699414103282753748427374726219592529769323354779941550934798619185586499484593361316277304490414242765175082915802326534288858236381039246148124303217424557996501794173802123927969558209225756533552567517881411660783777978794060699270209810368748751442264013855479382821298494335394516910526144581524006579686605235541425813683018064426180269057597309579957297943322824969358217260665006172630105258465337800523501494811532579098852093425022109927787416622657715755734691521194285989908958806398377276318704000578352745838733516472115511426756329337789803794998832703040826607201791388199468238637460646090567681925110089745667085730714487780085794034916449155785330362856365524495904619765702081907491395100950321879250202506390114396839844126965000284040926959315501525961098865800055777908105195232921176851275594266341733309943815911123255386917838473127757804883717040531865312406345364168880424941581156065927476227533857368427681184779902580967221781400281358931580577695206598256968066640438588590231215291894713118103805828539246122841259751094635722219370566076410549067763997297335928576823193865651522400271751684824589467679372623317086652921823437315661846218678083454603328972344979713091492429657609605822210930829647851511118279278921839372302179779020063283057174509451959665311228822544727689555424738428577768330659312792338316584363860580075077071804135422167289791917900731477240235045094201985764551221245812699761535249266236966500899055668706285650203037127646478353712808739956497036325743739484579978451310581064850161211902877777016055109179384057633165437038435454453857380362409593149365271494208693883352577186972593553843387218892444829974890016116175918262762806737355432522780098470570193737319958562449250969731580237011164188155937338914363477146924696467004582846639474371891028987980403106708892136085946954028839861042912799980153300674916323052074530949416909113037496719807010875209126797242484713532962593904801436317350189906149190130642420736539450695118910603507857031123778185036561849963293829698866907930767328998496027355816787163938614878587356774640028494323323558829831852940424420221855503579747087039170723798900480858618957481437512087027341782410621167646872705012675723698760447986446516293939165179369936297347866294543735462136784871004876428216802377185212176129146944764548713240969031637216709022072687617554456514812125096382270347616951734719395867272368815258812488696830937277520538566134824184007897167037854873567478023465517028874673878731462204149856458374640786145703610602976992301878267942665037759251539817607671872552062492752724726423231248168018127442787768088888927650554075917892992316754775070364151345201658886367963553333947766924089523967823706820451262629590287132737716756321309459294292824748809037862425414061212485643646006132869013383957710647266362386531326911965079276585387438096484991415929499383644138492027438569386231427391174198101554263598947490510769761927256748582776734907388355645481858462082203236065993755342963806108238840977583080296828197834722435933833622078427912998714177106454040886128638702815511795119353625694868420479008469104245684329180318552035996013130343632832047337847133973825091158261737674909851853418805819813600698873694803977847077743965196803933614952021504195038211982834582293473854834391174166567611650058529122197174604308453910511599092775588767224214782721507046734874162652004042826017109029802030527025283784953971857850472294077519885613054949376397749059480524304901982337767919926374602201075855916715968787844092802122915096963464599099387395295126330899082789912166367965591659946456085447552837605871626989042357874372299931275690785535381899370038855302623220594891663446836970803934389863273506723981492190525207756772375503112736541996772418184764681565255244602612373556759095361917904612824469116148251722446327386543940089207957723982566019588421076006165583275335895342200198567138388085671630890244772143980106409960361753108616133986240435719830045728954716363015357456991375434920213921438946919261749054164824896269458148287847445333787971048782319095236457616563589904234815118194745890836442654974049377283182111726359791512070975520077285300678827008426444018882062196277777130615825340481873229656008390726956091926639120885614379996167043706984803616255704522129928872864805291212372458737362823890792780014911468314138399979999325677958478812425650576263210007192838786096455072710734297975520714321145763357057604010119538919995061798682906053834403200078743917394723178469064645833849921986134176668199388306950176702397927819135000170124571255344831360845920828149008302920317014337766491305346500223093635734141852470941929951118100344508323610417393956401213151419722024767920074407838128131909550900484888638585191749007708964898272579654570015731814076117507678181000193412027697854600239158750800008084076757244302493576462813978181974356446826041455111852209220796477490552385921962568170891180603639952188798155915315074163749730282505112899734128811505759025241754104747183414734853830698183021362212900707001799610059749708498897502801018191626434545505970648810018681016852425993861783158004829399341995802569094695767910071743559803548412843860166110176987051028396694605854186984848095265917375543800659682958609536639893164771576301249235154324069015191388538219924771823221863965204425891398561686950737315544556205252463715198001099966746549395012258282358285157450994978319682393935846325047685921042843795265048956853787405355259921728704369356809852989181459583866784353668392509184434376036324860608082466094551242573806684497748990813090725834683344179494537461551128703460574740828053920786799326677253105307874354601753102440014211729944315209799889114799682724289588127874862040368168693851404972237641830231629270084933254312965681097635057647041010894324514724801072045279716178450923486608507422080705202758271544406818851862337582902340810789917866572473574861709408635361730732671949828953195747830628370096623620761861212391596473050836001500017438774945196940945905792323213500226798637830032207287501727516999172849130050675914175861985272352643144808939593321703246822483311050863410300648729181644130696504470778965392357813549031776285197630741778860787418435946820792810437010373711486885783236888506079174275593711590138869036161572766963104470910972817893648154404656865127115236241899973302539126421126603143782534987802251036170378444107260311540487079006026615936651324817637333689444270060762959998956775127626936470232827916509177193977703592967215019121354127674797545054903786586072015432707338089363377324644242250881405863940318607232459823084262304294548971948956410147470334156289494454140106308554400749517590584818805516853081883006790355987661875853383341220082848464700571443437985803652546828280634491226545581032448999353440167075021767326621742181261718246532490804831478263978700937344467372143954756114007408410671118402957641463742732249089496758344338974162404894575090627911870062240504186629013050481082653084054387469728841220048408990112668267475120935246439070488889544336065057994948158019577963025621793009006482410844850676222927063894578040438645325069192533351801336077039851896353927589658753630300666026042168909090425400534134672913354913597772392214270092972247143862113886498579195239050692194042072437804445091534157643962843917082125662376087953935346364196163335629430304106087707336704187137479768829683057139052225032687067485082188150986780632122560012408805731836173350551124282056551553239047441048836023697687390042848024326106199149121984626798550056747631108334630758348658629949627946514249553379693310629047426740239848564548819628018946742035196771267845236383084199570956823142480556949921692291223183392326435917385832916453965756518061963837726167895332071319560756342447848790195851572100967932676166637128691527676694496369199402589385219902798666858342547582257796414525837538498686711007080013140087956250707092306302278418850302587504341529549784466297313858897317918898476166625172668962622311498885601610408772226778415795377738971198767662613136592629868626516537321098298069735253124083795448010521698975457819430861033159994299821648705829769150854905546615122426068197771502546332248527136094533212135701745254410942398337621031928129090582178887070443657230568674412722681825414046857257475691918526985995733477740244162785922400659265588209343869756348923155119209912251545586175220056442369263980025158608473022441872324418376694973054226700550678016985755828747277269841279666097038727632715334480603954505102558003277511562478203601900430712630091874123026345955899415914524106737093479059008854953760381750157482504957842190519933129628861389196190367447118453124723746782670353087064278357912145360370899824286537770765630117816782483992876758113903403363526668907494563459061366771847273838635428510421409915771242719663415720254128853561070070415927731935970402492538428994637695716747276818414084089996567255876051626140569646458181302601148879179053711949878353582278786401552411946148030754739526339154693821199475328942988994834364340599163654875262166077457651390738367453464440066718021503332894786715353528038721362718371771070524096444053301957874905017961920312526470452665325351357607150441750269755296024944473223253592541892422791636066797934636095215737411730931906481678019135482865619733810672062332717246470294285244801432549013072907700821609747095466440450731964235572634735705904827109555840354459983454550103771927270327246442492537754933401325984404958435742331871292139346692266059675868740776563700812208275007979281140457856424469709749312244279403238419804183042782251767820514970601075636177120789860450572227166214883390972654915738402888912894405456466456542931932135209305808373567790324242860468301993733991917585491309769959160581229999263883985016519569867776872935753355392029864274081088162897167683465155515142558432443226004735066958344080769182941027955429532615771844639001679477094326087209322459013737153460298427460413903761765052716713852755754783192554684358631921690091097160427681125879382950160606505483025078880801826443158014006228392157170959883753602675572899308044471537861286782836747430969381113723619198855574728876854151128881929438717977947557601062423952477996571246805971826672639473373697546925778155011495089125287936878026437924869432054905974706274738301635234139069451626599060294836383682959198701266443624814645412518040617603678122540868828528125213367065792854324713342018506691080602050033183507530361263608021456716399462908114029829894773229106807436902095924754008262962849526248149725649199006905691603604397260984276988577199358927879642538361169206579906766591740120978908974708330696222491685072534416826864803322762448917706335211863523703578991925792145669752135515601559833422133398124207820439101974880462402665744263213989347191450053769959796835338363826237993164918928717046151112026345396472194322666586166690328817816192492683414350413846648904293311551347258333365756968628032428530366101247363469044246173288473018118661464413997466535085812010026966904760422274470257823505797496755211055372350603707000684357865633709254466509916319655062350331841169534717487839316664182192028446022084688122308840742034922863037364068010932713925047293562465587493380862422639001023428904107443589286043010050240199190393129403386691434782215371548382683811821707175368494190068889812252301767970359353318247943129602291688015117417116331689788429607484984380381470588343978858866562048262424560620457517930481490774881013574943719010723703077726899935219775329323050350271543279065936295251711875219818386103171356344585173142973586203972818375350691172680243357277227742116488452964814952883016918787873892943896574938988128581599772314664589533104598746166321246792222065778539676982027271657439994296475499939865785607121397653953067685884654248185578772367625283051502809281914472414744356958069951403580954255634804710352508219737557397297880052340120109600926029618565663782315010989545675391867897247192832619277700253873913148584545813264543372370694514866735712116730932680152648205705178547701214579868848515971510544572222303136874544488065360820859918703774266049828133691274533299328128093449064345278130404576912435816796585440633263300963679526094374451375036875793935344196602082936298922929214804070680365611160583613840838203980790385255094018094934281740187050443155673103225458397291720929029588502682544408940467654838309142743692451960467250441203788082458591062193570246683671315481341436479893053978789761723222766810934643053602314309856890947673899871244590768903564384375173383112013801608931482936560320476532751748683794084565258845646510779435161083871807367384904366292194851881928126960251035410847563958401811834995590968011916070508910781312467788004508601651861995755069865355922809990996033320715504331796938857591286843385486448330648065708500060784159117450974088985124750594262701321860309485877304810133354835955208439000872528034544497058388033784894628513211433355921777478573475288499645922477516968747190116396080375069560339123170345792298207682457772598275381957935742560768936131013048449942274921440115108475423314359444886193731646530459061023680252707709770385603159831872254251670100109949990442803362119254522281800396889974717749002680675724666676942831984244037638490103581792396871509749546224638412452901479970664266127689584387897597691382018666047704070705016332386568704702836485905289975819415370036124942839602708596926275993240866840891882592326960938475127223451753201487945420313551184397385976135556526936686154448205902636042618587999608951787807657711952000535856694994406602274240209052534569697921766727344288311781873185922006421729144766262897383795077929215207682031079976273649802293838162228604334826387629530740209743052562788713540100899873825672327976660208320597915186072363069625148216981335688058241364545477252179958315633056191613947006585246165008968807935947308189722962387552645897199908907774878136302731549881845702011355909903821546870625098766192445268701488113516955652169066224200762486090642658346303981258538101550697425207944421771283856435946257251630006014934150504639123760844287153198801469660797746958730673460178847795004720100553003244321938236643580564599121559206707320228025431873250899338728259187448180473307811458079140620821419583829856813074353838274026565558414323805093775139854276388111112099191970707273313845479787131597770306847048425825198742587336817757095043365523820719593141972226024012835312430822379281370926752233422966582332959118698059947076450590289829213355235940703031133137002920824825224411539139257995220623042672960283597526449446533188105454979661276272268252040432269477956154884762973659849782541515697871416103847653355244142402592532646351460649085988456355111269083957511678132147025683714392663853421657153213908731746584829864232736018462599099319268655123878042813099697041907593958115318325886540907691976611058719707737555672144310610314383262310008758604299059337603671126566068030555366174899257527797861562054301951769473143197513501420275458951712938347580331891474388871843586913730608942345647561903820471982881622750253377165131081436798625603920685057825944326552604623645114726734632178237937253131653598339450479722397263650585611553102696937098105817030981051538295305259854557281958458748092612655932833535801374915326649814679581378516139695895591717908373645665594226593512116207145579582514568912317356755933134702926513043462288185818983016893874446744597849315408847792601497541471284455051010836067039087762256740131092726250417875275810189389046394993925593941432948604313569159418906716014865233102431416245929981911719146360301863129659832615834390700477438022207129853902634062522128788702864407563451793927094209301968183608307907880363234498920945292959341552354773202513058856995994308251405352499578204197961839369020460560120234879317314628628368809243135921364884136107032679017032170403668702023718353366588363401332375431393242672584282721150194332670003139569256294705892136104696878480281750066362682969045636359332123444420411293566989986729919305384818770969291982700433051665529500000862020504339393808243162643235845953362055163938640940831455091689527364551320782987034828242761758565453093738909574623868367098509150963844814518962824170462272369296190390956650770042899968185964581138737812559085068731092446861846232181734657877333945539972972796443663079945922330407019390696453326386554343613065025489086722177387166604307001365585322294060573722135669062841284269246801577524851501015651596134912633247741422252460659863200272877425130460530703768875936381250345271492552700378351795035361815645994113709179900050690316017852420489906073292722166132364884227738031470863052128014031247463434414080212560539852874967606118861442666340237634091993166443659967560451283367652289869588653583613702616014551473881033706552346558645793166782347584897104834807626715929208340580970083378984285228854507834742345678677807285451126143169679688814154736665913964784505752400752761924536311923447492495476765119718055807156260088436100464555902063629097446383819405753254644831790950462373053279869216653374238083098127020437925261253738570743165620630507478600772396315903296979451344322915728120912239358868715752860247403613979321113209772014478683242466826175031509476415129629283138842490238847526547772683630530201928247979499038417849240801136115545770822598301247358758883024420811959616976271438406912466700735257877298245951039528101046838182706601787670311022072909610373832654429426369113353317956039262176960793899447356400285149527310016073712854322796553457630738769689408422657449159601265270214003208195193589663063756829027304379129486646296898903077633477800534627760906857929300542067196776238883514222354861811930342563057258755414775218338893261385285987978760054738473617517584121776855988034674483615912824949262001779036283453862057596774460322372403538820284711956290928186708126742852727242886858629666252077697912958303190620412289825480690376799332689682705589137939384507127385163171948597740734807317333075514339713068786421001431050604436716661457574983579678774802562046722531413853744985222249708303644648016162131873808834750210042297226364444843076522352206621115557369801561798953752751408065742797970077573847863263292355761537306076320678790152133871172269248500531226724078467528346775086528907398506570225540486415729332012147941593790007571323402766709913671707376793973949207464918028383724307846990356707285804453303902327952420049037144082387756145883997284271712199115395921724735101754924797549177577186468727010204720881177419140712877350364827866201458834300468886925176602805758314837410618041949629060242874055834653216482902283754307209366204691683317791908022835314645406983163628252762261280439513554343716429957627571129251366296893223531987037644540520350546248652284731214432655316845710733045697711632525730863262385530320826589256411206520468693132011086555082747532633555244578559756443441436672058437943316885010547115989083793122615758678136788126338932898945200368354531218038146590095851819466093777085534915864035604164254535520166151819049913514757180840829933746503173417434578143971425404820965825973814972815430808714027838385374620158931848346886059546901027494815797898575159974837314212973939577360483342992244277333802227056528237802008458451905575680062914017815997234044837109835279599010476161188828431564578195713006323708990657561745373425459461024912720669621384881945956174579463759253784321729443691484933117903412090515918135272223129839913480470463530938778340024714644005132953487842085913249186192834893782463953094256521198520058195723156043432136780769082088486374463507166870145322839825915580295555158686348425147228493384332172741126185610224501928781284120736809575997856784251679166005307801994929596524005835735746007203105172476684567136366169696134426082834165867537558735598918147852411683039944567251402818679603482620806722114647803804814236560394453152048698655220768198629969902114541933233596280582503602532356597254967811609000175902631470601078128972972736690537060695997616794923427580608223352719776466764548349480150921390972863312174726434245903413651732904684202813042658275604506416843909316936451082685126815640726290500542967348403128803060025361995149732349135749667355433998492768162847111783927140319191935619433354362907733613767427942413238108007124377347166530252318530015691110942826829374782689769405567846102156626067369866063823564025539223245416428010505494889290866979233388811029254564305829895783363303211972243577316822998659494648505879954553653547371617154073701454904687339452533989559902387581976680782076655109591346338910561234680950216981821843818647507787461562488682712938282389554545306348944605438593315003213030363668399033664052207179264365336031206099671438118641282824115532887482581868542503488481465864424142289996224103724368313222795107049355889376891476625840681083307700688961390468967897099840749330274463309912150704221402144989649284674191117810615552334904990837718018718370005163399115514139764880137592365239277965807497445070328069330995598191510647824277672325115124238763070285380883623317409149216145562416634317471976978956746681306521484116488109548470125747488612972178601535544657280332087938070752265994548361727974964090086669062834736103015200901838415616719041520490437805680594659174774898427644310283045278343315306741267273343953012531162367143415982621419111899467389814618418535342797345027670558458925779408476652357230993655375472307956150454101821179042606156870646274965859799436695193652188315089382299008140261962561840775094942176700758395539334064411934987223877423726344769726463278593573876247273734011309511568952791404929424691180192839138902857461936288311297516125034501397126349538878862704266708014301009876173474754806029393023777431754823798077592780009528654297168378422555065937968616738953090182142223014300766512472369075852953667790241482419944316292159244902012448120704012830916072788851963997230062817383950195635696388032879890038211681034260868188448111342335139639756175954009544431932824748837248224536779511931061954150082988913446139721271764805318976664047952592997640327769724953509909431365035905124786844425038796553994031610897052089176629372326290313272657192910872388822996433667789417097614412941782452257446995114259998934618520286018663870277294464987208041002278194846164769356229261020933534630875928327012522458042966938231356274313340168723378083658666011885105725134130020192444299704815088729101719492116057467708611352265985869820556750563234343813332250829293789265370032079785253740404869100121970237513238877121282548804493856217674122492977568362705725651821288944420871237113709054212448451065364454409736986302598582690445480773345032642178680071530869096516036210231345498565630888234934008328867305847272847095825802405780370184603795041305279702417217536169832589751349905355787200750283616583237000638121127127993120101984036032647659574264897317876512229233013152450210403213326341336451167791247528992498968027632322278677408811044033528204653488928843067804466627176270599587788237560727685708060976658666391247707272024051144937955579814243553205747737597452152015147916186848666265119481049455496398637176502003627143592655758096485907068371837161262218337159390720624411100613153785873782849413457560598269742703602063472312642904345115106095502480702548112623527604139748827535230002868459440383814523186941315601381739765564220770627840780806332984644414901594989451923735669469107874138867000526101270178917319401564140717831069613445375532187493913364560682317722952147203127836802315585191636878524475965688213949773786000038507398392477388504877049034516559009172277715956392744721012120081520533772536790950762048372337982769647485794537222618034175973745301603898276471416029549765925961516489371553881480381914041825625221042744928482635078021162554641245965596801935168753353703727687785448762535464729223606464488202129897003721047255046003125099723688827591385604011521278142264123835166930481588593545211930922488019780655418930968394691291294853907915213769895927536570642260005913737623951751888930659019943749832413855879305218964992204902227807104386376527846608713469670737708551382908609673036619506775275334705694705891400955905060658552874818389351293573563452473159926671249107755795833632931368886610921625376470658057372554329085751232887835968309413835787294981817428826459101007372998469764256306325547619807839584504747633981559000676430976906535233676144948818602002265224082042959236235316349770012840196601579185908507006150710180740548383905201837769738741889206463042590659647745310523057922430511156895178490722777770647985387061660583550437241881218152587614729852009259397647665492998693979358740179215876796314203259257289547857722020744580136935607283883426055189355162906289309773498771393957790365584027650548883291750414765570214596378118445311713735063780247533417689514233850982323033349892841597052716110274264292328394139952916037263876702685833411670928785279900843058123279136785979820919361242299796354830944853968494297387106076293681557974047138552396828607864594246564699000590223006796896704611869474914007220848781878931918326091124488519206503850903629702526513305166677290540648914096461830339453897696384192265758104310708657012948509185974479692913368925862599590724900599141301910904552350092510621706049765654386855206809475497267652879605939825973966337486339999418290688574278503169124661491994702872867936684501539046704897457108348796840985220464320946023919752942771103454392102320534802650373641059200196030602491931355177635158758262638412337970075386384658949384868144092947572886749015028143928859766132288754274258488646134687369424006287741471879701540245690333012642047894038459455845732667114791061556773440478263203669170959054246336243965440001922629760525090185181091987424237226385569224873904640613227986454894848597119139062446721600036863283329730182123601146501352425347293627475871761446118382631576473534326285754825505845204084133460631854555005750582809069754389771882897819856863779589764986801754569919453309132123283938158491958338961410948990754977170295617483732544503848097388034224522995258960318345863680049939626382491749038570551866065652486957185768893856338517628441921667847390878118162391363473679548359974570834119888933390825701191054553371108298362601389917955071874779395681142137764949319578367641576159845173607426236321319637965223390014171292503987670386791618383944107294840611531762213581670735619875312421107444432441284074775062597257556065847562221677909068619317807168586582857536677997201744779356651208354966354698542472796289222840551152704390790158564545808163012083625860765344474732409649392193493458683054355313416184411748469607163186877447566501646199969801852779055158748567766274446728581807918758555394105624007366511413831327209066090715509724667959594658103208706907543045483965545918970131669975252043964767239792129926986460694633015570831995717007887341099271934448128628007873808292339807449124921170467059006951206174365141301004788174871262429963945780441277414029413943570435793534901077491718682947861924788196939576508418681494453935170094022250838872959034196738888557610083081050710937799754774456776791285973219346619903451046233526680659745745755158749070594400187468682167804935025435259551141619887146869601859154678606028185371665741592390399442977541724646765677635823318241180332061702572259210459493220937433719317035074470748906020903670501847964634154328044992590860015560349569848594927601984826924012864377393359183614297443026342764177650674670716818068518733692146355066228457397798797316435555539810028842345925835178214326775426090362775018181330321596943040137583642043805570041077814444776307021022841685954042324129285483664134527030791383004347954291190984154072110230734953494784747207881445471975822116302206524439702358010849591602070346931094110177290047823412301287597268013792324552889831354291723876573711013378860121761293308577964106997555405478280672075316975094082376794964135960380808159323544930198140397937890174851385995821022739268861306681322651182503927029363492756375794514112285521097851434036596709569915606004976849554178500209717574763240307651684494139260488047846062031410284712302584504663492551986833504008343395510713483559022983139765866048400717512365824072325385137948384803785352431076255145495146971336013547869040787666825510204564756488730592805633277264197665995843358563259153398673309830342745857080512993481845116190693590191437174433519325957239086337716483528065169216282629015509247607195528051977458540821857372230630243877357422998587973146433605423202032635245687979304100844365268264607070014487888397190475307917564615546759686496074479252849670094943454436995630901752595510141216094268600694265931657897600680826684887238528280289008958755088392875422700808782667020920329156388200295056271897923006714786087748565107985383181868488437241403692490327204690921287510922213562378839865627407545560887413472362634020709754278185133658992898431301756331630401152386832757137900527135677273054291661429354338435789175050644831282440881944208899478653504975938048308161095446800809612286831781785015344920184738982161164872791615345514661862652837952333391655791592333050555301070291595526583845389932423381358534209433102508436151826937847416252705764797163834080202088751425181544326460109198686264744100377398224721568731271428325566212848001426497480227992181054457696546899573199062820639512395095481386805408974340644902414973074568137188905026903366207511417185861851389117470660268299374987996510537045766801791103336958169451685256996276475338734888535734030848699625974373370377202243301319594100928411476195420777491901260923848035304257908173897742378563333230674072360747748703962109535568102253607822059543766279466144587938065053710656627467089671308194323953613000446976151782803993268572710941930836993963762962169145212096307345266405569456518730414413527774446388243538428513096914772724172569372298594649000754922533258964786874605227798432444387808188958208057805915165979088553360776728105246718451846378201901141302815541938336747614322425855145819542706700445050384554349886435640593816479707548742544243174218496361882912187109552117252644455560645691750601673343534672787397121966632564714770795282931393432856711826420813463670511549678036168712734391509315450177181805516566178113972606796434526077617248375296685218271080835011304197130684503891654708467943966884796874339980737539737047738521641127350833414554650288843130641078982001095895090873198740411864702770110087255185685894815819504464985499645746856460558014305683539181401735104396863690268808548554603983180564889096414718330955358459358783936233622309139202958972693040810427976222577289573513639803700685585481108168540593859513484271156745399950083990553882097588702914163479456827635633200364815367476785869102531842386957160473824150838767833943012803040019058271320591252652096326598481078576105330394157300912625464233831291662071954252729877843236133040650593332676497412000182506642917778204352010324298104032298439258183499117593594506281867489873771909381900893134914085631417013683127772381264442635874944694939720409816596089754050206683465018088989445764066874925920160865479915345016330483119501972354641834811981379270323466627297120191509853345380246412942995874775002369907823674793770389566702442242821754611332830889602541673495443237433955080556703318933924334908890900821375832775695330308603402006560360963750201188451902363952605025995029751405222588262038882908123563166231189624298913038489795624304073683178227413733759414519204771381222007768552908600823572422168066205783140387525837061319479620768071403731541155082964779231943667795210292614655999277962409006641346438357820341623625892679748838405940494920645361233995330428047833613987712994590638750106553708601040030957921528309734809436268273853944532891138805705184834359579045798595505059605851513653484544737714599308453647457975114236687506189441203624191590958494909569370890094382280502479576018383492988427960784817687577751854118791287161162344775349989233870656161921609964431777348989908862208407582947203628493346955448240602005731646075906674920615195697645703723117574558251675188596980717434807384306783826427927660343077616088570799133469334448333439590465688503927342051373907371230607349903992468756060325584447721085139553958576380500873098809618432343611132996225462228564236397525729455362392146517681374678035783377112533078501254538059601103761025045887000199167346661225693533575396254481120251336049071855498841431247446162701006934023628302035564323761002683801411422753993128424397959550646310435747650672993402884827513753092557640815163114615126385672821069541020158258672648324461338339684750269943527052249773639967861870897765101945559593619231558370462791213364943130608333196022904483248507994517833712507237400690627721025161173538939514852774861158986634286814793273153074731972216840604595937910258783176785107204328527841483445656399235774086133288635187358619663694139087927219355161058939951824496028911841414266593556388932432117790139729454936557913777965639144628854448419224120862605666170606343370792727405433841161097396216682987961290601188131293115001799100611730211691451604052534532482806269126062841076929519899106315573451668193402814114172419275193896467334995801936865559474406454224330108237754353996687215664698806702928056130875470320468324775822826932837517636652602830491309740879065162606443382719033215270264451232562241993132400355140225378122573329326820157580518927318443718740552833602591706551695952001958696442955325554564241793206731621046213838038400056966396968237115497849265769490877245785408722431481766248556266078280889316626947936793067911981577296668750777808297890775855938390038016888041250661457680220069396218187451050363795057277733304844220419345392600370522188257105885064386789133416618509973070980757305020162927867607111735964732786475556383158112730130208164779760836445290695151775472521587313610755155047204093017685742545699425652439863916103691582655714374773988884206521123053410398825089719785983237267428568084084823664556728441511761805947755343269780140260580830919984370139528819449530837908269777641583320240910696284862435739122073693207436802953463006491340737180047870088322580672003276344916746660553831942925964065654698386323870408872294686537362829530075543558173347424466911051899993159809461022255894517388999715999417050326349061293672118003113060489461105129162214608202025457021866465341510362826754151237249705748558507565564892972081679143023829271395803067068679133187144738871048199093428393303544867733085969971249257256654328877905619564092967358696844960973941292992235951153967340154466330419362601413053164257098338474518060355234721478075210222268172720771916139413605655756867381988059357806764686196139649881088469100666586003904957599524016811038537926024384562907854055703012437123615847617318378908954131992257662887906348995819317156392616142003139227625227292509592182243679939749303268010224449138591586430714304625998416231591580404337589159461331486429180119245005450458407957157755614614029428134183359606825797745055340296127223595098183480565684123297819167984334391315510603663534762500889240548632782180047336876444898725254257678040673489254204618660213869043507993449966025403328117696484649117042686294954487010288743391795523470814284889861293486336407695692178075533782327530109304426044868713869442461783548029100381943724581464320506741585553611054452658233024219639156979817212284405580594172775469597739828435123681243094350698653268867765545627792717630949467885741218088979610303655174255282844203369201728320468268311088938415978435448880908845307673145581620030241086476795479250279594482439914520462199232861495067614163718137223470576488179179577533685617560149404155106331376628356897472090595864708515355867738293852292179957427626861760499644959034101607456108457012085580075869239896752437523577732099030907204797507734687666881083437655549784320545105635058676136474513259339995955255388677408640217546547860548459337445120035878631589795478968569669966231953590616198382441301635124310481580564778474954491898623848795934149634864973998826805260240684422480811489708209994154993013079172673375544152051050577140323415820193561174133235176669250198244687427466722637287785359889573942384602338201949903967066835167285354051360470416362231737210718843589754118009910693711861297949143963150680254545127796902195482094872143254307928127695033147325485443820645602008152907537047399404078276107537742408983658105700661081837785899959849761058531417023185037798482760420706829882445414476946101443009365253058891443083537928570969800128736011053209088529253480034103895477115302701491351397152730164675297376013043284587201972281823884419604524261861850906928100441003336217126476059254818329397420069853477265562271465673413837098784573488165262359174525188672003395973022665349880987406163251440336752083667565294900836302906584414617013217631818962913652089348234741875902140751080861128566808834628766426487274603698977451010439015325763493899540000988478821764904671928658468265972670118749494537009114949160331433918232039388188785597882713941995328096918761315027612936732480832755033204041538713187613551192721100961745763651487460335654523220285746796922253927208901592418754390379494647024295303934183990187919926718422113871786511113110410971733850106320163955312801756758314806127028467792683992274299932337715146744117538265330184488161717075596604584461284469089797547113744464654994685189193338651238434337966381368442345200379294726933789657647662345837397116736651463099700419900426977214609637165601044041260575822273579146298389059167895778659169800114759985916620229631320905349476251753338087284346961938014123080109183448676935108439139752914589644770030407129464595021714970493607900203346971069364590574151623055165556981740414697084287265533288912544270570942499731529488468859501739024165883687759643788508299182987346473301433193728929734810779375598844284958549889001678379170865330525445033730717468830083207486144359878323284745702698668440280410332428939745313673433445967969462628574872741811780766091497257673912523975107418236980695059063874689574372822232218843729355540555276332531872655109388809693962988024411385441531512026247260521807583846912487315649107292059464072514464980210324768657856212542473831878859907529428912648963920840080668500535809611980741666442225535503579071536225965147270435613436115771910993556679188015710701145700526362003463524980965447283002250488120715167921268200693463312017585658808004122966956459990958639638644206563014336942454687593943578660335180459358591552880005144346076730305359808264067469418652470741336171074307689754317506234491563778590472439184360566111185848461894098677300474599834738656776762537706357558936261168757359183097649751375578108200404654838869067758704959140803015085773802653830855292907243437246416911768092041798153081145778273019882242571470661102681762363948590495008687339530535530886407829867206323733481105138657536883433833395401044600943616864157131621179995832744189805753081083708302642724092483172532515533696369266395050648469657004352263261394118656033397202786753943483461785295091584324107369586223036958770384710076469687016463883527510340845232623995477642163470118611711036226314186933923830650683447342139583738396072801803505190566481531826851055430358192004926385917488269317313570161884326206543690890760384013927376923486931419791296583892540117886332105740913759949447549745925545227738005443027205546198696443322402547535750520025880001487290025840795486876608191620511498188463622595923821884627685934322036655787040345272812236561333788094564998727343430784141915860726035191329390350496227977231690242047254180001991606238131298457754530368360540048521535293853014884971713609429419662249385475425736563620793450934734408523183419241816390487721155996848186554650607882933920847594409223134547518263550826010622198143370981419575081650708728589398043588564835810792002603926009107586297287752601983641730283011325399439635602064762253103396543622566655812983456864305390335140993497121494449063175466523564746078848294799386943173635200441006768472498006499629331860476981448672454750802857837814804328488636766975199605247776891283231901093125312531107041711100708575425257696567645203387948854233317553956169482413533829631550423380760846368511138342890302546365905216912042134203700526234647796065374845970888789773099017718648878854502263867167187152029950281346157813587475091427205221105401480188119754523384716429778683547182634266677368267680815235239998935910873134322532067139768729163595621500977884207415435498623979388728032815656771860110454628840065413579611958617835557769336856721275920003865541193350100459098729169683328097301219331508503859424100169849909639382291112878490923824196152217056470177794234596494662370367490595411866288887700220474293343191346816746542154803853953145347878312065830677653308718721578507641126310668379662872090286194004837698678425321798784180422487886126928433809229508682857092688112744506438972240153450866338467972032431444661760539514399964102679564537971207077170248525165477778306516135996389210619825708078447870899839511673885488069194964041020822903418301891953690178238607557649053450814624220814270576020378186575030204674710868720193816816800767667997398247730853923211941048288711740071215054057603633703236631942131124818052824846607003571098620513187616608006183026543684110442581809961885599099450252996209503972915329323974294861730927047618993548737702893314365147444877183597252760003437267833028411469327804038268848933552988201929692280376562149330700057047528212194654219206479645000382244568711743201898724049477172550353449536671537768481630703582378739252392384596316008339478637649912116381807733048918749088545701986264541616257690673658380437706717787272746208801490598791932248528780089907186699758433466338549606829254596187928253511334398022979539626594034475810533889656134720324556775498251343794734595737276476984563906368372304072113989162016546459774419655503955431088282232592759420521745640595157228298909115293545642393179142037575815231461672347628933225767037703632050793796992745690606413102562759191631516237747756833658986660970774594970874242134766515681717529924669703219455236883321863101154020593533827188032931954723019620458912777080557206327841593834588678125915005733124396761612871868362845839743784250368139770469038668362749072059468007833135907022391900782556658582124844158834812813571019934090027203851536240679670614393269199954867102186628357552959488220600196665783464001463201555616256730030550676636428464844141809668331959147126417314929966779610877457116950433418731973284619469370885417712594403941859404283029368270078922297452390364661939906133576760929378455918618431349960680863959750947903150125107998923120201386103767226895347638927431675645206096475632372478277110988774749409470514896635467221295754432410774013784660480852598871903207495213507876991222031521412993154945760534607620113173190995839569121264383867496794131558226837729135937566114368183410301790178336482731638187187353763135438679345607275808890088908678337824395696757348320480667705471550319007199005294441330555420403456467242481601554288046901577624378788574037815057625631310889624701116392476093006007918992408515101722715566928972697527714325696619265474488489519524846411758199429345704104124305627686362878628760882862331165116950592884608866358908111057195155736715426799137544365269434237263652125272678883036728125350880700541511340125655707972783557328481196798423714383522242862678494851887467533984589993298764492735767890408533804449966638761996207517857296117677492366188072764566487453064522435576869359490888711853963133264531813345833497911177069926828386333926613962087973564040673359730439366046566590871528326511978937915309646603117122729042603353985689163364505905454803852942742546244325122858411874065237119223587422828492556528931263121719980951292963984521685131318747819381587667398043245941363876682945161085318064301947920430672610677092726214312014509969309645882179425355909109178160530499180444529706520535251682941812606826373074727096208425775433142223318870134319765816204618903731503586098943209949184566847366945574024900043642875505249568849164022801703888524383462300412721220923705228698661468387240543729247713348292404232761029279126687604730608939433356997633369619049027039016852382813216527600812225310886357452333408794627838814944046622063189085218247170658478391888109185282195503889381139202406632666901798230453156811870847491456641765021553932932885289689860228118370462806571979295756718543432612413834129059747805441814880073283158941310384657590973559217102633772657841760313295924640839433295446143191763548176887097962339139242096501266692156505423951529487658941390251882810254735909067641962489285467527451138121839189064396199993967369212037360404477573855012881619530151017177568066466730051578433760179375343505331336720545509202956673862181637249782085377234386281555561657658173768728986956583396452351027521829546285298600498873941947761208911550962363216351390686439131226527873484356457577441581468810463836833511918927072343913064518242813383689834348251586521333223162704516154079665459323541791076240655199870324376931657285843652531138532353382144179390447925830373012856941059054200605420646397511472667172424930099516211175972053233608021992612596771769616595023841103450942188563632963037139014510355521921314081775726219572223926127766282821990840232894935593588176150179231701240085136328640355121723990999121545614206375183623484924625323323896388288002104344567526130878327032490257828919233837156237374703152702910271609045840963092855811659286363644944356856913279039386020273558502215133479129581901191901317944630443917431155515664772883153186323366979781358469985343145221815375404252588344050283869292151960702249119099717601855648462167889740754716531951305541040831085990605934818131640890896047083774045622187541824002016325056238768397960981432436983556019905406452301473239721142503041651454136409749323441136542338212554197605735651276993829880442970703938396966004265068908835404706257802058339937206522697683590096082143360832311282337217392546088121644799306454533064841894359652437040459159640221542372887854577659453900383566477762007990503930350942988951818285238742993460669561230171299406487811246397421732708838514282182579926464889223927541785082166258742887995421178752172731497065322643078771169581601083344858061584319286561817704317908721720119394702154811940399660037597654106716320146608221533648060630941861474599269274053714896830085909059903570067765214756776897765217288567639864052974723209342187191967858792647565198483746164778267772752956497671816559188342838333740273478928550922219472983268288509752484180206935158373150319154637971828711092008678765732651010806870976483524415697728344608553302320311100017749873365326781073932053678987769277166811433760085973882572929640148327093305295202887639251100962375300836595054308787844180047113091618437786289481873307366828739139914153407987243544591682700224000591978835494520962940409181320267766400974214287802363178089884430874400694808777382068050706239968092882868498500864884403093003559489940535107823911899045567846408125360451187766919458985635736901209277581175444792842092393090753658106867178378685958180476827602388822028559899502359290251734022518835236830336411367911432581105811555570644979545136420924473409738544001480343622825558197068476581142514365958719266259937058885771253181919122662878922263576614212411495369866927558934076929445251879373726311554923558582306947991695607235584115238700483539807432055965057650892500794692545813682966207347749190845211368734380386892464072400845580385936241103097338138546907777055928227028919029993993504252621777051690948058562923602119293847014866207307816615114824166755488045549564480275004280115222854051462231853110209835430052761162901225274516116686650364417476907295369029166572805948061904314488943377268087814824477708457046032126786502764170722152170273399686008231424197043418023798650659424259471264938659357210274712646288718919604904987660136286715951697287641533010734345017553657376038434075945391101250211763708395418344928537637436844862992191508074374963564016733961418379477583580684599210161170614206712507059788674210586091580751110278156862944966395147844590714062293619756622664033875896896491294013874678431850705134189947157305547662444613510580692620175526783142809856221633081125851155201753663958602354178334142609244004733247577099985200822999723953795286532554665351029266262058987702917023122524983680702337147525490832998012728414805906422755477256038678975454480962980806085354499526227588057120018126286758221015778155085600322451690069745304745464712439396447051552601458093977628356804695798089085775345223024421943927731406704123398309373576392297955364971413592168290491795920050020110643398706061979618522038888935370441753628122660433395776386124440880016748136430900124820709261376812219297738167303547099541446571616545843797493170785017678377884866085506891452989936699897675517518798945929841646979011174719153301577668419656262709418542853673846826839731763337799859120254883089742861509167663056376306098878534898203962773787636845543571901694259540634143864284027607065058478539738161980121141832151454873814414935198830258141159175087083997435501143060824048711777961770995945304274562474613249473569790358546375032429699697552868594587587529690389934543888537094467577433130853604513049676438976232912696088189434154940879588008960187300210541423880285364968715945227418803516732281296352346479970897948049779792013852561522640322364480242288280242651268125069706509104449699650280246173953631655107000817218112028756962371632346508803080083701497692094185020370675316190851080994203530006475798185841493963946404213790346550661123615503904029793013862316500871949445174240743340373159397012926846298739383962522559683369532156091610354402638350208324424384379188800084536940419720547009677002776596582463302973216070129501956496810887583857287732981943333275572891389563435417911531311657519298756667190145225895811214204875857762657190835190000711497930963414908926265197820532134633796368931494358449923033929260989659781976606355869268190915837904770887624817964431791509682784813960208667080110540690363045016319270338776517026736527559368907844378380043142589925891924840566654501853685054127774026151722481767924100874137956462177436033202671016118276276095202488496791601875494798429040606183841682797108588055299986876879765782019511131802365057908547580438781530681782433891555913293487800082600565552271910834532690980446811534129570136145945604629720478134911828117994496919803909899185393755558273012200227155515245371480852015924423072586931694072379545581904583651016313068624281653590932039370820531131948161982310246526167045941932571603294640679661611106621341024477869414575952980278357912649145930479409778921885967077772600268206755973431185096250179433587609386795461068053197801623553847365138740958176175809189090576942406890716182413695252472957162249494874379996858452518255095720000725990990020595118250894861902488274012858045818741918636679733298898207677962519231259212364328788771518086278862746861472439982771527621403606371210483964123871336363183939363908567438503398536040829955636813238513731936664570062349279659471296431857390647873037525349252442569358342892443593213565502886148698604922688273671229761116509633740706064375301385923222087933665230536698162908728032078137196480872742885649725183091277701942656227374647243671435602795573253951779170161685544939406112669250921105302688072931164445858939724641020742276931000890307335254846542889533976156138356539260964614632029765474728256078850693972102112295250411704638032836645459736242340932646821668122198263149490584972161181588605674402798262475184156515542706311424441039399168063198058384665742411791181459722471185225283217775009217814394330930539786435228706906283204853035736295476550801514584785267503582208317512054484352622609922051981008094044026778562539399082069898737590544938514297466827996740270032911091284500741578910147012387729468404084236318384895224398497976986543123754621958968349472141490659580882273495508355583604844697099954287469569267140857207468714866384667707811889366918473344854410725985390250152588385424718903575305739800171759224343957082440698163721550856501848856467665726252749556678180410456250526782915054813188888858525463044715000828808135843209829797181922823491659185629967523735343484980912612920359656009686032831123359196329116031939071340471673583578652683791424298163179253394448725552625148208353550159467970088537759038362913601174437972653411140745567033968577207980164720110109166840043788972130031277394258969991704664079560427757186674993350342320449191870343941694031425625344147406978624703713300901516685407517920015265920171935442561609365807075695709434872422193088997045935834576062011709068075491807777022756955415744029982116696484596055519100700468340813685473897625455049377848444539786958005762693818147120480595321070471553672405156751259941156406714547914736487437039350092148261350070288133775831599676096128047139796619091532463524450296747130101740426140369170300512793175018065544199621425011246038912219011104304152981158278152518046855762426496160448565348493789343344649760942866431744467897885581660774476091700482247541303458695072742067953151848374327137733030198389178766782010647583377144278840078400578478784624082723897853870354048207478510688985095706351591874777405994472336200647856778247693405586132676769448478453320782403551819782531528709261975371597889355044525615656941459933637960350568004805926890889304102925828958628028726858013466871159824924556796167675843212609168373010603195900597249281257427011275491773457030192126412677537005341370375968008662471949900520575072451091483768369859385207184376300724279557509865936537694943311436525164519897539275319267126851696186084267272005416747909865805806281354253385784121225857789000866128953706980542722442360595909274867509493504571914910923280432137949393201746266113518075070883591528023289685644691161207197437954860426671316792225989108497915783049160292058914273963183764368628096305874781101033083903173667630185969060835592006504183412654941676707099974964257123864567768141537110638862255763629140048385273174505646771969176309815263041085687928169572543544423531720527033489191941482983078680822372651188833589517198933724381772410122278786222532091549516419960499023725188021702404884358697620606845543832369825353688100145933240669866744739914972877568452851422292994412033284336836379937743788605006882394007089900589781800947938681603362537831800906304144840922556991844797850270765078479787002630485082496169518097543951315523172562865287674810351045117159767402415766602732011294945584977744693053726718493893784435745477560738531375463477313988084423982623053096824983370355886373611371984215587597751943472793362579171198328386291822433818707633451400618961107124766234046005424231472121165370122583413586764867440578857868819802485886534059266919663052549633552338003431572342035893900937127391442680600241195337164289348437347669615203762489856710541307848095696304046763593192937986529312080361359241091386715401537857918184973783213810652990370275906774781986907801359870764156811171490421870796398414094152724642980005202721573096629523132045207140551104274797445707982564622827929229452247565855924169641184426750844873503397882989289484127262666157313593708850930593303739938778442613869157032116601937870695318754957766423286445395651807348339294140179552754486175245304980745832061913028342826144052844741019909154395088736477500765487566381581312737982864397554677607444892270183128155405706451651050154319003665632256015876009352526835947838017749140377574392681636601390291169673410785934445954245362743986989399925506151186049819751005598639671041748311648978609654712048789350490583773676719900635587516202752505279019024823965958888188859705731983228687980737508619228012884094276265934611817085391045402279649193090909213420513540503618865694288869594310241357374680035058743010185683644195709816335759473129308286004984635466724356373557241944768719791603389602947615843809220447454632981387460663816679647107975933828146182325291051205889431432169671697118438443223060426799185992521533687700383087650637981419394900465543016084159623133060679713004785987884709169098780680860099013323682520230392742418941125479879797310505833863201642411551208835962065573833577847193773124651229974724813610277311258790580450688326577767304321145724134152569942749305434677887784698342678667423739996399963206342204457645781086531958609360718515673494478509796513716677785929669571829573365045654328950993431663022936095564888692302093108370837216328195643521044328515994560139117088455624838094700818258920575760832537923337834545267448199206764958684082136573369060319643137446523695400870041224689309557323296032570394513285078957197818320012473834272114361154176515815889786858924220991655531407361995886920931450166751586778425287753030771818801807675088744915012637257022190703034459262149514957754113942016722712291322257513453642530114997485346936545628383315534958625581074440771899971638672929604158273574647312814656964981305355656841106393355068266721547411930419716111310545573283562969859800421515402880409918716302716252007071078683122485207885846575707689449275987987248317943041296105404013118954562673223362172163919073944524013278136238000892629108417170930839030360359283439571378208627376688313479028930481511453189635233749089323631515638192459005139906226141713392322986744157752819465379636038906438202149229539522097829877498328618534093744080754478084407732273574471363612450585882504962394936261223872036609134557100239911027023138312555519378681283376290127269854294052292774009286339175281153574412751397070287525627951023596803727343224123317137466029196400094520241277409058516256928212863118533487707799887942201438793975945975954452509436366400004763435539337115359223478841511476073917158022519691175631806810859559693890151201363156237405941141597931390254933976695489084068326736051932117494936799536482052440014317020445899722984402278896640709462372462011255954133590622744700696911028697617639022629016380214894696678162367926808737514833406545315215934206468688636539444674288050055200481726434941174727616694132703257970723874861426653450603980534657927581859328383550760013106482510146560731597205892893665546840772606532914589405561364658764900715614719945834451142013673555354759568691454803166690030762110926478425917207371139789081188462313079959056790995742336153390989949688762324262941455039501229954975576495844985047264679537548674174832435827388471531606955223413408706900005676668824309964495586698013111735436863604327568629188352862143067723757596186861060120974240437606319595815433372382607862669811693802731238861581188635531718211633811693098711420420911297854479349112492484262194342048417858734486180911354061287403553533468027458815381588504972213256154791759638998389607716115201432942829975981154021247820121080981284392727664984722575896474925079056744819581784814195072440922321832779585328178668830145592744508931995360125961047650747187451238726201579435302152059047982600684609751022154585869228889588888905718104033239256569049678106874735384532925197975609381525125380288347613024134065595769499000909424437209238300256538645570585486117749593000535362999602489092903601878539596477031449916958052442292549023693274094944198858841647006969155069113429626434051136511174342279507768464209173205590049703326752293651825243966890652193953315528324934853836983299186131981292851946125338792090181944635692262891535868943518937746735840398633986109115015292130801698827174874752623582550747373708206744418264979340689151817765050834652978624255095064687481872092262295658948558024972016828660237370312821341055606787671769171816630043166393774892861592411596978662976249724827837394550224695733818796827064753237101410363254014470266025862298191019808149319938676644157789684261341981963702228885606578691056734273020797475936888592789065919701797513796600069104164194901404775674995111483262830552975670603184651851668966552064536734919985892964289116989949080514623409057308565662126596362327868078356509372300994347316573773064344451477430287094118590420180105488918386057857350202979231592398128166932393454904964634573494028274284778489675217713998084368133407132509904255585540754538852616454599162151826608168734471829559809053844456782834608827524776860859964318182640415126027877640443102884324546514641886536953349525297566493963625970986811626266540207598800651690879915727351977050020731797204739826475985788142137747142642837821040456924505662574322395901428757130463935849006128311037630746065126360557796328667667327673254996985505847021176279963036629342765126778545646145129645746019661786749488780112152407021401635828727958966584728732734659342778415325461116816597410755477614511040034175857056539108873262240237940825056520388610580486805975340289776315027554101678829877466448481734076552479259629536583521423291181675284771101539900545532638795758770454542902227086448933652867170762413274968459451337727931118072650675145831569121300882732323924966392545379918444689249606276262974098967019330069959916545216889417437596408930904137268272295388862962390666730523806173516622058614880003249624396938933371855454362996704122294062668270963063854504827628795905151026539366807779291530670860348425381987975559577795809811546635271126686896779094632020468263191121006917934076291892579519290567004093174704001581553972272438391686411834914242186871556026082188306563311190974131490824639755438585794581476389593147340963872396073122530061489285601814947394573485971308726191348329119472113314676895662770538404947593657382924382660649786675528565163415660280917003152903604522559491970861771668051003420633789280116082079970997817198793960164923363617169314693470096281102935190673615378330065211377298736502415972407778636457626284352804651165425798080869018761031922442623904715132847011009784314536338403882856943765231320233968675758453826118415623987605411918750613179749048132213288926178141256202152805844704479718894061029118454692213136112255808568864614594240178854549833988012352273501968038240446907910956853836569777804923142478760647127709714727338720129680124252452664065333447033498613242439961199665972697090730262965443366933371138735032300796002420362058652108892099212118036627895625326434520143613845755004534600261338185314620684093277340383337398373097880166160530483904561758397177117990094336022729778587360567631366185773430454862674519897997090021008334258059477645618124943126365501048583141497065492117699564265917099291418134280182839531047887522234438719377110387490095241348503595638745612278025741849622330431269520817799866328825518319949576973497575490566468171327302688357159383332496503012102894295779446170627769390925418899789808863374034619301471807435858348618208914074622797135056681761925942334234999410345727001824010314070179251398711505714170882464320748320476791431324101322746559003047475882922084189973798670640757210707305102240330356933250788386347910986599139274561665521824970460020838017366925242045287318189621316857939051590297039485309835489168906840665438732761105297626374297972840723352293579647562327890258123079062112536654800282270896623028660700319737811395027150335586916031053114483892340549095066062988589616030311964265164920618405559719749338823070181534113712469209136865159705820855844346922116648048281921610523774321140925480921100060755380966416896843018111565623172668374977925349325768705043898191151646860052590093529439833724950467829018423298889007336121379978376451819943081678907784257784383290294548980257917775590052617493655877416931148648066465687048743960267592048466545473005037653844631251508448224424209640851280760180708117355341924004760967332349521987681350366351383523795289190588672185946215712625022670277390781027205299517266239734399700764511032346357071318270729370773242604438326242008259309101860198672660233953310947080789003454412157816180194652141468303767230450709760611241733047772426664919403811391925713407120952670395438843601982159188247325170131770835912093079002732676674848260675978127954058211903208887198104044122373105291493701380101462497874162916955683072395344092896424465815199571151405449717779648298074082070849378115192086811125050069772114181819205935905193410027016218059387039826248180628018978210047206420203061128395438744484630539619074940413935702502177397502208912258041570192780683751591559025014249433499192466914267424124261887368342842236654653764335411356159265289667764273930279547183453871388187004288496148000126401958461971715780852537502218633064060620469509383275412394215972657265802847875747822997874291640658726328644056126255187768629650587303105401158994635578270567300611230984958766133246090064342301664973576528765844544679293578445028987278487539156219906849706831711089716167887933301718022377031219594001850598941056469476327941866811862565447437497019223447799746784348807223346664088479202493285501277366158550606111317207051468519292595844558337266618132770530738012387783927464116907141748911476124809316947968746389424158822105943280719618263482220745991022073953253243006504164530530473928575332432001749395277093122140246460744532196310728248114153986907577202337710211601508049525257643747672332554131834440098193840343917626697135641103506901916397599186584346782893337725105843193030693511983741472162157528891924555520071063245367743633349952774594883374068163732368696060870803404203455925000134295074535744800528212067962194283890080908533906351824483577424450578649810459232731704777089189988530017761237907127760743776466595321358391642094703417359024596783573218145267209050668638193500217201824600069795535823477290013635835030908710026430140042466637822230679402643385920061935537614301709674462252895946502412242038366301022316129515680349903532055523068557423508631762805460126822023425065039227884747512056058256946759636014344978333106316731853015624440777907984635302206178174412283556483451748332612950085813238722854913433015797523256619428941992959652139537554315727099658909549927530427641042340442455814361451373155220163887060051597033760325458007982879348761812807615209498868587960822503684659169956073508985974626114330504408813307090806488217708058663815802009176672821312778277244699179842762773556556252613913686099507946027976044487013993610574710761221053813070128734819537297507094592979142541665468227687249253824331498177248516273192846890203437686744072236228591030366680970366496563454850016939641843117248633829238833793866167132639218511940681233703656013966457519442808176782116265957683242877968963702120269832710067611220305255538655463768021585724615288031346551911754321123104973614258878402975422812544433857070184820085643146454224927391481752654511868961407293790091445753939329090924737486154276929523156234042297904412247494538453088047437029696662163274491213795446823285175632347401708129741564563400445773445133039308064398278762260353071118094294731256748192082337241795924201574028431311698251040498033630937059529890411002652645887911751698959716187711336335748589332322886534330567363866048892262207069835752603048189925192071008887554583179912771685356330399777289659570637534210344243813150404688979800518879963300402952594714300049702756663133210612179650070010857598342557343710200209657343182022350310297782099722598798984735575123720938950038298221428117075511446512238684252357672164567858885741866435167662934271853197865815341322033319513979931653897560569518326740474433171718650206799787872815914627486091929751867154860629285410903043380572753340398730320186844718700990399771410325497851357998160001836784117565552666502415717444293746979178629126334311255779463273369703954871305705293483234629049004724456624052935388448829033298060550257020171735877105640788117810012817097223402073117494880606209596574763410475806985961036445067700135172586844438819209753338766640051005831968608969491014844466366667874680383165892713599764515145037529073974119881493649157051174701375833230025544191476866968226368410744949469421422965089012919955240718558552893031597096236826906501575749065037917357811542354032116453823112820048902489121736965844867634096890088823713285784701128770752344707129029868400724801099740103049878016171853108804825520142935538943571450838777306284763075836916621916000639516147970094935655399866754300211423123826912151795574434011837766965480988966973212751424165312220963652814768670192074831287166115182014848720377081755130763288845071133378475136284268525588021625824792834719877986489580648739018171121245634767402587451555007813551200564463589429043736987549525690195445582308699789189817929378177774004050951424873767245845408123754194516546371643405469262972361590101124051433110194852940675592494959345150337410212728616644869559967138260252304638877001794915870638500836612368139099384574453364219684250903467188412510231369731610152522870823278439168248847800213462392890714529380751469117220186108919712677514106558588507118897062464025673813779891123847821430740507990528715059315239591242717860372495775560632121131261992662062848562770104501264443886975519221911078180131773039963540239075777940566429848869355554712774757871421793425721333706968054139108221112605678727830762409984412811748162797187618368662983881914375741205720129987466179891973543069779284801380879783425305657204640490052223588035075526380193161096940585463759236224512309532572221605667024311087135313636760568989753127497310723577896107296487182397313285446707146908743391898334791282759383879882463387181709016410050104992046506088760640344086873326726257363995267670467108782896546470128014145891317227554474657852676727182248479993456645231296538713371152210660761234976731632985289186172289457429289419615729127954906969278539442965652991246161727894296893704013187970814747515215215445794865730586708486381862278573388992071125686846187118913006301120091765782769026620785380098789277275370872241603953866712336636438093029132058913576171508135067957048180614494817974145227710796267519794239347664306127599873092988245689965119357639153424218581276988439073462394649406240870478931212560698160664518410556835941554930613981219062909639606464022679636041303142769038442315647034945380265115071153318540334039386322797912906043862242610563434417946305245318977032953807260092043947079551415256029732988373978434247402756947543860851202758556729186800309283027228071010141225796084651011114144396850587265099613971989943145713876550075886194651323541174497424471225850791378414035220412168059541600420954970053674238676815752673026902251000443265907079582704380339467441744551288915442041985661072156982243137681384605187173458199298087111723262334592874285317673764930016475565776303770445669919617451771430279814549762394390098674784044907067495274424742322426936304938032586819356066694725663046511512158244255805232048683762837231363472948510660902800279348189749652243821762819887880591105978476588857950638099994815421999278790303565774212742311053561627128489741490914766454444000793512453296267058690832018524488606329921969263902183670818878345930496769585801376438301676403838003055168196362605031210978346150129628963156015907493350342979050641960664301089192358018653040520392369307626463658630355294373553105897656145787732511058064698691982006573997777701200073505796217255955454208975942883218335420904143403211094587492758615887014372679123708667103294968002404288570089400244724241617384482400226183646400206163451179114161778055225637593331533622583882052888477157564548555835039398741692082144650500364411637180526268118691511546223107679483093500696782500349632639442184400559373694595873343544670623557995840633991173716677623325111108645619251009915839878023632286604243156708436449902546549009888807003943869729415922591953699255152640467884402225380182560297031596353414269101897156977975642866390729856214753808710474519088820859955215971180733636146689657133810305162023872937553221287904638196439832394683640650469857487098595751908473579274742402387820603320771963378806323784635807997743536248691708802999413010844467810366028740166651334988340887251644771420958011927515341826725318587732984245860309852439587713041656926352038541521253598389613829678060221095350452840577694273824951298596201429936771855002571748619198782848634538147265876636450671977266987960645295171117315178240897052676608622286102065041016012669135106213274223090289445812152873150888511045660838081540612018873071784498072462365032449512265558389747421694486449357442783745159430329362956755493522321375536342409723968340471478185291895866881237909728265014073901838497846964827633129788853427476323699964373655614576675003689721324006143017671437356270674536462929426004653910182546211538435641908472619675547988457924458505337639629562421324928112206742117638573554210428268931363026067258936958729488106653880332510476136126148830785493346706852515432249451961657207649921506668901048985421185432164413437903219605757355852939427320454774452826761695230167307972442062709334836334145715510247064728373758762975206094578474760071995487598006997223937458422714712481047521805546582373263263162304793520177062083958474551741520753584078622422721474837004186782309725504052172251093667153925704598035687970011171662873766962056252316631974139887398583353539627780936158669530336466011074832312503109376652312069980499883658637513859601795458952519447796692936995351997728523574140275709717784945588356123755881819851237222669722041680329429890502097214459381486483805969202022719538842447952189780851584954791488991541407390408173767126510951241882083947674932848930950267374287038923764364689489485538137199286667513036578675070038283176338776243684424469191514787393840012185769596749348417047324827061136966273269785406355478822823373578209175191852330554889925153654525132526658224773036650884744167093159525806031006864863483369769166402307701317130967871318684152093917083270040793684027445824603444952313661104842355320734199747093631801049888612258102930385044379942395480792666958579750826219344574371510372081430256822927218704550044294312332659945801740060191161180498603364761992485462288170177470810401387983852910470556631608789471244791085351534210037213673757960954384025697424781363369261360366130478600180366798385143790184769231937840458172115685331540582246853170551193165323771387843117947235348795986569978266394253652686917756905623233428508428679604042685524092086661692668780840447962122951931170309881675760191560199618448455074140044381886091942039912815194964214668929383316545386195154427248020148642799032124296665707082338636311296365234916613581847597824392107674824251249313265654058864926027081871764744664585238717938165254166396873880990301391456470304523447732952266412656876527627406139371906301346686267710871102703429802583462577822788129615828770533774691198598510560270437265934915741058491350823890601267058781205410352624718036513198504263660030174570876144059674030938620725678779113430266737752581585457859202297723189743516224087749299902404806910032588379949724788710054094325323602098319691650004048410694562144125738639801388761924276365940095176440965225830270689937010257367611176491197247850312166475439975490320037388241415078496384171582533598149131799343530327280500228425051923581607399896040499961842191929952954250802838307106337192707138832814079617950484749104146919074786062530462761696615911689426673703178854104153733647966872806198600490250496097460054672814678824034810885911315937450665138583186123686134781864021580865884762156267435854184804098618135090980034877570684426292995211720792530634260160487210943565345066468276132527468752400660268377221173125440938366201900246426367123438140357054937035026500189542018415681295363201519134522129717046892425118424173731793333513569731387403863376452392348971878065249221294309780842853108835919910903546963680467826627500272613432136173864394332437231700348977581928691481038520709833644430230067562388554229942452235946218163899549013474905670242802798640892251545366239379474333209552567341293964491858778608227048903498062405160511258016925562094233074126678243361734641479378491737610286425446472891842609917385759689922580647931921392898257089635118515537574566231371465863234835424186480703448534951701905629744270860595891016341443997428955853322888195385580327369130994771107460697888418938714914211854741716693103034954698778966665415816587138888646718178907000425487865535440131048215685886227141227704895849230755260603036065447067986816576902762540861890282908497235194176910006690968265128553538405328122595186815202626152165571894492199146187214165118342111054564853579494302704273815178393235632093871642459645336665741735972013446028326741687436853495260169404453324339062884168309905835085634855661376805178516264902246675819219806668389939326358769549867312649152462282913889023322458431346828759751983287850129914709254837541986271971994343215765419246962795968841558563895740210460283432158825474389885560453664066613036430682002278943841444027809402915791686354835773864120563856292672963276938706245559466958855538461841760149946668492434326671842284364635321361137019862131841455799025126944028268334892054355055745803884717243373785933038914950566853265890717240330790819876210035538685367229524990207552182737583731903914854409070729524654907712708140229263916460131828818793488650757151455817544672329139442196806200512156098630248094801957443726925331253790601416149067669894785484333088651173882954549063970400671968217359542217414152968403778659174393760040193917687240191838554517885658568503296982560623952437970207916282413131980755619180717821259960349283984276267117882555255780240285554733532806373852168805073697603173385610570792381120067521137993821512416479416963090415916960541915876386881125861584650490094774922935799647492705853691268604316573227454904543431120501814274205299402600660388481621213683231366900720173800429737436394188235733125549855432361663792926792374086052969057258909241305190070135998415710416990149584792253239498749996127500047275609749108705052552704861046473516473481544354049273681538956557436176440550667713319973098730238293725185358848231535863785944555386248426783296635005411973113599197423260021901753722669123466046440895015706582085264256379490973138331840686124279218373794515213907279213136110965409524815492074836425547933067340064419848925877282563821451677375335615420526697436591008983782289082760917314588733708009525234680770583076223096946472284838614381582432719321139706992210697653515220784229307040356863255063236919453711734779351677494329404300350650078687477860566627351900094734719171848581964858440892758370084566511850992027494888321079023568288782310651579650715427281230610602286964827379403153243053908779822076070220095813357065355774860649576486518207510959019631486992811971089829603381945311054613940422089750498569406159881479890958352362180515277357904952773384268106930161440569935233935886593658206554746947594922369340720290029309022403529636279248333598466724293232790406152402531861529371347883505914469604415596752265309731513760441602924253874187723579729510584137873464109030823143250502424216953577652235251052257659001360700163163423790683762347766287031537032167242426726342615307334524782696843442118390353102463014246447608277040028977059451805111553899253452385238388701320586172619966456695148418487275164941020335036203761463371879711370622922836017321141281711618107084905853606911761918656009008246879078839497492111467350106687570311621419597981175227489897550888314176683513318398330080153111042254385215393537806839656296998297466090722146967296149110275771848256346397275057703786857843275675746905989479712046274121675833691860329420022413652276250328597583386370537154782035554411923844087802885338257920146283676461730321341123936013335890948338469393886562089014277449951085184694038163771099809686077342058713225678314047368595147478939976663294826037976223192420137658146944383449913615246694067200102248421343644398034440640072384693296115170426167329623777420205639837541404816765305926823623528523246952994675942496724624844439511979288330740554562064304236969944917858211207484184497956537197187187476861924032360173222186796198205247546607407620937752667878536125381797237141671757623794798488744516446001065444396264774813821084475298808637989486169967546483382452436114326900748517946224036060134748484298150000818854017765159014316448084871929313001479681733623651986627000520869665426066681579800783986941003953835004817829206265847651374599988485369186815018335471627446281090562866362018395981844192438916406832722414275077449224102196491504848763925225742796110438623650972992981661953804624953202404680788911190945493938907786221979880486011039602401119545677021049685016686043384736068908700950856608406819520500924098703295379113408697706325000972215192492012498288264880879144091796307837721730354403757654305001563998789322924162098982259311865522270058063267067722617573793434402163517244697182565641101732169267625199126041915150215447651704039641722850698292266637109189366982144031842487971755236224896371333710184310518030289194343403436762849527194759011003214461242860170419651133594888574723793240906658539283644882942473047816175940089749511125255424272293869029058287050243310649764738168779380420888708886353162851487782379798487213236527366872835000077333050042815648916087419596372096343639399812183725986096953234373217909266735077219466917149679068770664816884290614758381497870074116989797676175640969985834821456244921538116905477651590354796841754546318851990935896756636773484587458518845957924603776325701691167762820030276202095226378620681822554924051704627848594193964334749467323893648030290308841655797879876404047425133045376329794142067286501304559666039270403608183717044425814882400093327321068606934443103985233336687287183506891714107803555772456025502804361355249907513803918540999850902822085556826781746021683221243179469848634480690921162189888453132036089662122678471881821361728510690880412144267495177352510404680799511382431213774393849040882741186574202002676857352485874782927919421525912038997250661328794514457643737214874876681344548262468300525877509854156990295686569936134263524695968732747765416161394674510856229820349007568513543682194666362604891447170104130321206897310097477061953782715308805094976718602231919293296216244753267516921165159385314802561533553838316204176365653061374882768030714882339902289194628867072990861797501100241127467551178581605829803871646752041219793327951416214880565738473839777820765035674868772196740450050012192558208633380594075416581886266066952697756745182091785042758718041763948126842923515216796110701079790028727941071854652956689667429020401580503559689586696545933602984259826224924621802693391221658855606282434771286721309798367968028388129637409727040094925182014336771815281808591329639156291860962203512975803792531625926134565335423238812901901758276252515940252408519763796746978388815492133380035796051620434146495141459871138507111590539777022198161258136762232626669242378835489084316606430575502949655155736547160075366294201611109541412394925887097613210269657302139644161786756070149242808711392825424295218069082650789429867136285559931160023769517367568583561699743673852650462173436404260012480593564140892658189516443266950960607864015492997829243376976328989444800738446516092164830090892118557047364815948024812938472260009395473672785618314225815048200641539149651275913260029973592227787977125681961285793885313993600965025545330971448957854726764464106666932947094959747796261786608685652493911123989209827874782173644544309390516662508617131786334069328696346972477372478812415536899817626536690114392104776269250137444151648136422619692849200413425527461047442812276451812128471785633294206986880747968043797066085895936596867535412438195965710486739755157489610901400726206836149395992781165551606350539378373752666347575415554567823141691847952209252028457862342547855261897126142034637850030956097907329649501307345746599118729736571701114362641240826863134247154104291162718639463968731832809640668909395846945499972024756810034897125861845989458256051455241278161078601499540050136629334222459204982405702631149873064789472630513707792228461738026097223755364063069323270051966161412756634339035964702652841847779907100513551993186749960231256877290395803248125382438366748543112257627283829538866720689418452281890644599001633312962719029676309604756242893971551398985436043107045878833143987124282881367861051905628303523123340094979699900889590157279791634969090017064241405619809392313579116096275261880344097098169508131783317720714306862247619022230445678518208813089418192506495565541320342701211453658467309016969627147701478505486735906966842035894682317596803028180648151639863149128716400316922032536427884814177578788799008449800793035946322625243956896743480394821229885002866761115524981911385377261924330518886251080340507185504497413474131409679719004558745278896887690637550764472285633086216652459713638149398174057173580146598919634424640036014679067449585248858348402579922740280619844467378434341610724711853405601713737542410817565168380219050679388876822834390325725701571490215502170841790022410589116502951230737541392323653547629323567708007133074771271960661808493482701876209897971420130762258664323435335112751101193262541331490723820161089333456131271176933206089402175658435459306497562316706904950844946093109551594874467428110908806822261071634422614689769512971805449864996320014939101806605683058777863942257049066766569614098975104040276269439221404552815334358318011350554787556364083146621540225028310970498153906664054136499382517152445787557016614750704291491857445403293047064673650906315256061899570638334624513827776493302162701945925063223476906677997402904193256734112381086419161116549222150026383377427834272160114036091211259415868252069004777757882161989900524301697014113251788065528136072560321702956790114554462541323005735294055679146363361157684824113877428119894580080530723075159381880288522759662508708076816892897185767115074107471097536872566135651437707619590248410902104494347368997732114634852871986337217160563027425567486268697586270797809341137151118806991314651946666643487763458889806775848847151941641738881448566383859700809418426480325918652851775424404160434683912462081302651580357651804518363538943262426360571459413717343623490325449403889216110552600847311118914614125309689699039825050319641673108341372163824876464069289195794981793778181106127765589348484182158140353709437580159273465683345593919766316226555494176298429127143731849118141771584256072310455703266715548313883587214005240763446137493339155294078159380322294179518418545998296617911568358116537859375212881240513052798739246986974225019599703523247291346213985967727450746114154206830857818739287992407663703728869805152954364448894451051906521018990450377386975278909746608141258728208368934973022450020045468815033513058303420025869481100762748303058397549208754340277822825796887363079290880013261762019342907677298291496203394737541989152454868520351158496099932231124052678578659197889049630789946727618420306686826971182843621114222680865192029928460267394171213599199612472293270633072509446595470010631464441178194141067415665473212013677644774580464339050496486643513808255087454739528440184656803210140931999052705140837893456044318234104674423759946519281241380681589715122816839980802622958727729973413699547524528119226254482466831353338761781477949137649275842682052433233213195358726149909949851893194729875789170425471988770302088469371198262989055994122594240126699272010817630336433819275750362674982770036125605931270358727717540658865360796308481774119326378526734603177862699220507526314861526193491605378797093099705761341528320190212760510561680696503842319426857035201426098812911875198948940490833763250966175832039003660643537230187957970148594549748411745343786687491003872319727849738273451395898316917085682274566306581201181898525373169501196687019873893475191524948714944630161574759344835861718239279166747775645890208292863521202334743469089454797709341174900350781115826382349975317635090249259771772987222450827088977996602700778878628659486605822403191913318437024850402289748041304201905303976160208754233584303827095730217858202423733285473520600711202856899141784788738032539294194942390615852610754651928705224617155538156525028996233441123902761658889152837169638687074123911052804610922377426794108155084242825472209607482760526576245509186449238187833456960155220726665312568788419639182146380778803454703170078865829627915791363675425522572889163691340173070696769805557255948965527564181207424802761546454783254124149090152405675000399383990198169536937469684508154361616626455917606526625564013583047887277023984330843944608595960633715374367608859903603530552736418418376395525380360936982966670188693202528135886291490846839120355118774191580594731655390236617709109191419508081597120180853926521945247421606831955147507890498435333019169549688299712383275038300408214199084419850415595890783388093620901092882655700156742677168909767177355463645998810383146190210195228213858493242819024932623462197187973578968622900306252920340249260398918252912113487693597254061926090135899697943605372908983570220466024026380279631428733429922155634054215447608870062108442724644088144855683401705919770543182801534763361348136485008743573047642004847757984826758030837191186474525303107781146762284904371116628266896558444843399331307875200970889674221331727873868811405459836711342444073013563798848785829132654027400307919519589877865461109872093471992522476393206859477915779703530916123538221821991104460659648264610893929281665536220400679778497807919455255507177753010458504411934989958487308323736502035493013799091979724858945383404416621372346569062705323471001467450246612411054527027431305201869868500048607518847567012170028584162573958432228908278090100244891578384450787141664819953610354839534362609414868406124175498439221418549354658893275572431948736128277582978709443748161015290255571708537199430656643936479603288635451315691073644027617678114575742371195568780131527729687536013558396144953266063309546772853852797943466112991096654988194835796713023155130822011487045367511502024981589168365281157555144605128349277529378118785360036517403820936144223951514992020059304977945929656693606396699703323068498374037410170993587491192962716223253882915526103924416451782536825902621797335136306361129933374035290662947406795336977148754347466872295102174071676392940226337198726976713069556383969546274486769286346666807466240002113582506695516515578495112145047444517620178571845025247468851516854853905271143091133495238428069620117971167879384505346692327061930048152808939475068572465499200315099459405659736795044067433595936144789833876508101776167769041790209838014564840544723337102647436549541177459812838099825694276353714807758234975334427242296678089847464344179437452733865078726295191102662686800335753276475578120808257403447290959731354335508323449987822990851145307535452827541834677089195852175667624498605133789287038795158237349222793695490816273940820956066126465468696653750740023345354708879409199472610453030677981082575179836293901533795548179830358505545511663893065456906998006295795695677252216613576826549293878872577555289460059904763812788957149476639386295175216319444687837080946872419956770612256239480786256793955338743404430796411076638894482205568700133506849123038665401168339166794465008684309393605845967629717092868418459401268063874614118857645767701455644720153312336448872211786225895169995835835462567903539009053094085897744931901840002984114642621706778640533460148546661478910225162122420305521746368933794758875520935100356335528903249055723955611231834747610755643804739352515200559158005654539057492404683835577106748645230071987863604162210731082229802695632758231077036118733061159177878579392559751706791479695221164408333123474997217515029762389732350478520819633100392733881149032363302000445493092094758397186915905446909589487545838099949746607016985942495021702532320842934797036536702339461960495260105926351670821729423009495401081268262349861567444064319930198447231871008916966048567944771984138409449426397311676722722697633209281510458647512537403845911121935839317832689608487381115107993177948638141713099551458316568986056707836332524796577945056281341695391877294435115549055784995644371587548491580318207432694147225412873695663768775884459400716021129414105204704512475171113281667046078023690970084657879734967114685381995904305446864166735222103961014772559545129371167944326961560832370100680393731056751037504685170238836894520473728079038070629828286622102027425922276606029195524306223979845276836552753663368126691712757957800355265908417817414898968004729003469227617414793099353961970173589245296941345610873535461282437681720678783042262898903365483800490113936030981295794680899147781514504803181120976349528066170265155048583819717619208128425488927089819716668195988226383319192070270112330924195857470413933796515685666522771533371598633286813824138718811750588195537038967297049424597160767796495690073940845335728229472394686450246584700661425980505221835092067115073016038671459079239179736957603774086300987436281652297535507270676356009145484551201928284815459186624707753221558446064521775456044674255430775730984777533995412125025864309012771338376114884397480043562838580046325271133538266105392455714830013795318907693498134454637657185168771888788975804206191769947214144232408160435472766453214658365716030565264319030373225583387728950824218296044158264901579215183785568305492614853557918851192917260501365933904611886418022830982988238418768846351106270550357387631910706535255615195712604155700770262493040851651722722405870588308379553567623226164796419610140121871969114449542594327959484837655447007618692066860360762964239437682789768426957417754325828667253909480807208745536844407901275062606064027488327566762051189610311966331865780670293151193739678915115970744334069729169487016965495057926108505128908324882846804940110631594396558646799801173501098229390342644702641888014489026750494634091155135796167465370408881662919544816411346121863846416318646580738682549602904328415588728083728784229579449836758817135611077804601036259366570448605917043159555773752700942948248575535687443208503748277825985286701629429596074914566462060950576060098286400906853014965399557575494288963131877509317866194547153021565265044045534212792041149675042943721471371451271925270687923769616769385487366536643155172128529224953796947373318203489599045603874740451485143617713503440796444879605726279955997684697152546062381043235055443750451905768141541797033907644770235040627893558418256993332803204022728709226137283374996485695366340864118404675163494205035196671562832660628572804166892404115487036937980018755212860234487545675360515517977763053503569773373480841422466261966401406369903438022433406980336599761015015003978322180946908986935848595506536745589948855088954097801619489800664563900029501849567512001093866925023677339255656910200629811216615902676224701659483330093406128568510516246233689866707487072038529003397454814062784363527251905096895169888490962723047642861914175876147906434397935616968941350589222718659624914636702733606234043503753708576369981714032028340113692149876485439044867907273963115703542360789160088631441669038744586448713605954773641114955783918416867453553899133044000477030591433253095425174373982359229853295739284426701440336433553278947480071600026573298338823674150665481264236359913901336175347098028269803112486384741613932782306373963142740390836315747092013722752346973351402012783467278074687748363110870609976965576566338992429294399877240291344343059305001398999174185324639980522449990454670122678659040289603309172258941724890390663346626568680019750767266153718340530819688259513780890501364338686839526556165328480145264141237242328212264280422598622355661308132695431733179644492114751298764528098324040290001298638038145370349611347587550596913331325016232652688512589542933207834156651368692371640376676641217026629038513306390458594096393448158831600656497047609128025264966795440139110320799270323131329558192503967338871562337315691492831121419703538146308469671063790550474557515998767491084175684160207074406778309003685874518566701339935476038752693243914216625293176684955087794535146136371987528402625461694952446555773650935666028862355434331464612253339832449606640999000183527244715832390930790155982614212829148250281424118763816845102169236877303658788703626199405913891327848075226118998540139184308631791900749296712622164593657253996713147169929138432631525592950309260838198614895983008336597992814326423901414747534129621300791176249223611103193280348402593192155119073343025548004030098561280712013636406694704969401124509643406441097866812965412895326921449969153031550078224784877760917589153037780038195527846166821342879996337829340934384118804935570749698237536587342242198103508444587101545181038561216683447300673705593272158136384675123245143659686587565062281952345710730812285625585360642272243229316709444103944752141722968767820427713196383164309393636282861014678048308017486513115625875349130821061912396860340654919587808879754632158080917543771329959959956335768974254991719162242586437477645878846209033922700312068790060511984606760219987936762175814034809615337367349933625100506480140217320290594182649650812723616275523822326751406663920232929182915197152275245700170606595344341484930809115441453577353449565687154502672829580056901407875578331666272456437548786712272749787458600152515855085102107233010875882830745342363461474763912510337460873077229712529282198934502029074386470438022815209912622593777058235459450724475224133799661994450428235566158258038924654235119376457079960091192971289367110680214375596070590756300393769567785018750778663506832308150935340457602029521345830358541432914585327736476548792874127263877439137098973622019709522536855948851664783634477272274597529577313098969212202351717143064518672052302829554913726944144508728092739562299533298127485696684508665276599636775424319986005821759631250257303326235290858239149710716422233375191080595318195394411721505558784912260682822270336952343607663405560366337174928148201651867831250278506751076629677458538854844690557254904559292731651600475768274692777490841278258705036032238000356001875212772097606657429673172800659944928232357001563157490621939037904573312320488234582340035196821619667621919382217714434972995218163806095153555856976017063304709568008750568441626329095289252680451351817859814348191210818883576611355836171705033411993826377685464224018925989442456072799045528202317037555283051030446349151997089641563533227028993906839647323890566256775767622749711105923559316733168363818737570689091173222959989203281547819268848956805342701077989056934071804592686521487724364576797681855489834226550643908878746080949826404832959288579024201476375221170533428998671594549775341279373955518025399719172045296834474903552698098347011943709507216710074337313610717574913572282612500981846011696405474696759759005577300295302479595800792063202324293320778272882972939227681375933483042153082917704692686864126310955435771361138786269017833894253652497046122443157507585561560506174105170361823532431972077529547997385811750144978333524829564204555236386253305992661851020123739969188755937971424223419243728283506682845653358427288739643568689056036571816419781162843946320565970186651031723394947950285187177305775703276839591733386517113846317963376512417467795433122036323538333706182431021336324188439727062835105885085235219204925490098044500520343058212568911200981084344394458075275554105597323150380113304989383572301131724166026056896934008016580848815831281941344731301507899989418458911490897699027448642774298697744474032470691110959249219871732699989080050875385962660537397238813677362947482282388701245855080059825277246920196309794650051033770890310286913655402553680709586949879546480624981472995485032499235519226651555337213611107331232462336089686184589602519413965225247681486897235304496327398243772377133600431372997014110609044854326344573172007710724215127816797742183972763011735550616255151736170913428984945806583722183315438183015748238825202098927337519563627724862084053013973606407173818348659109545335761366581579295677113802617459928362916068003613674045675920837768469079122748237358367769875588438054913807918152036685793714967074825174943022690329168990642597282648826638188089820053157256558607218846906335254129574713276091436002177855377422705920475064686581150969370450667495160323184980509773636559056590559729249442487503774340931058949561639698495297467169183343117685380257472265529368699230268289626932706398964500975429948053949329295591916878596425355748095754537934432819257201560373377523729882734266649809910545972915873929874941684169402250617914342542065574033685001058387909549532348335601418685528181733500288945835002780839893278397005122263361479194926658063482401805411240777260467419881334327535604318040608642490464685180463346734946400534225349196736154850412853116085437910024341456410984862484143281777166709819452912957527987690400816859981642623854111078268434404403154881188581952244313035904941559390511743377533671128317814554897417232697329265359317977947098631206470696426196350073588605849845394762524858000702021556182716266441372711129130557799021393921741345119132078190315691645211794320380410417636259412692561069292486671814530024640575622921792642264575385715363007525344335796102057624129181742999925270161394234812132784416133224276526227194208653566540875241861124451775352611434926350230704480657257686029577895284652434105419644506071319792602498284574984439850552432074271903624426461224795443774829606539791612632175969745396496422232084497119540619856134520369871517646316947508302578430601645388623336976390022269293937934377587503906897691678123827106407166612831339984189376031108183947049587086484884585721375188135375755896014118213503080932746200729429477051395401082447108826895778898619449139659281731876210584099901115021451662124628761225824270787777864525955012954846815664468388051402302504231031727109358761317371912757214979077683773204606695017083586017995880207543260994755714250406966749757595635145884539452376737719556689050330519141710002321172759024047446262689978365587724424692471031796467882310147202913971941999748905029453074035376244506012180953723281854832578786162525433655761837639767345253659169273135306217845463546812326637482645282280509138749939460741275392906784507089897623479745788142718475914672790961694032751127797622616435997621202136287366245238024198448439073499794209034031990531912606732244952148215809639977314252380939608566847850865775974861927429259604654434607618982487862554489738583884880758065651625543406689009629802843632436924627495899678191964871021948874687496558710657764008867709539193091951331631804052246053512517821577879728778833794567268391846579483649098041751210984324121355712284719576050711596216769731730577183480758712737534182129357315753736146771811782102099137047299202852893489486540105414471597041206280716108051236481914533783278671987946456001763191028550647676938392579400982041278028172069076661593745265782378870452015071202088015641349005263199882651298165026374115376483110875407687416870902574254961317916242738861261841902782232286038617945021783997320278852862467307774990687695656610575719872676359433031184830994118750929488732778687939930122165124077696037553355219729699986252131732459220706980310137050163089444182759318651633231970427457074363561645261972994140173502486844131470232978453526619995411080687534093151215996564038081865146895547474326550912443372047669036168129155294046096238420642553391733013627559097455749850492183680351261899752523966944825138107534793595230190268463975333161736775346952519187778583951162004018672734137816447653493223562998701294368565589625883628275815417779631376364437948967119805166684172522993631516278130168998087241618770928594936290129779253996110972052673248796813598906524666509395059293556968380670958708547571592387216092010822457007565044252119591975625844585576480899578673703764716741318064080117764916900963691869392644915625929040339749290769361975396616749875738765649144968194726731669906560872458499740379051588046368292857105997678174567701190972355839052697461656956258883036984522371942209324404043149352886102904964442223970269734710285117657948294840353898161881223072318145728403360775044011420257789463146549325634800240431636221952715249596405507651524902471008648402542480414060139842057568720063427710370978133036271880422283621188019539432877597476036409024028594674181035932390502795015343011838598120419240363208837716504540389735054773686909090757241316251216700702102473399846001579828958649129625127794703464990781532562178987331607388738014525730228116057776539098605137226496148002968960065039712677876272092211620566309344500250567985026253693593623480675934582897603980043872890202072605589945474418500285371549071384486806628699905209828885699817736196063345253799516583748336375075430089445215737483259308005335978743913303387254559722425529078478592341592231681470403013441495354268448261643697067806558917366479768428504601390777358303262697201889108805493093303154823924778838391595946018957028196864508794502657388038171582889817752896386824492824743658809191425755923398997450942025574793281547754033536892801436090965953838236420980959482466268077097657827355750990320571508571146948903012419034142918445305428667150715708069146742429664550540001009073063079075067904984121438550010074213286161998284777053705778011255340322254588864970347735437070500753298853461114769095385323419728604914402762661678008267600870477973992593598230099970258135740181372743471186632210724339029040827910749198461200024174576533941247708119862027682503580616290724685658827985728456419382722223713187302379816381705810553914168233511673884181693497950585608083571950281094947253546330852453357518357991466718424274475342213454460919387020575419622242544292956681341066886119477929865565784470236335564475287652870410557516136353095401206872082698499626973187821350197685269507399292347199485431480060453796098511782100809963416350213790956713839277050608905810135096281200430839412898682078590921953237408308128088764074371247788527965843598005380258955604859104513205167356697696192764094730781194876489950586550696144678870526558238935705883764003407792729837211385053558558954129794117491446474250352523568131954226495482214343426587076276656621484435669950441612510842551792342869232909564525375835390246351640138703071046682527865340095601384945217131754242841558732335825140010868396655277935116467141734488966328011844479516635804625540154979241196294610602566323467721823053729185507713841976956188276407745023656422573705863797127001092747719743828443418472479588552603229935862183765330232852912980666310856885508914178253676910878513471433548352393215347551432710858120573276919455956462138734242710037757790221779565960220725506894846442068233276196677006868787304481299005179826583764553177228867084515286329903705641647324409768103500941398054985680069086738520088031367918525185041254143301678428198568492640111468738647988017328310942138393141306449982490800017544686986015786741009313987845667544743150937143998748576639170375097693725464969956276020116808442200401312040737866006312907552206345493607846223835024096721931985730957748233695891737983601951211340369935162800180098450748692024539948823465883974857736229945292078246968104778757419257699612714588185876206852592950398103468517897883438802844005189024020564077726388398322901692342238379300785310506259227558605770868428763834932751431093727616455243240423315332677767604407573416040927423872184491209436468574331377166659790934485102292598180522618628351409945654147394887481792209151990057295317299292705608560818821940236388505788819150485839528980919706750538056167605548496905101752431411781603414886657984885797799088064625074798586315232684633449025278008693397077184874881437595984308118698339969270106309043871679244602213862147478265851131600232859560350122850324573906151591763285642132384229017901202784390227734175096498208335197086236285847131950903568314136180655452234723767500376356294034679410881929407991406367228799137735921968413770391268361931657158694859223989740428166522657631795080793672984561687357668033598907752873022986073057045829565419846047529427798733846125410853511146826031617065146895219491008039856394500767962024710180415609133094262754989986280977523552570210752862882795468861098902212833831975212464766383776686779413284934010108912104338426368186794360158479032741231887322438933753885575474527043195844091722130982770005459113439223454679247086466893689660462216845466991331023141675822009568652160083662516026735884659381109954504438321833754937753626522840231802926412585970662672097178178890048692979315397152030548519996445357176994708172124231676614298705271705605997205681612170499553032247356059347169252892012980574276653984826953737488905349781008187481708475044780036074592102160572880357789605556307760015940869550280298127671457762916004058152095491489067065484422765812958513691205451813401333579960829075735354153963191690054677530526673412401681237418067877527474854584965527327950032969859106914372010281804033957570951938581291855979079192264335588794176835263433017427995170972889800620472152008662366513558220851158161162861187105239170629765988317945923706906616568813832955146303627885543176060744823946478518452523258244640311896910768900809245172930083693673785822855790825806001580931078672139013020360204346617201560835742234905455995988749225363391915181934150654868559924361934870889499448034051599475404796504444772529997423786120046573090348863391491030031624904293748419888290365897440307166259642217287246505126729844738518412016569399379068894857094438854050457934402820297772647301474661485850372104240281193919741840219904215316454938099757074995999326673280736929452657339882095180594788460125361255777270761692904331036898919848775959535660659804393681745794452394105180776957662642848722904976516255703296194464469065712180221537704964571640841705945507922480397906575837361722402024944403798506041961528470696118412435055714190940391515930006603032654765001047093713955829552723633862624027723577371524659583424248889555639089869147490383118462840454771510825421658011636741649352800635659811109555199141125598763227694278480076869699608608948142476510125757760137991071714435317299745294457495402017416997845634566574399177603492573422997405197790420861183413157598011363065015510416218897077442286012769899720659465627586229757907956192134483911511303168539338197831407538091153885617632668273152750847726636256108510853576397032209026466984726740690127547163738225406966885466055683815114825033606333528799667201780258892591237673667905677427844039902229551459268368336704091329274612953758261154009967482601261385762222654435214478499703561651124261620200456436172478654825295488832330430378577466457116289257779539917047118617097426522552454678009862586380520239909414616777559456116607783173899723929239573170817150876789097622664285003408448522224429610840051520180875235067181092246624184792978887158077453401033197726809607237531753190309572664934808776286095442339084947438295439235091047245510413511472869766237497418508930554414999372680565137996609344285097585556771635654676439954694384460559523482320712196289637079897833906222635373275572798115208800627960121547071707081363158206741923043516352766160907347831210632229791584057413214843678633468437144911101249949391508511604879630769042874927529666553881425582689922958787604340748510363781846700199264187309483974430166988082786892168222056690346752712459179861565609228796067707655584362130608677113022419249933743847573391005129600310693345301493725068283829039817335006582763441250788782530005283341658105560098176613170803704862744544242519624389216729218535005010636085690769292410958901945913120023111610910594993925300754942389747053280953359026779258560472325793835113061344747737435500880810132931061878034819759365589645291132870567189967795326417114446576663873518451600788882174831834700876944495682471238037952364240836544519390409608702695294334217102433212222087976951428040564394002952867727406112942476539951523307173248342558857331058562435331543057720079328730372528769421458792332247288311698131264674551870093692865655621928393940603713037474070227632367374516914792989243436786091640856286417453370750449208041746609331633373154063338514079351869104908842441384254659762260873008453864621361160497758186862461057918465718091600354202727006019623822984501243006635139934531468340104822552284497370412780690928546463794317266690056089963065783058901770187351165513171453895497510483423707350397349638371091929117584769058677981199900031949724320828512522472382902398386754096044668702596910881727360032023298697385265038931987534701886764911490575502459591123275961284222599552820817532337202354552339113289925443324667097492249769200879705123001810073931370102200953260189797362236082184701785085525337614302024461538990101032742938441552487314603888742341236893582007784854181279638051475140054574381430038870847161386325195875741351633256209860292894664656146095404261485592113518656118170119602404905560940943977197569565559407894811615888648708004978153961365699741496568949001291260047687436567173819458451540184657414006292150558339273535824464673068027021739932272338179678007676563525702669407547463316343134395545732828970450196106757798148963001335980228257298593269480901831002659589678507076818687940516764091116633637367639575778513791180086243365724858464188290888042643386335584095125440687762442549784157935097471432635816555595148149879319818779626878843019269927415524916343081630370134947860412031889418923026022710349114352352313950980466203262535353710141947659610071143381633964297985123163010420215430441652744830367637811858774085463464446464758387709994605334943253863593587826952293362680102745598587834032370479420670001592610603409809839221852605205719796270185378947628622335939759042127682909634130198599839347420898893915296052855971517517121712318733077194155052202787614302879922922593977174055405051370458613527868003779265527226961750661728066962598473966824443713961336472331266803531820745479412484519913362780434957974852830651992167962564123560152155159308906439984493022623361252121508298522203228339451701390712813793887627071994559348169884964374488239226486269227760028801538889410192408557182662673625083433416701225864065013698209514001665512544101453938602405685611959489099106440667300704170491904124726232797216530881971530179100363421034653827431798980713560819580012775114832450762792660093928797294193474360853777997173927831089409091450357416349793590372466669962520488678630895774215375535970587339979511632606695829536279842942489357664310052088582225880788548373437210186131694941939906459747226420014517031418083949107675884872642606125093667891583870325883904854297181527460518443069155988066543568394580337546459711957766012894768682945016000447975254763420596672361379551067341002251001076207628665436582431132056199528776029488548374569293467675765691393923526539210521121351955947641839485825278048409190244831340172510481881506733669782108917115851541631707607014722897398632833510549004042927013910956829963288628961538144087668039391862926745752534752378559149233850293879501172053410691723873451285609878693985068777952587893672119055466374571308317221422531432706159921817973995602743768791093261812475435636971456096730120051433467740202192617734318398604993224719749326167136578443878666860584828049022871296248319150063259833085796936519124114779668816724378314421346150844653764662209211872329313571206737977322853874665720652662658805606010891532576855105680325860389768792013643387825806635358727322906699072274831530707620778504843009432372388300716620694294840409211912583868557075224109502539885558419768888945319785231316851936254238687434243481689946365320059304620992682738693525471947400699040875855202703256887491522805010082192855946868408896649452548815129336781817141947824313967817512710664918995335760210793491116251819904093143861210150222247626488435785141763182175209958362365299523312924754529509019456449565995374356024784461160268935632164429171826943986034515008374991274787827986862001128358224335007209840572363303879277726618987406752367376437174324284074446691356074601352060800967865991627168408555773071878656446303494812688148939162561474179590333207377998531259877152443954587065684223778756179175964387597995484127971102574755272289776148748524332433605865589922378589325712460586076926764576330394362657653122280929307359671952096497049124223838668204510738753030848662946433141841437125668426730745409896520536918793104836088306762176499921161739192157710340777693014545688804912190331342398437523772543684490706880332343555555086250233030163965101772489932868255662811644760192113000941167693102995846545428317776917894396909464555840891808750297673014421537107353253140305728980924599542282335243260285375620250617910634421396447364565267649485821640572613216948670634396054171238433334033244915904053336893885103837798576557933750245229920535201920858452534500263022044085758706380613503550573831518574061444425890641806190487260619050578160196201513822589998212066663682778999114946899476441154908456901748941374221728237779306170730550937989290024208716329030547869258258173661143876955391699355992792762741715787797846073015216693628389097521709287080180557911736726614489331692755063539275886904991246291900867344382949980861930712576079057231300183640912010936787505960077211790008115403074598846270964923069335054322874471985151111935580847605817317826971791476232071051021178333531570272508690508497611231309509843710875445765182324653776972975766644638608878598551894012652327205139776814072515130593462448102042196673242460206654929473120254378255516541384044464453764097432141264213978437515054362247150537176236860575041557073757919578309501361559260550379274144296649947300798237886626462573920950473194196657588781821619973535719630394081936425159206625265651410903268645578269496437175148029339336650592761866503412255816704923906510367031197627515927170066336720355743895198967203998329648210925304683062207275259744181961164944239920047577140948973675160393090404726197037235181149448515740388673324910358443613026139963156121253594341068291329840902800978522211688033647127460507894707204390029554812946430245629844365225709812340405290224897737370125634571159258076207344283893313589163292315902671261253368171332819725417463936654191076213629654577150927867243849697397949762469192067949132853381801794547889561159216555644744051875017436443203987197499522512392644919066484162135322847636744573122899669368306319058889973400680127269035739536109086944018230346440340940301012917598821111849913076984630822506166694431669598968828220893377867397299148452138188360972762131652575703756157463693029659772436621101471782278201821496581010964143904051814470697547181723238362335918673695669842030580333003477587866306995170720786446007089953679473840773899304683763229282604050330350052631931423694471422371104159459323457810859933478510809319673325617596630000180272370841539925349168624441891467027650319585585318574113374585088303591714167869464155275325674870849265180045556202386051685893628618216678218374325991096021771522600624911282892305024053743047528879195683539290611241350442509394794409293377867607492510307202805718450583584020074071615115834115499024286782766624923440067770680650800406563786549210905691290042973752511355174274052032064573941645053750791305204617230861951044380401261466966051537689723989153651318371552310050565616224739551659125100070470604667957121641454863006071609676593554416162678147803914013195891870870968172044995907915924239002995216866242991193292916689829798525051469185829155911477731101471839271040989189508263471903862021663125058499261745749999246359273981467568340416164181651267051848895029615535835163792435442107912864969673342588964018735806320891119998359470321196275663958496960685197689294955872061282764420006151700039322681564644874917769183055810593760810564310066674207270076131224294713440629244633507648994416737713526242953038997991035345220169505652608966933576304865405930344134857817770249669403661017708065162109550224163611147686457465008758282458171884608121611433737451822659268413629100524113380774650026085506501725919230389983468780542753443797092264942385002682518661033957382037611846069986843947220805267059924555207700884439638874562944571449179162576031773987317262816101853674184797973312868695848064842630694247844618796329873600417539939907327931959866533041825769615151430799246891988311895922464595669533296744711175459953992858515405771046777036439077043360954265229466321862202845546046613998900748167841706584425773231906247488717899820378463090729735488481695860071491787311048156200227881667654041025908056094096322187550967854334176929004379113239502933573815377175821804936059810971537665118088525851323227185525278302879358614151476325956133323222904144279002008345125010809668153185065807506519820948266699834623682337675995626189006704922400719775812872998244994859545196887978927626370687313269122626231982664490670101948955294201889528192369221724797618018301990899137494572842021506551336298398455084906788253709787536865468824536182556877940586067795758031887710345971040566075633262629986596426220063705727357974291130415299074513362231185776035733600221662206578011055046493485243504595617086608092282791331102698741639119072492378802047021971826333548011216114557714873138626244249797871860747566083001517639267148815296444984141959358437622264749206617763936553318576518148261634601151204641641814183108544229296247014990325893763070175932492166784312049193699880591558961203164647487259780852895040728561175238162766023462166933692322142065940352367329149003414684903188036449024366174759000042625116210823478517516387617422499351341925395248543189688600515866637055580990987665544422594846628188136326315995814487855768663538535945195078123480073595789261644283352142503036606247804177420823450192909902230086583959032300575078618503695537774110232738516617578303391934333596200664391138282955820668488495086318916768758355476262623652497416699062597802160461319170512076713258448348105467388665508560646143669133332189852601018528756989089764194558790102188161584800355505544591440586647300014149733409134636179585404623643860961973691777628875363240761073021718533003572566008702177135033626668252244583780827792969444657242072059289029129587266253540930155775389551382064460851564910529399604093021757402617017254760664666442008843264415631291123803777679553776126436067938392543513011075591159642346814815838596086709903945002131536944831507704485248018511059031498733175403043588217062073149877326391322036576253525023312216613933952770196824496443502541519247121507924515950856680111752184589254025661359457758812501550040216502301563402344444696499740326446638311557066847017608634501891132611834973277569738682227966467246265130208192333927651430422781079169005214031408014413080363850397031341011348281718391435834966825101219513729942044661508251345038473073062350122428616141603814172200010772659892332771058600185151233574074873313351873317798318695458922896621981281181040571987246784290741779169236518624120275135959419879746160606180303083306376881919413504382274733348283051940577636384578288988986150157827635117019621939878103421349397197793159442755057231481360658438054052015726259630032709601759417101282364184958552989383073315912035154548347134653218609794748912035124934902666750719214513079262891275150195872866626748308901355542011445163617290070520600026123664888236515188657860286258308095088373084565661089752871903910651500869247258861162567168126601080215054667822138013154056968180842668461974639101388735765609272296751079006249350834473105078650174332442901729237926059745211830718740735935762354819909417438484483226512024657817867384779670428243667197534981076486062655620874280503648282497101526801747644238030605019930510668034394290223788044036845589912874328887171792831807992767501238651555502818552933541476053394610641501103133064277525520497042234575259216508076864242722129644423036914240907109608256166011919734875002652131288640646689260331358732337262212802639451457198597851365867828489723382121502553795283697126242522836106465023830252952114238916584079550311242085278342257655314027264248094744966912962100147590537600651609940136973603357909071623981905799331348806951045037216154997006820343487290368287749334903970303919454208100950175764847100081257495278798335198720881168810555081551945909269571841067382084363892488984885614287431322302807186565633741517315912369208887585705260140824664523712621314585866711384710398290195075116591084855794249744096476183127873525051269702840715921137925153241667064280856453813634808317236172028794609634373985994099188403711605837734727558730778565669976774668413016088019191922149362058021263513459315064920859342783661197810882178751769257915873788356942722361032064751572589010692325257237751333670128446793325999627668302423141640974455834412569992755655513617495067116969579583832268108290391417028824793517038165622546935212672881691428992199002861799689595790975873486833825062824342727318087891773623287504444556330063372839775570023213126812900825802994628801773735121994997221188697823592110245842540302801990698123655550551418974859452177683984970551906715906039137920997391909143347873337508475602204271691116185255750163512332929536723460796941782797253443742783520248231469924997498552123293282927364178140055177282052026820156375788565955149565397414825956902976264524239092781173962798530518724246591575897459790088000586041532184130131954938389389816062714804262755551737179076713866207271619645212604872514225680372484248969597762715012659240538273202441538587895967766709192882291098450194218261359300609972250984982423296884881592616663933013338726635817096257166819688119992171477232126840314684429757216454572055526307375419222453487270975200900443779242336173548479539465742142160534845393996569886353581116260567377658758091571768590547997085259345250568323192499088993948147573980711169924365721147444367076670517499559693974921030818385076323464522331121918820131517122563476241847958518169484603657906902355473247373331719483991177687565842854920340674106135536645699943737567365607751426588791223829348185122413489992811564913193026868905638047193412081110805629765232612672045184486839273136390850914679841960412458342078806462222463271978047302601547695715286988635704812408624840698318094170909454482561222189017528467994553824675089461003912598968570903676821172212879423134974155853196959483039357998136948824976274874295018524376702636333027248660135174460597868825967237728411199499498566942184241238025570820368830246783495726335082051934223445616038444705044629675755274227355466792391977060149899317069505225423169557763042183072198428653295794735535447809296347559988030988652603874383275867045302146230270259887429733998606093255443226357219582354145261743018725655439091191743486034443728077982331035227981861379956695383622152151275056491262856246093148017318180060564889041017527837348009502803175361304537065788564902149779439305509846286311219449557794919232228323928950347079480133728258644096226017504167677417815839140915484801711491403073922941552180488921730098811256562332164316612939063460604205829363949810467184772198932766534389163743310530519411559956565966658280147428199928610890238980911318251455998918211591540963892085770021275758955283768411027205241276852095575785266512215128070192145560295809927598308720064841098850020138227323991359045036441442620538151528028379665937917269259739236411412164055907235474958617968706004293373028282917548630840034779692455407594983613366286820537012054614186608738352801982109725489187640076463471906507112181120024332095357172352546357580984285202557332527622978393115762016463189908361028942386639167099080623345561446702318359885020215634518343686031926252739866002145770692764492639217766073403353173392055499691808862639176666343251810116818145468625744409012129335781096974074351834004756160640429626093540001432876187895114145345564050896370463842711595596265326546820281545109724797356850210979459644557555734324434411186353104505918538218022856757542205861092509522897316916079520695349067529773010291514865349665804475070907156406134697352318908047663181734136658323455391821935858800638204468983277469277892108531557222282878936761266269028980028186202348229765444703906585180050298468372580689160322333674333561591635242719641549721934894223255167564233718206459893482486948144910352470050480743983591949184967225540391079531445581738571120845009891747207979937337402595820456459933111557823944336684954712331096259957621821659010801305803257868026980145566343964923598818900775908458264176599679742317607076076701485929187643977121591724343386178933297690086814741593009711703872672979901925919687717532994904130321609110929334652300734930462233159827869250376548880967701693865807721452043350782994659295336358840326575805113583175812470804243431353351967308862508206825744962248092923837447632687383762148413716204967541217751853207355951891717234469395909393468466791738078549105236144622950494978432783902482963791767610022804731562276902452594493811883729046866734659444468968096291528803115895291407292275985163525070105444029564489847728129706668324936217833162570821505108980278350358186538210742586208817732366014406570815104909190832697546932305467581992760712470100542616634859044609436982046652076148353805407590480046584961586294311936087271583864261670477637311200724449440797476494334522436464924972635577948427399000872316174462426108029282264295358096939797097029934737531249817372963227503681450086181524157339385407064122054707121578400735442338675857493560963408026780876376884653467592555248853594746700809766905237148701762543278455275117793060802138665565282470482137212704941228948669609220120622374032263228513273790921163027872959295725610232506028772334525347696898502969116802943650510250942287844380094631259903484047994631445465960679206585425809710513693908763759794615118667195137302217137002551867137350090817918217832463868263747096262664670554247204466854318866944657082655074483349623629156998200203013973981548560433711607495778955756504731329256794411479566372694282838201391153213436012043928155941112813930484102910244914515771989795360926285588234696801407589721159862949739593155232424624116233768396403639028918586874836096175779213055985677791869675311164675255295482774621591385837837794313612424460382176654187520909441147626990756950944407684375099708275327402892186423125349508256679103984742432589832167746222462164687735357457856915265104836379182844380778942497089242360189232955656396854528505896414895982737604730824016217654349810066646764758423252664917355907627092181634114830465398544827863970947612118666300003466066356365141696241087945156433904909498465584722370696764088830826174038724723297024376316640560371407528416007057449484765335345763585131934792648337690598029278854265982834494318522742309744566250132444873912445774471499039817192459563136428707483538210719517421168728885676597235306318907786026605815663094640985521975798144246163704102508872599089148601761114235504739722520964735210251826020546276442248175319266867364459883212043153955837192197039255912005042748381675838366307763561160412063699654226449812487289908515477412540439473332702639650601294472687791880361557189672506042420242291061267152442291876354577416940596685122032784213469467976435911508492970012123391991722992332298743496849085531297043634167273344812466422513688857021563671838726259203499350977640832848154441138395026892537175753453391190712410583539872318745545827095808550585759451336664226324834774168075894523446071815536916331434312010355442351878195417391573731679048098064702888597583743441684362781265077575774664920216189207665912055650207897192460079516968239864145437720443213463420424737450996809026827574825637476328667959966935527307092838629366255507874546223683103818242004074502111524005767036169753358154919658430457947607482621408610347339830042380050334864344636149565015428514708703862233457663035717227973880443003326233658739718732297696235573145227472389268478874459618014486128859101620654369156213423830331489482655992971374675637397125213238505528111806550378512217879857773967993969709474307532481198243951125421819576718570331918983262154627074471798400633049346344597646541797065151157076217723947885970073963808184148519441397826508911867123960298898082108106609878784644979189319516344098793149441820720122850281964426246533893105227545578332891956438681831230106195170156625982967795213427470380013676576469933406299171024026433839584517895898788392353692211853995762260908987367353804711367320296326752435967715215434280349806130099313287894411825297786987683486558308581294774850374744531544737399978121846113225673045972409743915517209298187747365365382621701663591455253540311756256616013824629517694959667367782531157146955464141177209226131486333421463689020652434578762205038594312716449263852235972116719971021356644602941643586080775407260092904057302391659250617338621893074713244015563934724740899633888382812477958787896443813604761367660234480135827178689354821226639244532522926193899131046005301477430772425076788870590021357164837441458134494106154766050908422141433412542119759548337662228630399557101823078026704214077354298583210447119713880849472316113053723608900419751015777026484006721633864313025217728386383913397933808538554976633406618034217601940394506349260560282610958381954319170409014116886021752858361312680917695685684570190966368270220143904051455088735188117728019472324511618193891146175797672524259425495454805614197334576782859794098727931780995585910756977774945358787235543559125906152110598974218285748759500229734543380038767394492914398764978553536996276460448518505638070472806216679195400188109940849197115495647880004355049347294615783780393911359599415391281199941785945353029513967710499320735410494553613524642217506766316320952966950328889393590732679604920758286083510853899840912705862032501860101676627441681048904671391558877611031699611260354671041015499133414085761221998567206781725514329558063218336764721269126737556588085562421841310582753056637509214920316151198818071191248786312870962480382112590449162024425185073928084181773003964216184649523772675564019403818593018127063790815647195821306462350015267791374398035172553152752860749779759283760641598281923647524313475741664948258560964073077818373773097586986912320051345843309840801893930308504973896841710211705399862454120334386360766502064622672529047344620486910786079325919090136563052906933354471803891788523077585016878115958163326969534517510212253141893824209849042040173784606659173930748200375667875149027600872548184727605296650180286400637371987858340400200825077118530365382824122718415508643011281069511756023220588979029897763434728273502987798875537946899460626995761243715284602946735722782413283388907439990922555209199984476960028871659372233221008356130557473210914137494513773275083689570242258792661260220554445307251018750000810712604684659231955581439593348465178735115058489305872587274827286432510049766116478210541143402461141265998202207760963281634724150441804564927520642703493100192757172197423560667209098535977043507543379915221523513562770142693502687070272457326479717777394247238971184295616837426301725374872403680641041591974970847222736651894822654903420859887072747711365321419448939188898192288135942166828996607291405433712174535373570984021283388967777403415361417122719912726884113179969629528038342365274366835657100344099178564265067853262544674130011763152049644370409343003348192731670820052466704088533593722199287658659276633562391846702723605518282726994630829432174339839984173636828291214478951228351858073294461553725992602302518397551036670569604133919592221628715254641376511709568361198875832926847193704600604294663944345371601393044845455239969924827160639421246273512568232356214240459811511828134530278885421491686761596933333086125544139053195410601757340742051673723642043700966646182314133182101273105589403198963351989839059026748236209504125427656120710449968250001722310093618243030194922791893978491029503944683776605064576234557095122076654474348308752917023033458332571976504375141654600326465330199582745250406013455753749073172160854455844341036457902979993376806954764437188976340783737456519291685780986280346845650502746247135882006976464460981109067687217386634975966923689382180857974006861242467161410828248235251598522715166328002273395090459735441433899997293406049334958257899291577556460339451319618908969722361983611037761189026830730594893530478150806377510643798365199456492491253922877391883904727098176573478880104574734274087543716236763270622592835299128820026726412845517339359038866732304473768000251108892368366183467002654754684139091797421330779623841705191720452310547267302314590865540534388766238106854883585946378599850721239901975763748680104476669461267944151548588118957671584683279461006297382577106014321186789857703844183771599348478465199920135839856764224307741476682794258821881819038709674386954264543388052265855719691537584454623607650495111236652147514931939205077758402813988805876770145973235999415758727956794422502626516688708357317615930839051477210821106123636079769118531905116586956796181881623677725228273998684395620440469945118602260762502882892049708867556063373447761048929184893140013440739961841985385546966581081196604418334019842466529517005809974839058175476917979071714897611961581013138421067981900562404423391837771284333946140409692021216764822132546684700622749264829617560265555575847958901097373715536742867188133770241315247865167647559292440813268621599480968546049753997859762586720116819970836826700776209115494847243347468700880153686101155138428704120331824245789996521727299269421618203650011109320663901858898656835454393545842934020863686544965642863792668909936741256190515985336404502126389542469610091865705957944245248537908482942002897826424820378079543103121040197542166039413592007434901900125952107085316251461473604946780718646106497077660293307455487504798347238434728191578798044034097011876043501355591252854428946025506086785700583519276382279518077575486853204063706149225236887053144080859915975605766016569079492922773898487014540630727832659069355395482065090939575092339088921764946241957364082691976920102560518194522104823200197151301414473103100949531580079953645386338319002277320912164916042674393290650781861605893925967431030942536940358883112367690813196239454330681396712794326981506590139556253747766745985437814389985629053197640108124561343320315456407566714050340266597052111055983261342177001003025125111117418146555539326330342073081886085913844145769564080300371990852998626031177042793520394439829939063751500949957979819902344920492053119362197469536493633352683104986033992778172011092167589841283585039422324656562680437817019622173749345806069295215799551195503595018754060407807272476159197003344992776730684054339618281390880729444349266313306079257028945755560276117551746639706212622467925899355960641683737051834754374027298795943555039062399892312415556955246669924711504647207818622264959329321325240709810437680088973300146864218322408445035041623284248568972508292418648941637272319707187384424169032241496233760690670618480226836992400627004223512249218724165889245450589840382656565761208797080187237745552843049756486700965718407350114990358656487194735451154906954396785170759170472104658384630407914115434795648314904025968697435718092328365354108895202973229979538650195826566179362109011016227934901124604457938407147998356742265404558745840700544935465921188137192580408383160766703569179346804608514252091896867737741435824109627686304816831102259675268700811479823700467335048384864289091505762943520349514006101262761885553785980244039001256449793208710219224061680318748330577221511858611786658665804932121190474120489156059217198157815810373996684307035785953620300179513414395351929535216548128090464450672811572168695577332129616365475667348327057981096045675388173050349246353392472130089293929730342933539408224213771010868917595682347101924536835744988354175869616529408497193926849732953771717481179788626725883957945804725875496721546070624424005897497347208845838003941344904229684310450304071461930363952318088341371440291287772019548723256131199178189895452560483558357035675589771375761530071816290358087010403632999081862668893442964476091206385832054528585883198146224312460379355357260354099248950719179897709828740692663502351404257906383834132399986705958130453646383940754141559661363534232771546949297308749423989354601616101171174881598250667085422698774759795079124187064482916572403218917482903327791388255618441583420587422166713541766984601927762785683568514258605469890307520455077570631601229709409990569827754989919789466202298138348312914996332172997983641405517820061000076031644094498574569667949103913359216988687538463897553689661086118083315397666982365787941189803171337514026347822850061841560338126294697884002407060847202649057719206657591008480648407652405605282383060440280681271204120518699407729847619182184000254536743434395506088791584557614648817427746758985456839862919689821458322109501817173615631323705408802530253797404207448561214563446211346957050300089480881489276414260293866121680642126108761427918559389853981008021566808852991699026625239199303266062094005515864552837536310336506436107922137619610864245146892074455751050114641893236079972815000631485161864510626732874042851812047738835715416974784443811638134971418325331483817291162749099976198715941740560125607420306273049658738740152907552093280924456955697431602256121362161227011432414586378681167804749462289283044743284890300897166746840619836783687366034950383258849363961555237182160471712529603300749020402281698516441419067898480948847010908905294795078296815699081929214887148754402844530224965650477488047224920485559562031380198571370730022577829765703130420121710784826616586540366200153284067982974452351950788732289657796501830416762812426607451549914006560096112680284152318750942820326934640733838429474981408488183797023565091371296522074557145678142115769805946069607044629438686028069018650815190328046880585213843091580976167290284316523961744829610159827712395086056993398759432940593511250632455217442923536352895144491064306585288837014195577613523488296227217114421954594214564374340171229785749825246265302685903793142521159883808051547618163443817529226263328006077329761257862408044243675098038533034698512561654374349320502033600533198637266507722102415556623360551806307357141147114022059819906521566082844782747095045392554454925594916570754433972180691892813416399583752793634593991508623902070874392028083872601769927695172784274663522866093692807687058051175933978270708822156452754857488458325651127303572955558899136320536500852728590030389152729159223817735194872046979831486308795993339936965436159301060435511512160760908064617273927872688321111350396934004625419351580449868394664891753466127571264070878451103904298530989994477698304207507831128816064647287588563368515561872389732565860128288442278613420837947605215092846755233386451447308978187295116805525689972870993391363936023511843070552513735170917523185136892376684395188649198630404758473324908483639915374431521010884346441486211790746500418744173670189186781932313805363055387334508962024873483349115535176009514082719204575027188993944946295567278375948245723499758063229734617500961633766806310498028941076116805924810053831454129200478658858688758221222078630172633606949612750801657765421921567519445128365388102458758568664540350503825551635108581468225364328670130579210044933185783719348804434380016042722374808596924838613548530827879392630858251429333548373700687208905298164757764689315196651197601710542796673508985941610564267954945252383533687962415137978696963800399310422427069676036533626683612569501993848442432939513130067344264830417096113164242477863589078116326474712471407143657686594359171269493056858641400155529785383856445155173804381857821643761491545972569702738050765331955880742752640239203917802700348432198110917212076046715303210756187489919121698975895946982734948886189356286491030769548787495234110727004231281659082439767138581445257449157651405161242414924509768714667745575125431507635075074331512436930565150042478876244192537604552952812340602203269314907226137511957059081503057258167073713168290276645772392549449469852114152858585048696584815578775831263809913521586686077603151182649484604923509417557435893294794014410818686146220705207906428365055978273788321692604461653331470301710316211119835161146243440361568864862566342305218910622847550449063411459805991106294311981799894843995003133491529413428676123185365917271521330435268126391864304789499198173434667758532047603703944124075084905102455742776754560678832765105794312994901975516540651195712909397231543470780670284497293399319762447585973078800807356135782378985757842173877208075348796107622963785901452790504761015608656082522280028014397114013452062416484007963398177723890939477118920767029985369771308365077733044823284873602343233120194155509214146733888008975886554818775037189181657942379851401181791890441038499720642195294510550409741705912396147248007508074599478685573922858525796316164815249527066526427416274757984338787198306280526538806585602876548763083980227326516893729706920129330254837129640585574639984355434500187186115636411953293606937188930991712694749577214825920120677021915583372842924764638143992993640018505481390997892979229044108945706149405864701610605094458776513794591901451853174354951496071780441249189867497833896522126538020849739510422902525765260361439545550299555060709403785460040428021602758074510265122885130776424850935027337351497779730679624334191555204156174571196237954002577529591440638026732452891344228564984202862805380161568692034953303403966864390936316216497696922893972806216576764953306170800314018534264657174887994212556922704459630834962609092925027270909884670509387902590993955143181410276848294242148267810137180861631399448774384913625899333869105738588890927459586804001665421498092384046046367623124411194497090810746244755690184450251715003657027247345057575472877109345341842222709568045078751074250675855611130227070602004741301738079995728954995319978019326798064464125480341607373424903490923484746442107285217201021971424888692556455267637840959669717437810278084684437831214617669805171017016440678229222982690342516998191802881297129330569072986142793168917091675097723176112968460398720365882449945078258803388603915327043524047055011666356378143615777252855900777487550210688367017521267722615207123075796304617501769046653593732962896116137408330524563455718399780935727245514051543713127169031205955312952409593698773557219699961890649675425333802418735303386922165790765288316068239520717095560835774299207451734942736712145276713786442282228994169752164854732315309685522565107017221076611312609350372864360639641398615695073698382795891964096396296492548933588181101871233254070695848365497311683119286199956036228895209917392851833692881836930157059237797308087048219076175283646998066086877676504887615885625410998454743553381709021466278066073223558870419307088307220674037784880032616846448008530439569650164418875828764950419585600511634027522965229345685976057647134035905004481426087926196973631579890243994731425015159021707751344661411712713962018281434173810642409988546486917241575214063926018187464355396838375921857297251268389386268734096090470286216760750143953669371595730620673809094898584248533809344113089559403008072032245287745583948392571126711168638155546621163871280238202710012967887125748591576749236331703094205911706854599509962568629945717745135654173768732880834548092454298562654990262709039833162626258705739324194746459277000786574410022665511573582837357169713609792817975523302911523436855113279124136625255138470002495218150443974727158780896913682842070649991482770385721188351870218031959044531617856956061704252944208404934450407191726472375130164028781960615511785392178939743481437441414632484071145065728919640999535647700866440391402526737276739282302535903286208582346550369516936678370898889156646635981596691700979532275713444188038956599676754499202835970385643729911650079890408198369486253464695774546387531750524221188584432090857782024851268150840917530900027176646974682363811336982736475048860772437092186262952904330697244227280433404941056648038955366992426274039717030044552659061423083878947874111239615182147581389233540129989624163864266454954673666240618964100875719762191583626581829998075678948634521440907294282075450346689670241756315992286403754566568859166682088023870477254074561038142926893008984778640438650241943417746071907946589675608900957939566944125572217516644856698065719866591227769695778538079195679837780821057513158210812823033638816726432136255077963736780481950265512448026003485903233768580045394203227190514819897458920616203788161777748346956196077992829244982415679384724931871157948975773813370355301666770059828181669934452693066124312621436065606254713951357170683644857281395952615491968589459127614731868211274481338042608608660309322668885559995678380972524299990428270861435114810945082490926284854388523749248626646608688725624172565640220625162462981878981684574871082370263792495587766401709982951335852092140095992855089639459432236889139011910934211382586865963483900423833674002842889215585329118161081019684723213990456666466015277770343953317918568585133148180265988116875166709268555270025755333154542018581238307649604731149910480054562568825370914757231233800012665426289820363960863187432503420443109685369922612362144990989238153883823875519893043276454785149438453257133297941877710497572401643435284418991009766508807681683782810017813251925564994132968299872205456794441263354063881046082425512739763815019971152845323250093953620143254893843892669365391467199027667218781220528954063494055259553604735157881984171113480262105490124354432533714603924245117784800655414386934877220888292633433207629417249258330096615847365096002697153084956003825329488571300301834749649455778115429109541033144515935586256614575276445578129219182268698478399101990851310472320786137472523680656189139063880600049864555010429693208209419000349366510395160265554250484155128877710967764891670057090435151233343285672090442550833073272334638236765512849140487516565399619072213077087011150545605382576816349569292124919634681640936749346268256151809129798474884044018712057986644114648956559356078194440563450002186648040820770983461007562719074676352966613338639861829388526568325480561120540523005403243366770664893733421439524890627206350899596955999913449983826624448394950027264636299972462954377851919976631364981417358100099030229803516569063095702226685855227486443036571913270654129715432598049988556350163908749013224362476233542830441233135271376733516393335851005058953625235254431499468595008726197707442757057276339555614757040297623922323770871416335860474261400484823544478849650944531792632447269454378794184943570934103192598522021860200118130671473073456199083309158258803145118214207484412553961205921898138292910250204653414911951759740616093660781589191567085252055767851163155328219906236939683240535904523852743957317884248036967017402159978863548054226524429944505136690023201047103900160839270446754971637760793271966435117754797418024590465740280486305956966300667352208228782390564599483791866278272420291094412932690267994008094117907550390750601439557685649449831058868497052749480961393560786669131411745812332968011755574571653061343296118846717897979010662762521746146466830344766088881872828380754108339699431391893211208566360384158055794322659959011823921782851591414081665195482798949085613698808840129845210003946321635123663838582068352053028189686446743424169895520452610499673741915056987557559863184914139535047098083085322778726293099458515606066654564066773506223723334524037380105233299802644574346754347953062692358032109623892759061160536364047010834487458141982073942769402181026720687600096818595813429597590550108063488685368305771109938074174988359088636169840560573974986687709689114085507997947254400638548090932324025502727221439248079396965667680689989428908610061785602002915681455433593335773822070511059258311966104815274432225799607992039787581734209452675805950069668855709433684581396973102046704036855006853879303590779433988974008022538461955463717985793594335042451158066919275114126823507464258370755158662139974438166935578312143374765556127850564968053177356037321246755717660381777418974707232979375412225462319278071018860109330216290761210887656922649621261228169285164589147293081515684577082786747849824732874275749133277331247110535540125109040541940698040429831834335834243567203553847488156690672248798560068136245103546881862051324322582502355392328073741888822847709971986396673079423231061908476919108426101931753889104144403301361290026683715510557349426435992940553927370769851544690605148425400230826695701297694224109157471923168767454922714985866128905668514323098168933861131748677307233502277882867928544479051980802642857058157121576683573912019833567357878803565355465656746569793287907493751567612003978973950790447743467395205530839544071361969705665784414605816947431132242842255833043800667638192466649066200646895347711602307073422460167021606972466467979550586721337115905339553068541898630878047598849168468643955172997627181442870133471971126414814093049927908552903367894126710220787156850375969264021636412825396334713802306558033935429522314105399835867986837195108760475547869846807617905721602592371890367429903909061036984512459355930989046951118676232940009699092881453519678297698063659438442609508383534201813894738648604199629190112912601054950686250744284862217479540297883399728787942735322568172030799766579401694039800926656711722490935939801152207360031653937697247883165837311678959147645620630155942955018919398955444522629127917069819404489064363655127413903888340047969596732534608893457559946165629447732887778138348181487082653106502865375362912734254638853836010367925628289166146667363691376433832463525539541197648891593401365023944945642211767782885065051579755809053868451632430630561730552484711642821428997753421744462759395074226865046618703861878902016311467233929145706245056006948754365681780123573323280790557194461150948876760684430161751575467051334860242156951445814530266722083704283719001214532625742595640342896407249150343966432616043938553264098098705248945793927332328817100129722474753634990559768421581281443216409113242004684067579340744840886685230273047015423551932473714700733494844539335405933369089095488182775433844685558736731672381577364438428023183712416849958338402057645211155476923857470167038406077142527930624154824936774190243687991777569463336526350460196490672485327437135742816792673923303067434260802662904095556432983864192436772371087564724606412249242660405935596108452279449879926859847979687716670534857762613962773940244592789835470118378135463760109703764402699893468369859579243579313644971047955028151055111857052486152455655544442945528640000010334684067639675807675216792965149443330769984755548849156126557975193695788520703518901467425457209536620698179318228905771399454537712768854346084843667569643324925867651477676600229966918341974016009990833393788850318293097233398078788318442972671468099594673932135540844291508156816494490350704591506461821591747571682743942649337941118459371495788957929509000734782192922915624343065294418574013164971875948678053094509403429965795364062564716793778789387834171673895776825837944146819920389784422819675565914636730997099615883471673136764030315751810882157808656786977410099930066330017743384490035548292782536247238865405262864017128988844765718332090044202249773654320036975058420098441138608598489757777694063367935972814759133215485931570668655044429999929284334719728118906029993410392540162744951288598553643070750931352528478538560510950471039638169449999621616372456013887966889797917011690584296683870156063109469565949325652181375517704571620929658177395603062906502634328182597201710476540970395339176234770038817755350962509922337142501468502683897160618033745730260005158338298374006385527541185497036270651464200710151057442990169649489419904106542301591343876876442720721377879645506667768576582606246862421113775835539490092791945142600839095995084303139172569311236192370945394824706143506210919073395605458577435928253919248243734684317120404925158468311859527079803734913213114261948318332927463748808148233282524437056467235280644537654742015807185265166020705627380276055544565105107199571167864596899224920912809599385930311822324905023943600906084367548058876097577940602382408653548502939808789826516311159912313044186085118198103170085476382586231426905829520514531444453395501860261698190906375513628359752054698472209697051485228318140783879227294183692694161473570033049423707665673462504160545185526700175257935991729004052085706778200414729472750527401453683910828738140353304057182922550740392966871939579897542255603818135405820945102451081167907141256482512364687993435491220785636179350685771202471574014515972505610379764075728227130883495651529200614874934387034593289368304237170696890707551597425205330948295808670215223509881882197944186604791872038492996206643892268988136800662293976064156042969507463459063469656493351003948136312106966672175686832537217902982779866198691482995836487155378493977238320335604476473374819367576684084870561371376830938615423963110866096558784316665702759578383674201471274727908654859073366558353392129673684872417344020940985986089262940038849111783126557919936320167317317748463318598306820342184459267014784507326362757642620819906843060002713572135702436549554439959889811310134526952264031922845467699986297257116655167717451412821844784924829422863785584391426376017525988882683193395995078843389788457546620206465504873692818081109815743219328475981990602397708234536350489598674635000239797554437530230832042785382525505723624300132686814774679264753657503551485068868179680030271274869269031807471080108694673293183349443010046906464530553479596026048004894912131995743699290345273240013666118496790867409003098587113089602370864515071178016716436681577554715124742623046694527088337818724123788474555683897209165794712270568516965795542485575310341250279777635352178048154291749389457738736815680379610113317108304156260123166966875659050539477584752213507974331342757571084521900349789187315732236741448760516053683405957348344991917817911162393351278135559433711706053004376675955240136668610799389446649788637273970563779668416029238777167670505287307193977924138592555811984584927986026195192663261946954812527934645685373020299936460767677884321980021340350354069974281755361191527060099937596956070280826091157135038871447473058574163785841120691581026587128229766011633890877733887364402955598075994935238319322478579951323877565814155915365963197394955806921442486531476054924766696360255835478568946845700148919599071107535343202519760159491685854698931063945697710313341806348086954358900715489458577546153022369898525321375438665398522191113378109009624767509415804500416953615621152266154369524508879415825988478215255983220921843599719306908742322124586787598102213326430549374524399309273793751241584615148338911597430934856678455279050879511457450434692312320139158239075277526868396538637764813724597567327474092993644430908634129473369248979342441310767637409136123072175470180641142427354681593498140003271776504182519896052194928057750338093218917288279831151489400576338124043920713197104024260328510967576333865091253549076360938108421994977014751863524360639747905038469736898822534449702102823467961796923109439385221945084221536229483000059194991891011769406741091645445743966456800506103572483953125738007799707428440809053544032419086688814015785126410564418463242454766828286731374377203546574577578055883720932682758585831988029157274372453991063681280349191316771684194461304543113701742397102380765102797569863747852184293297714110653050283248760560309561850282434638481469828730337554706010390744573934288188637233013171741653841989929648633964117463609995885408756006164844340231050325597689206235928291809112196825233911676152686487118820422574378935035236864778998201531285084699623583430868563488692398761780232075223096815155251233950154026973762090241427466262497165835822659222735904190997892524760472880958072458427723280552196101892788840484980473678080460279711280491216020607284223638870582439076716841793419407551487479653898214308840557641550065887925269188568666841854921061991015774507510936300406520274885717449826712904651561691521492631453698601596827136326821083495747613395685896410163117765143380714861096361046232995189337208399941618057158558957668239353820146254418114267518653352607044973475206206274854569786096926186220956037236456927384464888461049024814338905376974732604528886581151006161175056638158860644745678193834806933444775088523138919808316527023295605097718166639214778253087146301303495533579710659533144191167828207929303003950630133337873709162714603362288205309289771016059335244605519536595500189162465596119524315260469254109347173319884643874438128483188257138220593712041361778329557694022328617110099091020499770571008328083692838421247681564663740660681791340070076030748786766359721317192557866928494610723717112181692787253216636103859037545069238859487473766590875573604530299143452317858488613011015557572825516765211481079470862278582779710296607386498049376355220468999260320620763078101799669154335144381155028025235656433843085159856055672654747365647093529697195168991340178912980241643571865985231686000817993036476052130796770825737637600343001539194535462512469447073631268563011914110397437264826163381330445295337799104830884885112132466451678384716040113269849717146404384323426731521575879482608317728586140752773572209565068457284501670317942818373298532482058276800830066447517916843767608175443322130811362911920842379210616547346106853940085388239858936711502447621539326547837267830378444295295861792932441192512145608947213177596687889381423175600903212760414215647678216647054578578753118531155073783189788002169865186523637162657373781499937915115099851564187118167355933689434843494497567082783342814500039261710466138446399402571035640199925498358338177953368542334027280859475860860687702623486799193188896805076603279283131919751708465346079230895427946805774235705945190524460914226767551163976031220024164898394767302952218234346578558192850076729420226476574919312743293758106655625197199337227961501261205540407281122639973748433175285860424413678503546485080603773639675077797057936110826942598901468573584207899025585085545527345495464230824467915819397216077272725029400220464781672193701670564713425961525284783065663936170713205878740793721781221559261694380605638334913127245454718788013986542795106098475153572336093125787120655872893857505599821218063585576432738914196495596466615925164847761065087242327846517231988033150875932114841470694003688058275136507318013468699415010927292442668513149600004964468930106980559859011419498421247330130567735566654765775481849598198758035421253753113257363031076510852846916986680411339280077865267392837604389638888439529162881190411455656615809332544351984290790868442878652596921259428539509911579612535926556509559913025046799662640458206309882833370389556129950819179181065752625950257630243471586318724681187369001577721906661918297189659538434101520156240725930292132342581413064340829907205951144931471478611845728127327721408707257150397174871405857391479924566305601159304164656466442018275309741517729008012102501729194361172796624891504622880983718663559855326232921129623413432841310618143647006205197401060141801961112997550273004019334120025293000595991344907883450951080484803137425507806121474776320150956645435091486228314750400590197216885689112733406877860119219044974418558071170385813154822613552617598425809551325296845805982763893439638970474818425979878312188370292314932921383825627365451001337349350279510755630685939104738106591370998491033837780261474220188447218548687854111458717314414672385631886698175623699142869135445901130791873992087620570885508717577609978957099350494120762554989510774220492487269087870409111859309191644189630180634407072345938225408544981659790129436374552345462933814154001972866600556990612534486338934341838124165602048237147438354704033905146185300443475877748316829930084589594593202886712415671288147582231104568914616439518340188429359254983588657110794890846427537165391569277085726868525730328515025372146420465005429470259384309323307849472835910366331692118599951304120302569059776812382485824283968974357818771305851301390198956000504826385586521441909073132306238959039990405739053951038234821679642913632607527560329458210410792906040318735124599078687681074176178464322674731259618418608157550869672983144366488371753037336483528171261445428960531118342773355477312548943856727333648107832022278094384069464401035846421880434638525442087784304890411287421241668300126037663217722183424608739544269630289970667294688379401829538659701998460637999649475813834436346344412603074395173359645017534105683316535957851698635046356928064057791165290379208628386585331700545416199164652162381476271744743292758147409137892465302350730252545977061725096441810726408230059360901338850384878923452294605696737360165263942995838527481890671457647450959465470423573903125292493967422184598751285403235260166803800097126740506284060825370496358845575787290889644947936647040771995099656408277690789862433487298778381244997358579640570758239390434255356790536342154502579476201954811631998602430380325471404616025864071036652553939966340944381342256237244877036818286119523216573561969997796898943461416541095089228967500623384705868718767462701341533607315323593699738420507656382119502256420460513090838061682587818283953072121237121663284244421821967440356935937138866289198567705780451683316315337323254366545113579027276550212437278214689253359988562566865621256799545450708827712821176459830743235979013439027013296088313425558128342806825437469286959127445123856932590038629970669382383129395134331437218721354264156103333588835166847528992000467965132495703380014252182154518956242130830075492349428778361156566786773463753955899227547939919415336445742236165826712791301674776257982986287727637170204282123850359508466694797109616708666841081521448639768565620044295227859065825870565627920967072093462113343910175446866021201608472002950304092727371641029938023052971255193387698540925458181095710615193449377358780494011659109816998614728904422631285923198037599806337011161472682097993593873166437857393111956979983314065734060429742478650834402427990022065505501036550572789328477869373639095194370042837743595174893136468008623196084843987892577441089474101764273682302191186267621251955677720079438194625362926572547910037162486568681337509386388496414763932397322428556927253227269101506082871355530441520373644832591284882921337064299356118384151826078405708127863179991971553538561372001177854009374179758646086394712870936177010136359562317099464252891729969927957825222906965984702190072930584559360381567966220931491443688591264053553413125214963258838275735625786478381523954036715353654447038449506873310774991861897360599978853782065867989986970316000945315047209411810138333614244818050311149674684729727888767774059783724137496705126198598390890205570035492419466214530707505942796049963285298184866100103868643737989319558111558449389583480296234742718820536288892476004379905326550222970982283169857163102551533444955009930602701485580471682597374686039455911967937048056836638167324048690381833895673128385126278182602217295609327957654654549775469738603884922754586813334030901182026656127762833838241593013828570714242980882855802974923101624476409693302270867547649035232538290149475149501916814812763854759823090501327941075723261173684270373246792726744870293862225337925254583383979601995764485440715269180003351887136454698073291730932442457167542694036095196847592227967396543243047745821059761356265723604264279778797390195202425796720762832703371204470034276741212891654143888141307925212036311993505517371760155471927479822427440790040026796447531336309780367894769223470922645852777051750275625128604778890096692438173105766444584356549700772851748855355149141792529131044043921930699385484571298554638469772972494700465729021086276413304063407077116849952586875867688886735479580583177897871005035090536072153584704401938132745312871678165575926043483937717114573014725635824387945195432779108500854481380121699976474756182108104536119898697671882962619971787407231140041042679352723588285002328924632217104703628402172766637935767782938609725889865397060923060144014061582477685679099699335175104325937511879033475979144852635717456297677053380217488196115996798877943408752939498798403484458653795550086235613670720462320546591291617846508352289963295463888652326807636879788818323298034403130194923105397947709320422908120916745046875015415379446180852660502275404565642668352589027321452518728004613347820254626656870942163620234844663559296538920114125682641848012154135246274531525154966283151637032422392709649137341106437872510273973852802126342873133513203529923178882073649536138604494707751055835156822372158606484174416133847185573072542070527498491046195175761577915833489380102714396464193849645429769674301214715526222038029100823641967321097793973724657594546769451002791783327189196854510693577157393921121895178229116272626728606860613132952276988544199877174947474806981104594385533170316138841543769630332859559201116911534413376312696518899531806214991261251899213935582910961471985423422261760444054259766864463731786207049423185727420379632952445150465278023105834969866977116273590948829042153064980374427720294326615023979709920367935116987561972508863340743480938546669997134098846366826010394448986162995935896279360841616791933719973937135209528222951784764752797545972612830821423494595506566109870764023881869154192751638762818047200112003814102112503285305329933018227137034529639390094177379499267597672500928281990884108236967751675886849423913541905540339430001299323151952614608274765810135002755631769927597590745031274132929150396020771314437250349994219002298078235699382394588591366772357169224993781749253434007942143741847903667501798215446567663164218484270593608123898243594378537982722371416913908826593482918498747036666673996322410922101831232491272337222872169591780584075538091586745778903055650288721222005062588137707757264076446505329587713583349039221795119315209404123643879527903367100191209908867959089135772954423166061135461334538157782783039515138020271321066548759142748648062636199434999822135960838942626535091162513584832047046580307023419646502577382689406579198831710043142643662501465070442452656863024886474337870797184236108611739744360594687731476727237999983788691732092483771453116249750195913109558871177965154571735856690644664957999866182337664044409737545646904987843378659540791918039091485831774980014514302719755736665472857770663236377669419336570260246419499122444860083594900528287329027512760099944579497217503526733447516433895442748354661246669003802012975767719173337089532279047578422266530253171281502781015152452613988282911769489094234204710307632229357094422969039006081394199253254819293317046390261760712971255014005406012486735016547760489321209409820233565635090172433957155226288621495911405727389513939875866444650617769968266621188954724832045275636043538160302492401171618753372413856377340825395231841207203430429721848308255338767342933286496406117592151702825735120330935473959105407043608806116137312777206999809030893990135008312896221364770960860915100422351987801824720346349349129516116434927158290834893485285098286333107039205849481044643408836448096569098136394197939035283466962339603111235969130905020350760222923452050135118539984249144482719803660215829463724537856896379392397490368308239691784989570175564364838960386824569530773591600937567782900920433405404888829495351564117823802460371936128038474994542292952370859626863765007866449614860733266062627774146271701197699785753081338286485967509152014971516383116296925430785811206674997486645616200781286829641973798371082431348109743928718312577377534459137139740718295142565707210464919319129220304904859882605932349968738434202793917672300537535010383401006075538561573726835088301033355027896989893864873881136764894664009056019134278313662183964936367401264457074193207331554578372674489399763093082266930844047996649823159695858390568577457851027151343796328409854999760394277987390993705368688069652471762121169392011004283066752853516771185258001056119776447690816905165933960755459772703592543880672215815898852672953851355721286927041642779211932565299707851910124039526195763555812091405970406893974046313373545750720641984524436818924287495013693153846967942943265780695733198037991682938017426558556112358039995665977437363403477996625394597627682524826202119210450890772938279337544283349038457229258618905798602591520375551053881123395593886909270932951503737871606357255244758096295697060875327347772773982477935793942080412126717008856989701401094092978399171957832943591741789055892515086025993531971683451011152681554354267828899204618021125011560906454908477481894984835536448798083218503792412077316549669684469709191755116735463482094208256011270269134988095924932345588729486847890971380514615471813200244245145676324792610523770378843728084699638995405216776362376101237826971625465573267621630903551661521476869279038223200029135826744796066708298250573198917856621362761946136582884906950700144320204300586792651900828885969981521688634280118530042224682232887743197885566859616241491482230523129178493975777772211579068099148934263702923073659253720996753947033979076872355799663025218955986639074785897955101302568055125375127162304678048411170585871274760129707400535170402958733539797144839704199608013652488456576885252152607269267693466655689130810525355084244565534409683808426057487452910327905362221924460269093331747387853351708314316178068918068795990446195430500434636433412909774534573584114022748413495440086387321916871735646231810128450268682725144285499589765734861249655420379551097104868699734735100522526602512729184720371952433475546375873208839605747710138944185638973721565084264415679423253217269635450648729806627515005135853900199364901711475563946646809233925190465069597999314930111879978060992090384553854771651438177897416112675947646170634116853302031358915475591312084518413512825796754383935184054425754604644723885057543043946101490136106506737384280059664343106194027890452890191641308022423381365324204183676788701842126706664377993806178674152791609242282047649649219902163793786530857424403298998097976193394859367105298732470848125367561872029229613371308991670872662550403554334568016928893956123753564158447389018482212393203969445699280451730672876862948293098126148900239217771542608933880552113832290596331837937830707466619889970561475054971548899130099632662698871764981719231171197319503310913762765927906014986266484166360085054747174488572844084143756773506578979135594917666870706940429730402554948578732269816451520670098214823031933486140438272044454032559238860917070627755388341058955858812657612641026925419064485281039980634650441747510064783815981008916264556828721530085628609759698440429624067666519299202057604578873017997495012984010351149821343177215969615816948662083032864801833571919778869006163470368005200589471204117342177020315009063688583594425057731565909294723436526006891243801481316071281261704198701872013521616552959565985427029338269663963921238691888518274786111937016198899457083498765683878665589324302537050321709182707416843596754359999225879531691060253716469921797673581672489791096866148179623118414253992878389312884253458567915413695032475689204233759193441975750916800806343461964480821172285909010939559727656820356209162490050386974183482072276237209953109626700521675289764541578708365552470144452093032773460836252962308822904900395472325315699330951324217858631906276558040736121093074440388443577021064626488109159655733214438383085724349686610171743215588580096440654629140910028079662659335508856353718635438813265415574238709723570383365982160637529914184132894188114962864720888378167342816584750691059162499132990566499048175658368224154443532793533438497784060656785116631722419025455404339803660921541438831250096093099306393161855616025010290932435587349817725681344873837889386439154512337700618926721037109959182680720432192552841063167720834380030563484229963564148200904520472902522352346468599916997359136072585727883975312519440842977849178790512685586026732696868701094654733508029456956468374922161851920829205955507713189598468482452637561194867091426292980248984365636378400792720265258808941546095919413976150521117671173266270853202396916125427626411222112294536401031803356624230090875424381756778211050619630458126314007239313821395869126959215884844061516158843038479559299620879432507643323899358839011397184287215771085052106669112233093903418906788173905129443990416987168517291977494603067900823569107933654485911948439273229225159400620716733184051436926698509541038964883941940753684761243448234197652179164858531350129592608278755147734113179936211253881585855963208116475309725226297865988743047285043707492342409534663845795453902899318202563969130458643386892342286891233641744017114387748208943236812611248904231316708128533118428435310797162115754999914587070614576867528418680800888054468874725955972733711106863586523957042550075233847410822786247805125480708094232854547032122174144277689305973286827495965255125198299602233818597554752460974602419397634970000332973193946094060605448782951105359115672340919356055459167121555548453202918270890680596562305268030303635633070325618519751215974927380530331948720147916939877559932740816795748061874421431468934773204535827361347808536371352052187389754326446634277008399038474202494757666047179189122678211171784071599802070642103702072659121832742493048852002185188576013039921974746709828169883582977560781536508447579543835711699978848235487392253824430483556951886960720293458602075207814669036130804791301750893570108528609503977822054196922935428119991762521389945881814489540925008814075207591535339142695301560826161797099634968815670599317285143058507680423144210993493197072654573819042321974674339194620076427045372863105456409141286062169182380819436728261125935453342632055153249413632233512444120558503079561327363596084511879997840049850061349279751766525714115128346982524088504557285760084504686033177735663742669640171863694577167164725463826782835014596935730404348744939921854648162406649999685594686808685764995910410468832736823820372169118409527939382704749673736903173874168307185303262526226988409939197352549163521557917369044086497420905464111700911953870486652659692183784608000928345978210812251395563169603294986505352920932352237118226499969661925616131161109664453160163496143343355498836641023866493514664378545425838740866828744315400225014894945511723187663926231175453838971432383438801316909291883027721648222286358208753715932867270700274174342421855552266585104167078617304309583100264858210961186983469754641037689789635734315581628415904582307308505414395007790402810937343993848339502616437686946724794416906216950903833394252965402285738241893451332022608407926512109480926481104542902351858720276002693914667484693100702984113337298658613494018294219279963620237933455206028188332914925231040870310104467721353406927672817700272822492462904629489306959402667508331098922896173928070297300716513333858062603658261111762166372747962065201596592383657223984897544953075360050907891360151375558874983012516496157544329474389289505265367897777117240297589903611896386653792650503388112851150885208478860755049101072167347658049916049688994098439176862186228961621523371640828327809773367047607949452234491359576749122326447932903342484795628530320347145802652801563495593094548086123300920854843663253224965372911926331661237638710765788606732291864115887574107736353320887056744353305351312547842628348669694499598446656982723378486240348150805798151307261934997436179366566196365086334616129705226169257433204209841288705584471201926071279693532124411000568730188741890476073994352473694092701289840162532020416547772280974339316325839993850804184269340205336355140344296140375597911634845419493827651798813873234761949479093456565571078011215752695065770050518464735800042361765686948673536064755396382828730240695364226464411728006389709683677497662082466466453171311600267926402446825960147178339302915373468171019416228139218684158108721457196857500061965262375350822521883884600739595947136130225317553603960195758012372720738991683039848250025532726276400574154572919600888192587499901392855511531900634723260578776873497489291978903360829108688458679734632988080741683833393245810156612961632547736737637983969082545626791516259127541706062776606245936269570812118414656724816375335957983210682995441935696676233271813984672856708649375503509600714491873330908837805875776774103514939953017645168068880687028847696056833823169577409458445799359683816245665039650725487777034471683333668771594942336276834576721663687724158636850329996389596824164800412295934687578646036246789693728908526372140152006936811417033728895923234259348724393533114086807478221905032988600671280204284529551189681414004314373764189178345463314890115525131652520465099108143543463735964034972194325163800855942057238748412097991116451934372969674080625217117838555342664638390175037619368760444930802672658092582077416218829532097387797349059850030040453841835169744809887603652465036568775987082942635183673792530102964403853668599540834277892613420169153846969829394662059775732462991145782258705179433741765338104344257058221164754865293333045428035914629413757155816129404595157974722044000481800346825794632297625904569365875122212175397079937555703123176838022068993766702800460434820671377488561710759835464375037966590663278569723591303112668574673367288999796902005372793342100639904086795008738501282523472291739602476494368141546366197222168583896783175636397202352389842620671471124524018807228997247500125220893874818989058095969371789053434359188964859631380724189971888516730147378456907022754622132077769247696814153972775833043392136987363850405179257587952869996825592381770511502457974798023534021760246654793249687333118593587031171858201618865282225248676988087526790859832546681902649818400310437729093788149044004218110523134132366403311731252668522358842216988488369198964746525612849800889296183320465937436228605397715030005602892660819932846621137519151463736351874155082326865767162309173938297607378462614872453611524862012831760882991221112932961168408466546144216306394588558535769470831938526283952839090246751421023521853174859012063408680119900505252563953608039187579092552366877452328279175804097045616159625579813523713743832741706501397531035559300705971850551080462921770218611368513248938759117407900622396628342587908382212766915922145924713975055318645623182751804045274176447678550719191620061196082750394838645488820783139607778870022800937228139877726775144063532527639605885398490343724734344629898722118404593880879703550840887595923062459784138579305144452238025554337348199834296918117053072924216865400263951619754242839609705621805635730841605979727937121164938659078258452549954622512124661330549719574739039187871160792797165703249173802552059277851451524364603575376517727831611986103023316991172007732891561339786988292962483442510384582715748869108673070650815462163998067701818533804715919810550090711616451802940128332063443067291670177283371025569530491086112037209542526912768940448475744076029760417384032473529965213490049019216092886494731480632833860994147656868747682733631435916291468688335038925899859394295911217257143262573859351057127456994817179627739052484157805444978726615658726956193611205409083808638432908844065830812592875588970762837537387003113887470973657335343937094766354719238665970611071161881558999955278087584881224054446586161610295810039336804451924607870913646004105120732553754757622479121715948660427600041410492317037610565578100805589853512983559422357447340222989820048395846130431680827526841400988115245114042018951129615620821210834118433743383054739375288684593319277119799527092026121042808483529466876467894019678450912256945458319051076376799553289562121312488773896482000645653889869746458777014092785801423193393112157550730356228555073486798630755928993625247636858530556537996406143143633997423246904167864738627290511531040165411337992889187681308485688524704305420754350484006651873095889442088413889600338768868917915614664291232201594844795657609986599023856100301531347261569314273863027746856833778119725223816923564658641039474480392139638148814187173821930650962817219188111943298837410753377355202553020460825739844249604629194648823146576837061342757699526568132049647546437656083582053594101940800232535826324928214548521283351738093622925359268236478155901488719524962614805004675284154930185883534042705843238985595306126052191814309764045087455680748723629094370327564844059718558336863760383841574749480075164922249691480336454490070925270921893288881990942409197158830109182604815921392368873740669048463277062010692648328993693410277347583144284716609357094461065218447045418602996340600654221615998371124564701381394600964412279752496966760810291916306117141245200577614085271567407685999191369572617733365395523850124370055328341221599527073169587200819495175836703822965101524181409648961988233153430288057188058616260164459306102928818212085757532290628906960986388093711047225298338926603711791984174052640124698848287514328398914366635568129388299329958247109120405346726040198594547516839658736608796567499824567348818559833891920353624966431390791830315047729555231728429487735935073119238497675427333560738880383975145671435127001992101064032429954927108519503020007138012222559325108699528923691186169502031483271877948147632226171136732932468126456171426233268452514965685368678527636122679561281814197658608742223486061046315204597135976823668521004753826543974559648780300862282684315755496664200605161278582730283051211655646327083615568190639543788184747531232921275638817386573115559891983672881453233484677763847302558580971504768280478999995071230274038821282336977365954802436415525762463086956862511753912203285631480864665331521415979825011052721621803093159771787270762539236919749276080436050502616341237523354687508238005380490751226421495283708738239021253543099031768035862577806900198313548509753809364897303373257504148795567548793239597063901348002702009656415506367981311968297828988517184631635475141881386722163128081160521508401627695782849568747178598149415202947241628151224743172331901021444282547264371388029668079664451894074077560596518159559282187279795662631116437212984395988665037364739316129906964199317693906552978789645819643660748487725829601690416478111104452994415019593413878635721958765178741536643313163540567098930344538003315728690962263534989209729215433473043126768709048207793072281780761367505293553051348342735210352119706565513697895674287941506988227962664041303218468913956256151294630556124196336065656121544601888845863228651471467554937268910910059463728011428660324140000313596915330673608644286687381804178439411654998859108317124366907315479012667785132114634000772214863719276476366461727138957128337263140985085004947084870992705644162692653695391043633859780914513676360745618082708147616576863275717768627473240662045436030670177885544654601574725077619476894337748460939753553956010418705327908971430882911209750727655141526559598568106068984854574402550820533002795168115566022955857629746349837675744731248994002926130756093688466657284920874313238556084005446212086370615759463487109700069135635381621325717696303786195038797553242949440122666860500498180465634102174394034187882945946363187268940094626057685956437978380292602571661651279404329462052399411699080274781660680034326777298144573504882643322618232920636440847274923444550510149433884608354970159956729465730595353637295584076626507910921749634010361159366945559745044788466458622335504424712785329353564787893114522997314498010001082143148005558785927268514854517292056739607692807120170393055383342232518854472612308178912125317332401715092180214388131642475151017408544403822595039839947322125329772808533385346951522677434388230772165212873388913223562237393973437917229337162475042331895323637333630173059376073808364623074618134641389698802295409420000374016216721124306374137514730185979533317026939971427840997932336570215641536195374626980434443503633096217323602805755369523304260880458110079411881361142046070267922621496057284332822984666076009837648322639270492907229371295086835817671276531307599651771955334597721862731319210360249527597737868393293384403766611883589811512307914921125812893921712063498549068360984126756198285154962711722658458115299142267316215141073360572934597118033953000389632239286956782500994838590475605788602772733114219609302328868178231314491374288419473094353786422110318544140256788771837214441870833279528657877507507334043802495909980623427456116307778958967004808956353294397423243084706075694111454747639613350782956770616898083312597751910105264268587351257804170751615438219777446071026187196661762704057013011818174111319268962429438180459271078209407201633335871035949048412533523359632290890856155550275773965784320984672098923641395113522816089506159702847421630658455078365880895138513064001533159689920289636575250681117094970056763086549133359442754995146550299530804703196185713575629244601373288499716279463969731310208183925810099310498748395597490253434407799632410581155210941534681896971924134749706888660356974544511642390088896130497553415099163266198485776242254759065989315032448348086990359165900450228864641400463389253119807042469266034505131467598914929508827412767470100415156616860453641993307307710534592416110685845810348018731923350671063007641290092766152365879082031024112417176107395627977070749880596171413430859475963192408460598438743712099818682180707148660630944118701901799745293129068078744696698775285175626665798228447925916629235726965035467247201235988042364773672726204792513349649199599974587077044408759659637756537658642169445341699930898971081481002857691659751522512293189315593149374013416801573497567566382214723099030374518613765250736371232074299663983256492040337335171523314652212536524619847210067536608126800509825486489169970437318218902936901624713009257033110628868634073546045232466952480183138205122181932840367630584869004439440674419974142365134558218850488822206088652527921638342824000008573203699575317791044080940319654082607124154839972489732878897001459968996185983914374562082733282572802949461746193901093086840222783258139343353355305401317123666744073967229135299879140415547013181781106550190641292706206477301991202768679277979538563801518881747950523331999752140561656757482652965241841276626766675373432942159487463781506447419078270115589115668515264504495678809845908130958913166077575954974334254959858737251781661816962349426907519210589777204205446684376435577738537871324601345389561163686984378123783814521697012388550891266783275952475256551653715139657032030463164730531785520692556053280059435897640791148122096158251974012506312218093722193551590459151344268969961503482846972964429652523972856924097737510035198208488880300808089444471793442572476137664551162035467412481426387087788099909702934876682413769381348714134271310566595642033199128111905021975425850363631268699685302798704537804071767014766714081714643493010112016619723960371984337482293019900652697695285573044631309277779732497258938175238713968043774193781927955341572251516615375671856796638317323583919096500845303549286622688966006595113830616221185570804290264620177497007813452801750596002895081803956443449496107343737593467020592441414432454272259515909851236752139854142616695351830549528963951278275217727830954071267672325282638115056809136045237854972321212770394637841128000444011903658403676718741273756884916702749645507494479076409619707226772510500467316692168037761495484737544376045036517672475814247080577281305537501928198292666284241029331503966355929921691529776498710802263219490614360734538073231270226612265561536100743634376041522992143539628316616406859163011125172739201262889378829437203361156453921639002932582623447315156910145030392998691882592322055156212900539370133020147528811203959965877617511780585620547079358203691568063527738123517292498051904518912856260517200364062865917444778951705222032236864208574623726857613034635315850898366916735604476450352033648845108491941211857291248267785792678193729278107122141309576657409148539083436860658227247385072366480954263803296131200968978816835086386230255276215056889090959375072086986768216989949595599460011808843697193261068771748333148266283268257833934123948509542847457934333307428694077067008905120961217078062204664685101945917979478822027981711304196814101896560105050299615684718435433003523707121111971274843601643229921437925457766916169788979504356337804450268521601113602527076516073155028063899097807105228670337951443714542071592495502486834958677099495307855607347655182796924821750145678963086209746874239848022688164404837666595968345466346454362626083949134725651489630588276054070483603140227186880785316194172596257886958358810057718798052377746200040396302195855347432165610195348543641884027556860739299408019642743012558782680188409065522325911828632466569551587180343192002954130383406334453473545424180380665523493395476106830470120342132076978196236734748907375703404902696957665737217049849369498540571717764786883269178289253471883528227024608880137070207286997922517736759617166450273154150196109469330287521531399208637701108371448891171472877768075049368648289803030728812533211761580856453186120748336025563295606544984776552816648879081737037631229064419649131627228546833025333699282492407432677658171145389013588258639919337553976060670652772819556965093192947788849834316069221049046747898587549406092365790466574562329444707082261926888888511084771392357991931793101611972795498995622056103957297175248882525839955567165908215220059303966210882144235908121727231232389423939749537832139740291352142993682255827544298127119828762653808403073698994463950385848632893429790174698196791251136135230642554325222579505898399879815418790058717252843253719152974608831940277701169455527688793080584078362378909757837176021370198772254546548890137047214695498975854995742394701217410357733064968799894390716716640136994208646222320663192232003769424126778508375928839469508697275831091411808598332729574072663053520106056266099495748543378783664055654114835303655324516092196509554225667845639092776623991129289874093810011588630175479876128237749671778564677867008381340971980285084300919674447943272657237405510250604301169005316189526590944132659384397075948848337501307669117912807399817639375476975015958524907179570375142484314192664332913282557782018918179580770939778300251894400471569459810013571836632558523679858901361658030164673759430123463110517111024454136864335516664793396173000786610967619066762152980135284231725617094214940716788033172663829585386785629755179717156218181114813850868969961412347969992172190577110014833347449161413099942567398757287896414853187081521892921150762277618961053180609032528955966249467704333820533368551300272103382193642853190311989763261482655811157083598214817675297755748369523284039574458626319284127231526400585346387745459596228627186139225572194480312808143572425255916994393022837660664904268561634347498818178875259725821242658865999396028977289696519320788290909774729090312042539533759059434031086687190709197489511651303563037871585162129932282097771390934647115921128385706779719341818238974198542305953189511805773740320960676437441316921579305506355672267079116225906405288223191784453627410342973015273316899964374163334904780096917738208345342992098744169623055143757175562326420510141589783465268038271203068785095010375178901684646597055979270539675084063984252445911550790250203645391158006265442023715714763818191741722641492591906413816924680296384767590180575990069512404562359169767681877151269539842211001016443387087692775604649954724396106526099233511422110619331162052799494438210719844097287816123385132488478383181670509965423706936373641975408623518154156275243680016074744764854094473975799459581013945909681805702060548332457272011358439115416422131590855591935248479994141062624366396266421197985439066936577385003066821855260909366417884771783374843972297088296187204964135924453021554358320385619072595284248970367152266201626883958736728943745325971091973524422791660925725492908759334712207243374741999479135883547926708320006100749067478129926721502011786797341763761639854708487141134376650686688826569787030806080320892111773531238403575837617261851965519768850234633558051604557717930893821093435909116510127670432699698855415116321872604233578093234242949718315369490205555452188177008269647350362709667433733268617835494552786477747740224732920406555106053996176956832958660293215014978073746421643384338700134222419649578243832016971260008432017019724013904114350864515236154987274047345228948154594383967104429235065384943316422817298144808841107463271289447699608084340315637962329874042499398100891214646343580116442014505049509865668663929056292150608332737120808348808237488075309066927381591213744904768377729193805339567575517290833470602598992379992396335770679635045918651538070354380825591466721973067276297353549634701351189996173764335142530637700422541419976611383288796807043192975341409993899482851435903088225070319488736673577999404718501681991683128556231621459061082525440288280121861265482399457542990578307304119509851700575667259815851851724304916342863212829242844098691384908074843508669440334302736391471618491763792505650597624422338136300152614833639290314694094558749508614469310319138217690125937386917707262221248894965837221442751896807618252273004417917625513730488584793209732096510012547620574941812872770168164694928109273816752276308934595383688213380186932304301234151390112092483425174491536149573501184393004901911156525678808105955481619164546668428508916449655839109806861640041033814908348103694036641504265395740843211411146784811057513121834199809533207659320414238279156173846641775875107748009768053998634958910462739608279534703673951207154619147059797464495972112627254918042964947922765495775140031960437785684077878014551528079903717415952660808233830313830696570074253132841243784561347648257753222717132212861911782908197727706647442845040465161129058824335346820693208258481811368881565528287351317734622836454470141660462170377185968501071023790618569161457145964645905226796979953030776521899959857409340734979007464835588738185069548379343135438171519598854877148023389507901898357571918371227934977114536801408677569194759481327121155955168023525577263817572898317492447777245768826306803196918010907086708973254705574257009387182071707535623478033104693552493534829024093259555729887528332896899648728685473808979043272072055316812177173123263922115929205717108475893344728570865912438410362787340405382814898462930078070487552836418229703537086405333490985604545478861875824444270019866619346740407510118613965544857532656653429630142629232822919283364484239018905114669632482536058704402016834418452334635006909265442654409009649759987449194922613090788078042990831159462418419414656042041843634418755558967053226099009349209364363096158334981329497199736158767358937818639902717368468000358223819566370927028904369917860572117317763206431784341844281257384460959021335336694770334991260537578947883208499609654542517577023811688782187993035339015329491121551676589658202819997662485326367656205542068497194652916141276950586139776472949876089735525981165292417588479129572176426890841000831094225718045012289893000479962717766108240735163373432197843418985768793423305692367044476010433071665855543819888212653197781555714416939111147836213713089616396724111700523698946908051225380739983191464626257561762281907458155452570978447530534803242269859191265662348383014564472232001595922771872563941843547073416238726201298678789537162604195710896948950375186648981983525385930342815225947042862346636183007705236032722843215907895593471421839925415087814142477251019670411134697995297737332541379176939470545997755190892433665604076194829218630234274667428569216997474029845266118496159274253288190781214350583809649288647053887954590680014790331118414958892993061902264640588208918806686927832817912648404113656885645752888765634254185830767157377468955444047576559166663391641388480481888391178962778609501033265328899868108541927759449280215268036153039229540449450945898438812282304656530545385005275899692896969007660669018043617671687063508777198583470335339322846895024161703659028750936270000923817565307812659045341440511581365534638579029753348867804459258507395613270060722560421474884504101227075410629605690634569373922971861380123058743784781793365605862006611158242452080549925581722775872239253389958862448709379538438507595082387595841580585396989794101528055687564628412670691809813959004882138592095321432960218682647808791736082971191741068786852352414840733171712137070803639411533004653555251351128043865264100306769618811799808354821619418406135133555184023347046044431885951777976626140425660875210393076380523040645227770470971937581084688870797819632824191698107458853468105356813585758663889234155679981555825754672495217029554129509529649132328923006316040174288523886445389042965480206853089630641837681719174491475581542405208273001643385360693912204848401860060616255835637246438108139404881915152913971535657874884006089344993841568063628398177825675876871083629067839926696151145209874279160372188448465378943461775476756442357976738261395359112588930313358150598528219675159398382412630678285893120222953306512125848685424412423038367897904292662843252997231214353086206848471733358781908516726743866365264429854245239289003191192369590440205477626154600392486367936970218833444628648087699409402092395112838892301006673306797347877305429218667210584872871606593392312811703118825907540464983463270633349941152192211755156118936441035337065347896751626173608263554564135744083147370405060489801733473650837981831409864188586963139802359850412763840580780029898862334360510487299299303985325819693233717011310193182879048298066414625952099447924491047653310000390080436565960510636673394892641249423710298842476285600742776429543278617546647979954123028011154571885746847525294320829231747800332299930744951303132155292035944860439512355709089735136328204180095041827843691512572462160322181665979244182425909782375808580286903757567725811753126624815387294239109269206656755738736330821213791543879615680806972433296437733114168723211169658639176968539709453352131972475575098423774527419640724751289775880262021412138992211475149706240743856841641522336326469271039443650209334219156688759702044043775858584141665176163698466107332298276581469005132726526535497390306965677450420075880017692266836786497358004682915279642840045324796124584566325261429011746480058506195408961128488586189901716600721386400013566334491518386399940903272618538795795724099268821743522135995704118543505257507362919632982346503738717300542462655279420133332429029320368813263167896402722316406515592121392221729211645915038341615362236524462287300899117251567555374983901811289879571334544416568000292933773355648173101021870727738077430251033219724005428035895017448166388974653475259131742955969641451778358361727543605664131015177664307043298786863294567484644025070865870769937117778386911552052970745679290580837416369951001658738222819915672293190393609946951080185281364623682343323636678384423141036121715789840537766495348383278869085007074632680177537989499777823111646458677764359799116825591459685621339240199032463296482710262668555808463748317725560584954065651840418326672865355505468455320072628069686114916149164086387200559047854141572625166902561435224169726779486839546219308933965858491663436058555899678725326632741482273766518247177882109562203757466962046741840191770043737762220575856100141960002151591860821095331215356598333316594482610181443375406700295207434871108253191429589697665796444810252800750847963721227662757722446851707815988028815239715108320690164204978598275923376167708762374812476188269850728233903513658950230744383184266698355211019886631734477076392153094651441008260415518600477179481179118076779346523589057802683935241127791884277672861272019881342794371836047206787740257711318514632903527892159183384849493962006757661771423600396545509990441493185468782911153693521601042286383535312474696096272584510742118705190150864156971747960654329483498949581375832899848755279570689198828225349853099307522281063220859894044048476713176805687968787740216561921540570290050579897615603499105731103386079814063391717382370207489869109890946873093934345201564893676562832423061307150267373094213090918822084666073757666142483733162895721317151148987327081448080959365097887627568749367628742786419950804620000188003510576106605018147102212524336572308848587427094719113270835023187253189146805086107348115250863297052873679219549048657050292738804266711311555756396082501471429320703919501688004155455863883371349113301859536099518056348688375496303035934355184957944363102096021283239746123590015948026424812791305855443729742210212118399484094856427660355364787857191569662923026303328048289094293957760643855567574726079651843928465466942605501272211383770951469665023291299881523205381471282766981173755223031724829734475422168737597070323499539439422718262738300566159395116047651829203272133146313486591208619913325451759752348060824658463624765170408322818420942548109977765638288042754794391956364611070955925838542711031125397461131760086822406057908865712095038307421672971808110683009741015507031838385370952994991599897824569830399766197568848386665256631186603981885003817143783910175268720838840802941716413809777224658713232180231947935497860298769708853485651539614415999669130937389597526088914126289510124077236457852171793057320672310909969334107740923476132569905257279315618521573785342904365380885080036697907054963400849051378181525220503761762094792321906787080029572807711919197459904879477433794752654747046714142538257632721986121576356294905786580839819509787767416165601505770627953740777804593174774955955316848031485364362145009750075869602339703017158521505948367980610232127854049475061153682004148947442684108675999653695845024192179317474313811215934524974498552534143487013886606960394307866993796595713610654961481198822256803898623261958728366189591481257462464405265016226577010949448307210780161159387439223052109311936409560760099848887307353410311344621979288791019544816244193585426886012432739801071207385251917557594460055937010274253955128473665698980319686556316760041923371897026119646551102366926352646810536077922348171787854359777378661343573512551284358954800609314178346896183318739166746733893323819889750781078776340367609148130202916594463795892446817603517660656940575545470545691153247344342247619986589422322394170540761061852374361228394316511334745200031623544629333713026378497723751888995481572135465491536165583573814987455649642505375742965074409499242200918127779646846190562185659041956351454225318559125035623822689237292565038002391322247445720662490142810679599981185726435093910370713003110065082962062005384843232606343921729430659574497246923105844999060944028378153296749521609610734919345690334867196110912335950259055188012599522315857819397594331220472557988531680066205984170017148956452856381972466169124695460106241145343367333237195068285869201540542247744236587052738382047142121368126312116531983783564188495826155067005289411146157275502313524083594886078509338331130233013642889012022005107727146761093587030297612042511397844846815322998597731659294093122007419532240961887631559795518012499308250944225760541282666131504226698818539669010871253147603610154330469356416374460555522373778794960074755284828386470155037771790269360683906709702500716604303690705765920493194634523761738488604386308767557262981730989174239968639107875824364147774343624178842956296784967790383289753611277278296119959664179033924165962034009641143844473950052344220579048386166663093559076844157532639918316834212234713495186245906257908375561582407379402440591810254315013572650449814660172415369881339893396932988415980288216276664537689842576298307169451014135401876122774855016038133026235329774537983952902129949587927263202064060366043020912344706533363554481153106604443752550344087786310024074915484545441609001371276281906007153719230872705323788795205779263902781310995509344643707983860399204035910872859043591764400826932665960721933581000958500467485801386595996559932789187034410134086373328307353298432172543975788930895804601039084117828984380756858319774451055714146981147180238718840018229486303374249300740068168620163311034927987024735795410291389746691480678668647386688198468524364016685418353496252280295580655201943743763534134243603415925369465821684460723562509747917326040457824863689085697588150701971848641077133302769565389496754141195286526463190559611067835484360840907739428733115262656675392983405169526109862733269930289241478916258632181639776133859282013302101028701840821970495539682360511593314272282123584736534452242353854806432546501171076052574602568562038544778321649480458104652137650544215527895179021281713642152752354966556799423974194741801582390890687067788456891115041246329885156833283859744697837944902592869451850790620477366414952217708388091932464087130665300611173823826474880628497451636493896800897068109692896422215721157419840823833199707450161514920209418657233305162215857408983740881571022151834082594346343204694973227797325173438894191898622241520887426424302667943459898189692525988800225871735432221478697058802928195433022233940575099293118715469047589171629124118927705434950202231646257272508405685051570171694641265399567717362291644750553345100413876051460442237435084831744583678616038813836004900826240195938303406108821375624466082829270376306030050147958467821055221361857402812266300271814244393487605768780689142201922409368156606226990122359037310604745550067597672192842053118473132871035820132793989675741388696475039113170956010933877057756260032767932399127619949004527928636342222097982238878814058112691322384421712374661204965534361011242583468310697945460620439865544237018742783246605137991695670933619838744761717907856274375498014525174609236412754765009398721121165918541195109343288641398130039705197777372983668142420959327594414737896691535402129351202831311795211659577460545750450770772021605699784299696362730676043714921191929507083855729588284361602721222618326547749659894893757545709853635834617041396459596863796630121076741958426561816268005136108590503409161929070855905951156047192553945964305722184677039363963744734758135212378677298547126542296264880181138031830379895735797363625482017918649418420057583300926488232635843384892777814571170648055447185954527011577129152636365362144197329624835540494183306657828715159576613335625800720704638540775066941131533852569994720524736709996036162261844734967598168125384691955922000705178107712250624634051919305351661089765594210933161201211744538909817737094623087845150007885673397975498299426446548861308011851521583114289147424065437290175581982693413561198460925835726892965895831856560634270314425811924142451723782069111746466664476697546246296029280874835676580546580009597273848611827362595515925424460227032606769923165090125014400164600954729626437638114837020011095694049123984930504639260271775259929127721776452652732461085935748854648084968088354444008724461793512763177435741815324069234911840595203700366032628987707161497991600377228080515409728916505469713669221070525585562487788790876275334882190455778454619129974153519461769888572131382436139196594114301814879084429407133809248186896653716480994326536738759286758849844519299290216999158258378633193809495049954327722481263301763599300847673424104221466519003285202855187026772607299106579419189711561128756497863443553178797357539489892634235300858298191916401103201441672685582972758662365712898774084414042280245326657840847190660925378555031645944946231251904104908850321656297081676594984255478127278701007626687563632631327188051445738210694543418267584885516653734562585043572187024205626534162162330439814012315815942935755307846833369214137914876256174616369945921223952855066237361083956487821414541353256221923843100984192118412143488135487655496973329898019015845109651761304097603698792276545307252405318366373483160058055768433326435710308837503232772318341235235009954523001919167736123840993501981821637598843587488400979251996161403364052396001483776027512939644858767504416129493168843281148186656060575949218198882648394869958532660127443945484116933554093176048924143111270573764672807170178456884582381513451447303438133911803309350650309602096979092956375306729201450470541979955428461496745319044161322816079722400477515592057013971698476096074019003716810531654504070206850054384486525890847569468154969183919348855121938680565353141075225119545141538623999101449808760526496647629947463952496931826743103808497916331479557372233207634136136699139381925212708885985951605752499628946438047467342301817264411607468426962276356778930351678561525848432775159149866361503861510976905190081073736563912452453968441606806366748130331423560927156822382355922956833836898214236139570768243474243303409014525919518333327596868442172657272929450214404359151858855358780631971636733776994282334712314681768126155478348534347462482296989085683633252003240151223698647864781038266556032767697421935822002313539490633173181662027264246222983362253348186569220962546409572238183138770626471155246148882745526528411798900605650993124386712070518177216989142462079417474095979219246580699126248356200870254549173208119456882992488490686575655933642929664544013310487281466063673556150433247103160012322369463839699306794703482050165301177790387896479714738061571982456241888528268134929120096805181875930389723945319184441718864055982179464348687186766341580301430606081568699114021726868082379124820178753626778716122903060233162451054019386793623589926898446650251291722184910034018620744280242284510350844080198555998143494456754873332360710186635696906567407911504496114912342533379054879395468147867439261281749465157058790445851380885963336161973515981176210806680245591270829165300913288910947526545752176486225710106056547966048056215703519846012367935208291871859152411732443637889079754594634858950561553670419644977153031986697361355960546506529292385901250479271335407679808295838162672122950915199545840650223375586665952662974858874902799902785095246435083017042587361761339168978841768085280360191137472334328722552019716591310851299611455820070968067166920984245339293635159890530942318745282900542172319720675663619133119172636391698473828876359954175733315889740909367020496404368341566546941427293437927136750620526375704108123554703385089669426460355337600465537914611119573246287845657140066712973452528593985229147612687773837604599641031828065849175655006262369014580865537755594342972705267921942737590158029967020297758682199529272918412249788017964509220112589138312388932569292926055921594259970002082923080233559937817886329247871202660092334117175445257957207811895904633582427084189849676286859107016064029429500386372934312999477715873619056324679956054327053962841043670248337706293705336533912017556355287376646147319172278372404421059774109607701639518411839476350141077335664953680901208058539616438175686695460815216700660736995272624487821855136610018642533854608998420657159099536753362345158589505749563153005784158055338691228269008522778253449575645344423628275317497837448677666229523626971743301417995833513885842716257300148863970205732445446584878263470627512184572425726276899808153976427368841240679002365043063281880576517527543670453843578848115024170031697787266990848930594225143876514594234391214628346279872041670793720608460453372705884689973417656408255492357023872500885701167738362182798754097378129788370987382393420128211416885406588083105636197502208522687953900844193499738502142741485647438333041032111787230348317572444601922631842979346992625351722501269005348263568801499282435001577969832098579019285264322490313599058351368989905011082819185015866878725190608709930176530509784396419880614310290014890164231841608743506497281346305569169400281066637276872871136227183914411293094577923529135526636749435764549694763056285876447739133190173276563446331497540433275769849778627720898121941671258060990384720298829350591892070446952251846191092414951143141410990599735734767566823476824719751049240540221704164458866570034305885557223258479618141450665362331792367785901786972428927296030395055873087664986119399391056231617838391605706471636133326536692296486449252972717211185217939094400545664283059979738027018697880666309677680761178793362506013594661204450294538851908304722178285111121073004338887896930401842186813014505167182055575753723996246412334315008112455399509287246810720169304582993923598085410386818070024311526992657166203254566583215769195145265684486080288062440458587854306970226864177828102829420995403568247478858795236938385734550797543708081777277652311576248639616039624596952739761796875222515822401943903787260552910350848873527879564386484606758329185625261640150248728418901837306797851972426950894576201784933929104991272803278443776993268811746828740755494184797091208915550010447965930972355256314322100669418513875161283484902522896981719596351241414776061721203644867744449027683957917732896183561867510054779577454068311057619673654699661192776614772221023889996534484163482979474255244498838607128134715407092217025879682267352483311476581514309407403076465561189355751228024270718512709736300959564608446712682268380323037735177962266702526003378693786138428952727659135496747891883176076979396330156456653707794214453140701605061243100465065291855447837191339776872234483928458019780577491980826736118071070862065926639694209022514262320332409038229290804119439227885737962778339361843277103848855414299768882988728766097080746822687932401453110401165773440350802154571376165020460476882087876339359256070489245900540005234732797498156382079573675700377266045713677444543755827441661145185126054280859615396583091544192021112263326475540028876126054440203171400179032663308282779699052469068464170721058456960468662880028051347814104308687265862668493292377869822821537537360932901794787031221747422416313048023943571708999143534140437100270919726159048021775622492821197326792023693257487265956863771260428138864215844697573912401875933988112627632883994874015808506466787384287204296676928330830338150384543267216269108462320809286053639551822997725018931612540701334849335367922531242386924069388794268975278108033094298213951445873213155671375546037907474906334838185440139827831892836975850255830813260395573236410204948844815925012737666716946304312383445083264965258051847356096798446711435797040605658681046832068639863967928682371459857127944919727085925931370826778041446409954703051976733109353802483650501588864224724981358406887866324843251235982301787984182914742957306273106629240859822779367948500593060651254746046926821348448461611363845062925736596188043879212835258744277708759161168591679154904151479529086984824355694107464057958123174617488346901719968645902677357965836961119887366123965291558568602413160986285843780087521849564929532663253781480920883986485901325412731662744112327187202548603464760493680980924312494195313097595926620396332512080532598459159764089627791673721696115349159697788173461156974175880003625337529431626066039003169251660296767761957466841140412082248804053345310782262131388222529760664162443107890345042277122482708595519927994876372956256788238945903692958059922746342346475402892966420462977423008988701006990240589441993247724923646606660775458984934844885011452205215392675029579418209365503383903899408042912744244308959187755265113990768121164821120965316113967926991775092377299415592102876395662972885834139671713810920356699487673166057894555556647578375292786864188788077980001868155246602193471343918183226375892283694343092776243999955295000553084898894078336563369034814333381662567713405125027221309478095005985076184906111259175531572381092351152618358290533111573772363907043141260834106351009833605808017110516735893253051834284671008107405056814109809980387921858138568983096856657930700038069365831052387668964440399992714825650606739149333927757076212280564148946726579978924157823339201216014203488005145288177000426920017145385963279014874863707603401967668919788263177100477621249437970869242423237189306626790344013838109712963076463232372035506468793996404510891021559245801340441568154935800781261168553186627460815441303510288830321496002941532729684891726753501782585914939800948964008721196870707189897463527255407818618518022821987650914688796934135983385369539509624069835851947120921372711559172611395747918986726213582583273742206160628711878114591951758591151743952038206187433947692514340642754897164515828968431317608692608088119154004781907107297860316237245877145907403568383997338427248088039558567638397498771223990178658581229508177233400637716044329735798110829282795953892543956934457806407809827495395048256408681510427717137130792052396464295757601555046064279165490893643127550551379858167143984806583144225964499710336005378681031576224578982461832814970168877578215650700085834967220135999103041086124139304773511607231789294095528231530088974272043405173592612701547582765759380040842110485375988735788151561266443173345485076601830251598968206736978550971405606282650837469530375818654167665866635732859870298150199758985470083055530010474350966002751563950181987147526665602552760507155170257025298889095993662763919259042341522849896974945266008287086949030734111261970460754118779909264691806375208496704493207479545906066418948008973624068364369267259420911414053347803002172519641459105737300567249647757186927977709013456456699657776798457969777230855989263600370912026587090491827983217571872859471405071706009763909425501143378078712954781967183089002851297700127754411246221841372935766449443471397486105863921114178349067228229254273556218344543011718171774645213268675679716403607223328355644786032220245953668719033014128365674219351535964185731571557296851134247689471640425743217237786040759283870363570211185194049800240740725871885800574078303994868303944390798797862438976542569933773078653436352215150018642592041633919113031226033533273839777141597735238908311020603087137586780483423706878407999399974882988466982839926156700893853805056928866961277657314512357407866794947658058294780446082162224009210876210208565861803657992917546229518745505399468011992205618021222199297154582138323541516526897663863356654371367259086395441314248591780126073545881310133750262005164481444110597519047832654409178531040269380638177465975249431638131671563776356545637123623780773452744312403848829777969645125318752474297431475554761075088667690562906270329334616533820356000569176663396418176511676751266187265161492403240106104976123044704208349071776470634725511524978049911555997613779957543410024636069976301973066534997907305177605963310649141225073302342960843724052634203745050037871377905691072726895176291177193900861173151627411008103001353415515900880975142559259318224761193047626984271181983531241012957504449700711701441460161701642131858196310482681768091019764090691719660727367662811230978019926988320005218744754812587836295100030291145102354142002313965432775499346512903599397561076718447650426438239974253721268381369821676205448152056196786462766192397099365842197794506617067006361175691065944474575972191345293685209018440866345010606047160825008844318556832777679709399163700788384989648957221443343100283985838428509995934800018217719352709947994942168131267746768359001433516745476427101271730844671041835316570614016744559082852733563643509208447422266803204942912574483453497798662213281869558316939397900834451667457476123774996572250217674936727667095146509271181095554994884855312854907548480014848039739949047611073342251263728666078609076982607577582773419297146668860756424768142417138065224208107240850881521500507442077775581369968281880294336697840861467335798634695083156396080426981734464216938811713128522869382327556109782468142299587114059559751885495908313797958642483876427732838588124616193021435547467820297937657077373524651713582598943217392184994328950558417267099532520916974039737957700019575734408721000101916199047951133220282136784554000843198407281096278667962499829003905906675592514729838325384058655335370928790561133961009328608560950244842113022483469069720014526359196966468423052380655252221991061522187081622786900877373149337986895218416045760332876185724588937320133779334072641796990706676903020007200631048982242454895920451292791002009524632974512485564317993883242171669121415201418136550744569707204311305853720725362880915797038466974604679830872091267742103630994413304962636812665649424014180831643959089129713183129011130640672658856029325059736268973566914700666023558245030575351386954183586905444930556503626739734372042323132737279841672091153067885381865121246011317225183735068633527461371526242055220635907691479297693130980700741730599732555779606575434172229970150816616172606221379774259647680595917960013642950613857571919412763041483662481623909658384378928737871542659148052676145507693298747285988967370117218337966493268130714671381762445463519979040561646046624098435659338666400930645674418003754058421357392745552823197741183828197910736572699599556663439737630566823674086310450785189116582558675962094664438673388314492695914122629193447646303022068212561071747898348067713167558676119661351324705004997026086684329942615082095495500621364815539029354499687717114799842220664912341319014050747468323623013091802178006863919748470825021757458550904806088669539836850966593002173200093214744652621337177721792654194139591012878826114248525451999941360149858763540047285891535642430332254992986361337642485379039204660478794487439104807718208891164219348588576817955203239907483551090493110483912210340810620085976075443926756049892229046680295244481256338201914931058622013309811327770833402231558636704379774377893007044137195101631934171813009864484776658901650102958372015605980344684047092336152818778240894030320541510771954858168841241645381203831560437031341253379280085652043562960684154010907051019880652580905754026938821951637466104902182572561073891016117528211313122383626607786025927606504310145544744165464769732438544003750672730066302322355109139822558439357961987574316938935556388835570348608429243933793374294199676508639601731916940540750478233773731266443814416575214992375979852354619099615071534672460760145406519549827159159012465107985384588891269323496937077708455346781309277306352172005226677092797287234089066129330147098195378366802542481090978317069947916532357813596190716413431180855363563161549440860573827645675721566009554537245349183512878235523179178307604646346778825067145519683228686452365635171092348453702709859550495360106842861284550983405097877260413545973837289249013408243328893522003170076394103302603214423435929053031696678238831558895644918554407184856384872292194249443856575054612968401198660295874238808144628789620025694926018994493456457964984471599137821243939058389789562833566081896202946108375329571995512701486242481865825960963773272372511666997125060061375440967701772018779641909469527809045784083206895235644672869606099291101030786172799904229365442502066585926132778178206416258414119001051432719423563809890971964957573548048364505333852377106505967094557854450685536390102002219004039737250086255060253266159490181712399131953832514176186347803314376117893300847626741571775189932626605287324258003796528318879646199364975831332463856422726863763819437157150421378758110788415118980960158455082408887690316106443227885637294089608918090613159248039736906451175380334202808819472794989902148945850018755621637866339736618840082311063092190254423200321462309383747551721327584200346937096584482145552812845683497096408284802478668600697973449089189252709857640797940876316810433475660677807180010967447517608360579168882530380439000839546445178922041929997484276667296246828088819551220624876548526825924897286054826705703227781326741540788851166791636222666141894836184865000379365119600037428270984509388240008458438062021570581349227062243355000389769336604204722148683299773568497335798274867798577977773806844999958241656208138965065063662900092269530276615432160101222058149393052094681499665877345595505952739859420085649851766413982665460391521415104085270695287828592281539643474696508056301955352294465694689715890580958465114210376459582347012525605892895434038329139581617817170688756689159617313839999774499725893927282456768685031983654553826330656432908644342348498960392927071947627332462551789010705273105717240010407779293719236792236113437455035325791521905000799930704559291671027298275568553672476779217136885967996838955026654749548054044838680494473882768963488790904695348292939267417792186144060429563641606455601100182621286883079216375961473129826231347581072739057976658143258078086012416617563985049543291126077649984583571324020009543247015671041356544819145337131738500499160054529856651549199844766972591103228873113463653198762844962458625860590023400418956813522601237430638709673859128092772389233921556496927382959247943191319711279548776927067528992065722493194094722890848131975352224734420152928646847974480432912119122195326646285382213713569975334691964664175558234965137240138740380841659809717047793431430010570867939011806953557223644705240847505241857209710924291207449927579300241226825896689506562679915554909847733036662098359605544026235537167441321971941845536441128505920229324150937240224055446675353624229833412728358713559722100685500835909219733643923897416760367855559301329040667848101314378499574712140342421526631442119169651707565468775878368858582514935306730085346633542445234290344510956026959916599632560043318326521000525101936224649717480921397919286300243803758650111598504815997411210917013156727218389244147712172126445527823549580081857214043868759117833610410365989482105142885894268659780634545463085114180616029513625903979573765123933920089203484628213104466807353900796658813066433559358145559569660487679041569016785800564991306889602137688122905281214083105058852131624254976692630084258585193868912902852951754438464518815797617350030496480133833187573124565200405646986958074905670219530688788628895698284740625745015794307292152852649704185382477503561122247326003082007040432541186823133558967934589072744518212508735592772314167517934432683848008495972257526573981588180840605311887050604085291966181376549357281011997554634377351514379117155921630730162723166464125245795787181707458508108289181453742080060388633516621889266687238989480263911473588170512585071577077858239233237509939733175495789935573172663281280610214139227361189490713476922751765183435179510455916913838099765357121195218809671626042135936993132430525823480014636790831593347597151098158033408272456392372782642807655207993544568635550696363938184079347166038525426670423502594158391471459792062381407542618404528634151602586673414984158972960207793889826230270027168543148692853461505826374901828039946770050499938860517155496431481503534468651247850894829808956145577238150958716049707905309900751271517201558478708307794703056108841810644146623025911814106642924173881224510685647002797315753511015136962913119306936230968553480830345164321828674985144055778426157122946757808688424416360412758910404963740087170191136939771751222459025636106093410200156508334369515737942365483560979376038411159077830059963386510445261977911002559166256685030116312998842089167590556542468524370947227525605819152891213591870519599965181138410642259618174518086206231288140806928641936072782617127189099242577160530454664431146051563531933023142971573525778038812988388058278841268376995092427299758439737235331759126211082946854100574527228509240690274952690475782986155080686816599879726347363197891150110269964848670008147171174373360278388840405804532494028391725560773263674817688135112542105949128319405037833587375232168883285161509519288357659325738638878731524877472285913772319543111150011826457462857256924866356343329295264857418492136990885869892294262708413963213477895697303045636421709944923901025306978011931091050355723414129959731388264500554827404331591280643188945089299326865517958866343899686434849619451013300556188453838817046370862724187467961473393180195432405398299158598222414556330967625406113054344690991208519998015368389994467250669468470176388868982983510395957800058331433112691764378663396927908266007500228142841948361580176651256017930898134307410868513358838222218886159390806741032837310036187562083935835891055907841016040260866102950291331685127061154426960086438770919776940828259796801818714140326394003864935041345925527681141227741659116309244119282023888606585935157238709443192985154270960941112848304670265171285490255122709732323159879148443125242727106447498763490132796159630114515095025578877940310800268894308398266545757668664221501315690211062608884776370044274055218645579045285518073231632181310230984819975642706741687913162364662622971587966460562082688193949183161734433223438325112921459928528111052212323452480095071814559662369674853450170755901290448582992280034905620248365837502298504497404434363188270274794898405770344819033770543902902895815621009904965103123713688689723597995181949645241217280693421837057687795452780830676758462009495546354722225887530963837734162497161566439612820089241571994784334934424544239712031408792843780258157643489870502245128837562823163751261799652868244518429884982936540169994288890032852390979353784335320584724472646762599944660820443254138883621460916800773762384566997532088206305254867564537041762689943578071923602183854494000726678381946478353030117604461786359605312312887828268318746871138089567867557642354426604751736108186054107507895548372558325901997996685757201544356063885285662198933328485587300408886732791925040534090881740610021143340396020846783272399579519126323260762145902172265826059077017451872986238810463280184295292446374417915676604292166132357680833406068315641512518518852759689256034903559154475116882429596742800306963438975907456791575007287220897000085168858736970801903230091900907106246031354782061194409495997766055935375042575619095872841031401313009268860319116602504212620140787708928853392958331610978904091362204055604330097105175841216645250405627969387630115521821583875081548899466776285048833107589210093822103541488099149088960210850202951457146213854467789040391603896346762823520255669189910109366348157311606456482063030281155338266498547870769426420639884635573558651533756516909848158710316406859407115271759381960168764073199469143773355833001552549241814729825655273646128361016307597061172811098156561985884730164592433017535541816220633937315479663464811539960410681730595602050048459735164277002157282125435327471635861286003834490406544901129116395225802037834814663125175073288702932101042668752490862874116121962490770429530994648557762330109292869809888473781020409546318477598215430905141454498048928477702933395386843556621284984253159509883261761178301692055167486229734265058981553923680864920811601639365939112527413923403610473836277346112624619888356711034469462184136843976889355060382424885151823305847888385004073956594300317158802272648706901366212721356263801364799709600082410931766030391827510185401446832569695138004565082420920502367971077128728950574042279133783599830252386937985939002662117184411261604627711646852956766073225307899432061487276504176205823980551970286173365667202708256938888691333486483601891958757502036145630689785225598644192793568039919707455205019089155951927922613993007186472120625450126125994998826442629558434018050943833646073917141468261178273480513454533393959239543464025881484090809812236028171233079934994325865959999197163300867594225542186992934121723967266231001194762043350220592868849462353566491013697356401704215617458848435957761507632534281401687718979495242438623353210326355435805057082126605249170959581391265665928872705188853741559246059105145764418705518319439097415058543086635079214788102727129042481364913743230559328733950028778294552802778578684375987873353049260187042248273557394711633919560194924027397097568215823163757506500348309204623966684785825469959282637484055758578703269080987372241569541008038696548870749429914676036456928756125689918371891686615331026783775189971988326365715039999717538008413437293462897634448181514208568369595407836179495840740496855199435805502437480421086375127987062220530923867613099869242039545050845447172227858117078940488981403818866620650275257578231242031877244299070737335887282649360784117603103549389469019185483611882209855671151089460033412865877431468560218724953807206453666317667667088100466214193631771545852084357142235972052057929426648315802870403727579286107235215136733976564902585886592047285798328477105083412953847895934305651312776266158361839244650776954678186946584614974020192175034749829105426271550651292256781450546623597144694157357639045006807853043011594819254678373306411259373523787338978852305196292426446502713679460605970995743046442578897839227286771505288644221479001559433168995340565690766900134113755461706094674227811006836320728869180169963089764456493593312420909186103242661035355383031906129214395525112942413041168528092657479663323280937321271350932533227590638986374044630871697002762154867761020284142449436790862164690864139934325155720846727891599737736707839771643115234757855280541553813120965783346698117762024418758206952891463075405652837171091768209007400077738511573535106808675583966914254070185512497589948539041475113168757322300659636854027521249770916225484222864396718522187206295119672698257574971810511889499368959558600810617865950012659983295929739490878474764371654899614427518263465333284445082337290751357440913443006903608943167257889573839612977789903171205908520418216513084278882795704199387100294158088255378669880394881667277454780124474636308322830873185488938789670729175329030087767974998111078570883641362747993956349015499507268454888211956403099182670655787244584052524875866710972280170614017486265029379721458814411098690014160524357844940145796460414054809520261275572936130540649756039588193924847064336991907626007881118287833343703507900018590486123112531477430667369956509963633996757346698700653848258326355179356865690916084467855087427123586083057691189217509727546883171127198033237233067231354339270791613366453933396050359535110225046706698006499043553792037028154549661444736098260753191986254627298134010267670126482742716917439464060005640631144530727313341291341085436951193637267213063753790031810149066242433661058193514222024823386374800967449330925976719462974475818645654116848944725237732260596848691018493104476822834528327661285415973658025606056525156804264768252850738402794010729847357479038650787481686691488459757360256358386596327671064654380386813265064117830110307790607431240721816680550488141067179882105230285523598101143416052751028321720583636097003759120060630833893615113774393427109421058473971736256046511951511990218686549052466003284922872343899151465087810145626999825886219053020871574010269924356295660821869655095885038011896382515916168395076393418782657565977973986003314891996385851192565439444474658803966518014115979512000737053556055310111449796929551631592686469934121563816535791890330971277503114449073380259393324299814375866667148165182463988086113489834582801062939579428925434923536480644654584136800835969239074272467285841076740884200966439156172100163882485703491730631785434803600556445075230791581813825017267103852620630506939280578810629040179326124423488752768828335918605216821420083836121241298170703045798105581752934817802044394735536381956132419268739111178061152222536668677540753506537641841193238472532574917151419944119442046433803459552488716718761052285264732050517839376992714900476315686482814731993527968614995696280354923417762962407790308711500662532718096796780504913589815662632786023110201612423619395188321303843807109713601402146723008131613315164486774347807779147109980668661861445402979697409840542201307542632683712426357933949346468944532286522887006824694555698981718933268822735163069493711854577731655899075062091101169017503453572962233826322504214392865019466091932382266173590433262152941281114952621093857127369641974501937738595310682111518229714039058769597008399027245531175566999660812162827532744465766008395778871921791611391291264547952230694360698001148445807751891240704013137194069959408346890299955093284776171792949862975928085811664251424960172594411917763246661152058523466906566649137589802543171481889932211591452908873455206176401411091585474446871684351690517780097456069864211361801814462493495088534353575583787897764964397526024893936351962529617601302956026053295234345033703012937929641656384653736168446635714177399287313391172631353369941229284737797009864394165835072175023231435411633821539256504267057053697241098204668732746326166552489503734475524474354277971185565238937391986757940277817268087620624019525055744247753524042929187603311814935591030557372075433430545164360658043557383674173598351628014889660715738616372874821807922003394854314554197543640785865549300337218833093192706176412300566601264864419262889091637689004134267437600822229468337264145580954595235280564945485672113241703397117029063537337859109399776561128623545720302356523755034610424274069226007933835824926491458053415683813856220341009383358721744574879565234872657137416080002528604488059663860629575214590406665065575116738474447841790931983271527318219231065435986635411044931155567433127472353762779836515406077204869699109584128141944640737279272550168330482903684772740079533876943715202304507914912282080568436423906254623288209318770016774212633047061163662547788020558724200697303505650379572432972647126406692929885202972547199281299262417231866370995139865851777196261273169652824921657485700900298654468830377505775050689954557911335300238923665258568322513709437667726496402535624471230033256434543987569380628811971665824832511652832200432009028197583203683470035136848010265456851210060036876226055509617174829146692511457622423725739998678385165383272890323502583124152883675161547498522522644221452495988617748057996388406157221970129528030371944311304756052852338521197993418616466315530560326870227554759796203942089018227449924011356349153935405303649949439980800213723122755158998776962283430695478143083191795118793982523833461642509167408401345905851507373963784643794570408000511823426459908728462461191131912585253146188768364778697718835766369098776402164478236413848666642106282589358840839807503654127131331274758814401337545715503738198791442995005938422724423897650751026126201467335862094941579264116653926382047110617703583236131120142456330480895134690344675214209897476681048974278867867222459462884529967550687020059569986235713290931667379407344555141878491858470251392891801229877408099484065293369421853653241230033616934081521699857443331262121107466282988465012435547459087265407009972757929330705656152163380265545736087447641094802117472725520783831420282362932329487887795955258219662100353514217126706438348243426250772380182092456811248202284296491611452950346281491237937736966612411568420656261247665778325033433953572501037201302483464798316236829616763699176567433381603714546883297353199257339705629430269040919325026583299204709344583663591346583922483286676000284128901336496866223825731534830427511805579299683487976767438796382254757448910291970582815253538314946700347429526461471752283513691414514495616490582329742080417364591658645605875342897269874577861218299577354305255973443171255843238450493090784816603197571607134163701720477922344018272583620708563212223046880483698008899054309276027231122217941514393805607225035226590516924447888107735779752433491816554854056790628854256141488689926971674876503719552247882758977918955284558222968751082448425854596280535543368602717618587462499426965570222065443738093195216069013777066155028391848697259861100147991130229134552711145001380967210937597713118547815725513488412055885699830583932295320619052661284943027220431233536225104933578763137012165795853877494025455036937773126729255222406458463070745511624366933800673286455887717067107703325050264340948646590465935539675063633764230926899997874949027952708090706645039131461900595653841286331549175165656043361078870905111664215851324890080624821582592960261400923701047214449027870853701719634814650513245856043507566699226868244425485175072137544820113620329692001795171774562198712224546020707942771676627282993389987368412240906069649873126918383632661134644150090226402842314535929260806206829550101034920895964359839523297191636080935556724136062009082501846833183088238423005317602708139261869702259382175295873824630449225427476671827010779599389247786551782233974309294991363376094561298932130542116372746700975737820393647507622945465797679205444570613138566141454584856209167878348268422343316374190237579764638624587449046239622934340631310034619715186580162625417115778691101269165466601164916355964675135390644124047518543622686403770870102723019887698596447873924784390346978515710408799775937088826078124885222014462928273624765735784484208266073908157280878828450291054817965839184858806901824852439307100163135270122994942054151640350401788108755556780586009557153362243999407584396354084886221342840774043577129940751028889042362006136688611169408336221372785741272227079081203865472692581862234788494214089808530408916085229335240277297189594775020918667641117993832350676435167297129838663200312864506601429286180225554731593913120256986284866342836305753603451416609016757547638421460347949794225976721723162211636351494630042278389522330433167668864117722399803763448683852955428592145256421843989606658879371573192164596244482093116424713375690014026042241562648062261544890422759043678185428378207256167161725093352632746147781825078638938962675937704784644204176856422678189349230822359754675993037181881964118830687342026696771573459154130781933116499749910196659611548613806097539608490039081181890686569823500504737807451167229403999849677565411346512167690795020609456231815248453502918556325449242673207438170280641955177858226516799034862131359609670703395614497112498659803830098672664173201047241133309994483630086736295722583594413261304268902995873656389348262768695149692865629364094870857540500429215922079983252091000642046456949065944816001719641375573544288383627947841987477121792399100540162490364104182969192285668355369573625372569935497965623973141229139993570966794245890807555559423164467067781717222002941840439878446559238176695430837190058874856114722810948078232298979443712861893612156924453509884810377490248829796886758203816491806131106490061453398086267944830003315611447268509822838744038761368701523072202767107089091491011695969388463123421481694947855004286845560504839414442083304278492413952204529856448847759597031362959319758405371244388185325770898332304772346147023291019043260066643173726512927612200669113273260954783915261638827274369267505196336094242103228649890963003859961164282161675270584978904382943529283892497177131659269805089114892553186174269317536055718351885545893318637726484824433109476797268805150743609641129651370626349074239463799838496538500682100809283372987196780657072305199974090790137112148779389687161210274307881399407192044218888160340241746699705852124748221548573403990868605413572681114181348934163438509764776885606485996847875799188188081094333923125629206664577731059419857095159067862206938605626995388224592125221683598425250701026050938039394042089815736953170619927287892369166984521465447792264075489494008678712877914764226804328947575666651736784922307014727236084811799094840305713561110929669782359228445043757756057143747189365569803377642195551507835618002385176013788664231898153422902755109537339569246694621953378863670011030212161413652052007044066434362093812142273314042590271791385007034860373833633089653787882893240506336235769449182577949472412104914572510344633009887061537793118583646169754596135787903607561670383579745538285627492671303045488171067661525199893856676916585266422279454834684491860301030859131302393426317493212383229682245658126767073060078848411989709571501680189603384342463087214798998075910402709375455357433927279309014039678818211340347502856686945990652472637967805752214125051778005820405315986062539161655723557648047145003125232512752686997722943631326432380349712006930534844893661129072181690234704372058070665534056082891213138561758223171525740740275566179720231213774457413703442924058079566688160416777909957543707151442496601743949699097952324800527144301189178668936718647480240838925361093681608376930622695739651175346709320817784946157396918175398547508819826312443589647678430616838707662279571959047830707036268365771363704471771946552790632299375722823747094578799399135934870860992901577414203450931272515897765111322702103227793357609801414894441342150174313408093054628948422778548659035138683972805076928454883881104377494652886819968045513280679305129015794986296717022728038900058985453081488345820183637028026070446554735223595657400342017189509514805981190603799622789131644730737711754958397700943199147625595618322059941447544571078317643523960840504962361366149669961912712860397158795483898460718943256494804535578809909359796067201557155551469108784335291059301268307962616812473967451527801650691974138956583746729900439777204818681170060095857443399811151602911248889444373160672768578102903546582495941570500214788524427409300734621847163142144005911750338010763104964298444451591415821483870558622947083570611000022156731176463296425804787380627919677039807750442320839253133121261134071066942733275415120342124477907601842839746682386046145624530943052902619112899327349651748636860233018070842775466618097929623281663998974576487272316299236139927174555273535108557910595569006617323980425821131460467587407101775308950915092369909305644620989606197813708406205421534471995553888101013095415868189769538431656187776254448583147191054955003446900035212726463210261322677419293628755451926997246708148904223545923370380525210863736851948012269617162260026977014038416500680305081219906101320272711481145877192749439486486816659932096330047100914135989915108947249730674826122241732978583572148062067131637435183208632577188973121004171549217037479289629756660159552931311743293822814996240341072479512317965071150498652409364806598115090130121834437604485125426751019325886930240792285484189067241427030392585719295213124754398463715724653970910044571314555295560576651919873574448240618826780922683537081640110106630904395442828991290980252244048308048519397576893056610968927330658795811340952054735595865970651815718819881473649300093445945412709751943333662962357399854790102813342266796057078522475383339546970234955605316046106745097947594252936885692525693436647542361472435107872385314741417642588081380010577978208798421032932384069675494571030701792473227063612260459762807336122535798809255459086251254355600933078427200338283204177813159310951590527260896398815334853077720425581473068092220572202711410121980709223731129353933344002475604470892740275851041706171025855867674940660703189960662350463017742430885379273844277420515721139349458161831631073367197009268350784745130859159506476827603480588968019337477125791359649462891960726346011283657478434567728932093881235978275584117566658875750776784317826907393394302170484269571124405564210910400631602050887014752496583076814684433296908239944895914705811035473872607754623213476137950088159315280768028612126701320324689913580005218937219503624098422504994065176291327006428784048509799344186147431617029924094378897719368451453128875269822073042300547917210337206944100187891789543724453398868020379966656171278128428550633228097037184635412443603326213363217136032369104846250056365134510055853544812039899749707615532263647090149912436944955796704602126460229402013209799222896576192046017539478311171494950231483980367925053164907888068878060361183607527961764234067770761672854465655493512597790971081137833035967993134179908375777224726002774254227407304143292107238455389769310385775316106406844554943622452313047849918652526514279328162107285194474796525716644165643221611342820058595947800351233082944502468343147103400956350019895984288613409953378595388643227279334047520979260894894484803374095437416640384905370838999820660792943562678857465626804367086249890826382309109350630392250513245864037011718333565353620682768001198920769236967545161000534535869255815684711138440312434318191046590560273132234722230426943036841379028380273655203073029606990522935587438461492622091915464889668745872057555852702553688544007915852262792332416153893739852970300944477246272060593591756634981435619512681642493174796271933308296588712704102356519289635898977500786455142948128119933256385208768935314703525623570261917629084742810259507206755811465473830620496020895402698618131124293868529984736931336684983814848991077288548714120423556935438534501487387986055394035384081692024360602596904226200660027760134949147575906668843718209915507166617592151299708645372438204082679821336573484134313121679671891845881261878843704600212759334906386993442666170297430827781620327719207898907237600610889612921616994775250090081929899025304688308666181506225574240259176007692175449352679275391779999062456136902075661586656761391184008974448263128940008234982836414883561775854669781819475821650687471773401125942630837552851792851606366324709652829591405537733819746942720888236818028946122001273127636562869006706913384776324526203548675758170602826200528810137125682733769742145798520998813614761523100852379832597970084904142662725731818850897497870812942922726218905893762167988030092257814301474279744537758912528897891645382549556608318546079678724075632021822367899537025943805779660729353574188628164609160486148646805638436039234298082576187504340961603409193473815955203026308575698100606649956969452066993772402517410495543993338958586420770628525209037698988344887651695647766886242519001433340171034435477458427689174337825948571147195248249437595794389669287703496463760644836098399232561516440571988972050796133229987304471377360883127838484851658210849650042235515801340134456103928158057403629981957100984154706093792013093617845256392195853076987665106693539381964517643899735263345789503711234244341200088702954828208390675253875133362403752217119920891319559998946061595217420026094790497767915600974983756246163965759889753518203371971959389219947865371931575828934622495351100529461796543732538394299650246345890065136239249585904073249562327157493933041253372464618119289601358400088478589590819806174522326706561259384728175334874132858974311664931814649925568654605403766029500013020798210259021004698302295233931688926905154128991434097812631006695381057704406084567872328316464185881829367226463369016956128979750553107741237802314510350963305205128087746171739423340197820762867908307523089567378856877189038469791524070586291229586932359671631331934370550329842101109916223325351135566687020643090615464128236539440599890656911858119690856650781285383957471293103891467534024755643317307953197682405505365760081826913487718745387404280172648952337389861028344429460682155917181168835456618610664352918311794293609496328116384948783222191410729228523452457883936457186244789471899210547287138721273297764618993286240348954058667525849362767689333776746103258983899656756542271217812047351129018144113872903987155564232549549364568223525366324236486653260121589014506262236299481190035281292115987094937191641741184943372514721198536361716751334816176810285004049328037573410574640573341496161214631043998475761196068222116875473039929134464364235148975009272987869531139159835677568943761880385005012772146650046289390582995164847841410412735730143142272434811813121163659711702573442708117398256846717911520429268819527163054924319854495756224155802356843662978906773507038828737459339728323266190318210442413996276381946820760179400997532258172517729329911705303348502933317488479145775768960503460148124078424798830543187845076502742556291869399808632263525712158076275159000377780561852386270392120674797344982083924153678983521394848606058450996320788594338542558853433473274465878644446422474688789516642013471004681486637702444818713083996322683631336046111688773144275168764866190922954619811443568964524822746165629287516760941671104970039033391771032979612389631646473533305668263898721573803040031335251209868794263909287430387646607302251029397887425514775926043766052925508185908676274580237571374253344598559422336500684435474838286242414942369723837415578358098864729350305343989886150736762806446538129200080860648949546277455333747113798947570364104824980343862654165956095292105144009888357631851395873302952506545429878749291594123349181563296648650453472597104584869522100940137581840697548944792922988393331853239620596351409783540770416525979017486052068571330008731012400550873693104591325417755721245848282809444937779999978052665122357878157777567299938329745480182244251653192578789273465060249808332653805876281927379141160748489194604725521824255332260765813915826652183733128020189223664861829545754150093816117534194446661820597960869327113230543772283503142122836760546383913064706482473136829518713484573716865517509394255388350645542741441277352661724596844893754114437240683310215525599183193813335909923550432798391678058618016963262776374701006709205900571458238916440532993536551168163688492969626556125129749226408809938846879042864515209587111553937582782036450440839557742943265912027107716734891794292131985678352911969316841016533434152037083928202763095927623994374201169337013090636144671980213994211741638305419375531086733189428366380261540222442707653614280377782483436967914131899891790395467702835318771327039620577516490131164454896950373479426386894688201587098562928924849242428139446129081879428105610921588962000872619039897407485621192830357547993984165672832515234810511854089892119676505232133825855079522387480878964172625408903072800669465464646363189127501147999599447292624153295972064269091170003748520905595340334316447852817309432270992088078924718126545390273196478954493382739806580151148060782759122199629969520408997194541842410375595286338024072921759558307624103988096382698437693917474494415773458285210826540187142329943970096228593852945324548038681436091652802284475154059715552386038389929080204360423002284236475070145275864475783481081765448032383624656883856952963745617357869693625432780135959116494969648637117524017920621329896948929217664423757282153153529766018386525250021226115932779465704827090558242066042499777880565839161851249309072563596738391464566935280772232249648144553952592957040407028451210626846703906824312256284405439176527274528156696872478653404031690744987960930308119180899653518350939572893296019639312009548813777408505340897773651400744481732272391766463609950381247670549524950529372766646110904146558423962194744253380200355877138818405777225574411757545553735108915730069221758248684146757515059782688832030591328316557564354526406532304871545887133395701552114996986434860526628912493622825275637180266187395987551042436019592743113724653220347381531829103747145591372744880214069675162280455883033979832432472326770731302106395179554073062583165734608198757698039499673091997815873982797200555511906294806373783767168877058891523321352374320022703927404651659261702071405126618335241916006805158535207654959749992972622404999187883099694692562168976110800917781544452333959976053529054512210793810361723999010077667718931322755025544077935235991983414802560888749420326111482056861985140053710977761270012007723046749051067184991812075714448671119254843062871209886067281374416542538488302271016786514812051719570779280799089459048803098739867300573145795430630866256234030906255518014912743171589920704008260903596333430296240062068910530491128888365632084270850019889451341851357365067956018084238473468925666032555701891841570065693580420424019214451609377516110443429604097829527521211285478023237287545960317620055316155662938170864629078141073845526330717646872155759743974127448256585325781403551621961436755481989688061616289425153993192171250198924084237381881054853674703873160596716653391053020195190532555064317691386298639051533400656292005653554925059396414212160001147660499516910485248988489463746001174214262956431821178167622437664596709848757708864843980282978729733750865052115217785709654216470938241676404524097589070304059491880058917169498268187067853992473179129775031942201221738167285219361789200558614545130304831142477874008919692312002997337888505630550682015050773164803826018199048484450144693759016460504848961674553026382268417977247754653704363220762726355550226937359811887773631824502882970313894576065246589101520331593006731196756698048849737969300377580142141065425865053083957969751383369508366959782742574457242952912126101367413132580289271347760465309917206952074781179058186310824256195590047908467200250463602668429035007176727054334008545778648594294861319564948070665018041363802375747548173815577057634524112754678284839713585946669643603960825900178520716054647508266872295388839904012878357008119646390486327142040919699868870547480672474747982122460477425526582276643196387290984404155120956042684526127276645570628502871298092177624487312891510045503808357089782533125095759492877448615821016821403974028467037760056843351623322560271688837663131950198077554498921582461719896772377492503929793844414413111595967253115049502287648405417013736290983182996826762260083016872622685873338089962709604865228501976511544626032506550111005291572878343091256813611089743044535313028865815928677659473289935887553794962358919989793787905387687303607927114293561132000891476069977136034175975058553952277832177997951225439021596206671849336384901989372099311567439462297906431856786804657388849215147650820690774569224165058419785591929236114056759434748503556190749324657265359545729952131881644986897333227553838409441990379180692641697000002269332087797200224782453448475685987020726340917237081303928098896679219736286845747783774603785007879975635874803090358754405722553739324495117789115501742179886090201855490107735523261834859971132187774670331281606294250978387582534691201776927557246915955893381279814772085924377971247960527578897198524978212056900791884489991824814647536019875130491463589690662180580162658112213323159516236945680728093484343087499671793356810808607119252421700694588308404096553117234917344990862532434078283151429796682204007172459508284887411064282400057431486216977172731126421900980369077343325406856076827782367506687827690221662418490656716403967361666904415802180846190204827427092538775745791913280452290381826382196849955798502810097047942160369209673858709659362528167899669008317238977644179251726708915680604595259375999963061485391072989845385906652823527151714510545660115123143632744179643571370012172347899360959865310473876470480173932656431910388116610830572011148663036170795536421942676997409778085590521014408068015578150540477585715871688992235364334279230224737635772602883402081058329286708102710495526112596580490246700582936217121821015853867673730206099074476833504518105821483331742733945014627595864339545243625296549747160995101879699947846318345199657954968141747622790065481707342334517229985992792402169041950830469426110498190028430809684714876396229692016946763119386300073490802802784051371446809697954558104160233823029926552051500343213808510214977914031580712417188371794317388758999867958625141604849065029560534643092663659729494458352540602392428139799693857568236334893201950902208607226756866995943819271626681348131628195336005504869700111520994234550361875331123452840921439560928346889273756774866813973381038982484693344391678783852927308624138152094758426585830141101847717466917146463847962198532245893372523210503993107026182887859359808254728534115072241719014864488957225208361063920451798874719722388078550352198274491605117009077888056035495646334085813372146377296970574513880867608552196830220452798977504717851431945965292828366559503702458534438484732764819437114151438922395516583240195781661217146232317472748331684579618567080267167785933139413690779956166211752394432809323115465499749234613141533327846890902142844075761002060517457076032162355315374539665234853132689119774773892058665587576211779376684314647049915979835767824223771472687443052042200702722514537777161958676780953362915905711359257921229765250920553360713659668668101567796652449255825760057018998586221238291657135205538327757662890059929184094895549011259265001035492471301354443332445305323052985033769441089909826740881883797384187702720179898067174048147762727689148535751876046991787251970958964910447657049998235784817481192906734780142052108638086573959110841247595152095193038290794188910427333635463222793681173656545718542212571696494977541607976879139855879263016271960083456406320570036013472363146976857965595579680441099792522764746768376590281754451835296972681364975870023142505797716519643086202540570999898334420489982569376123024636782131572748629324892495301295585813353323100147478489346294780703870417902133999845282808006333663840760604438610858082937655804408582980094000970715874965125822905590201814677253053468552088973114532733933612224676041659909338582238698484732947503759304798176938812276442928221979111755601765547721341070565002227331749135105331984266852060223277515661169007529445672693908543822277409421797737477928469727921902797184871664697050253871261695402277896646670183921296250013476550299468495943602306271744540200583347935116521815764117440837638614247384932881559089339070625340697146018466586747417652822445820990625810212974983071812507824434098635616338266473494634771333806016385020007999721200045254294274169514969097343526561943036400898118976788143639047965870102571465238226374106455276289464732484921106413682480129072781009398912457960238769679809785295444009692044063873400288207063734533485389970630043132142668104268911603036901543471850870544177808107064554491563773334715310293370872538966547991350396707376686910875596802369618196586033358811109323833452699820782383070210235473862196661359502388477113509761542598502342954019992374895026600907779212882359540833944620690577476981340258044080635642209653957030249802100080158800899861327803669536409259386795088643725375571273310860579663787760829552579697194746639185654407723523809782831155995029484246993307306499566517073670580415406556898908860236070777379311981186661253597764538382462688969093346906605620701469479965290592800795513177422534052321413514581720956412947378360015835906870044387698460467280198223723321767719037100156020446990759053667142285920887649457896328452126352575971356896861495082034770685493701465543383840407615083024918025746526459525837124402974696308910693605209976025047745049488323715932135597611035596744968610286082366046708682281632767536259055584441523622535499133419744486238829549757294836941490049380673137704089840806150109870675013858347470915842626989213009134610566154440594024126546984162905648548299798613336520065114965095250120576029484423998844702099759474958304652744669167958603276411275333342771571070499945750435744129830497702633678927884241929048685181049729007556443740505634931314616651205366556365703186895362410419105825676417925840321468632421097388453242270177920756089527348422337745376332807980143136021475102422336601251571863624305847574154950848818995062957110901229661621415071316366661565329000134505441537129188060909844745790995158319988967760119461280986223868439953075233844013018259831124658182594994513107118285626045215326070967342760337705274852698371536254958923435020303061444568093982315105975041688364008343895559372219301290928824644636040197819792268988389374038768368147003635661544224222594402670673729544582788542232149764460134254228448948412562562407581780364997442606279549032648941811833668049921171153247878146031355165053438721131586594829544145143392088813313800447384094497107039783540623097441277107545455911208582948408159181497093060898278456482447748639105934733545049922927718766373650405951756131307254222804594849022507222780957066456080312569571294923748049701880332489622159374261311469058774598840416932858385793218886461737409774737381480584299588522406559341171532892147373221325602324880612350209778680091067956687761892243272457709389536694158431042429128660893615662381002256091311534798214775798558682593015110658453076737471739650219183896146562788043772881715200598239931337643326261776490483118258147047196031478833083489450131186510491845157529036135376368688513183650935666881057518749398230249258225318602056179021908482315110725068310271384315413825426105216723669627799781009675276945148715721979675804495870698982471729202512164620742022475998871418322473483855059453607806674547730730660638522245527822617178570823850427995267634008227244038674098520626141160854643635935931424247753144388177019220544502197184661327434904329257908159411961496138397323901994153526115759290023988711298567384524909429366876893819938385724307008886809024666968124579985234853668349549878766599771622278118459038074389702230172463096900280558982369081142186662072658033491688329797078285354141248933612845833822122618772877051025696639085039995981578348149615968330363876936403911346176585161045978752459147676380991678392326319798516204863433732165762826739144131998180634998660014284198760479841668257026536996444534849438989800552783888534339869201049613325335620309214916349575729649284265722945340484608205464904923704914535361580793371966298823784847181221483284515815962387984313167621588003668633610232411462473582765771963526089843718773236898739100387785389239820368996608357415328076599464598785886292755092826781065221203022919816041504217425119549531014119930228868276974625462653878032666283122586201063260430360959939541781279177757873762435074218389234466540247369024000472779315788245761220538304121818277354678832221300732236710386518760012367800584583476184392320434673591827780583399225117782082256774487466659253636676906875764785283564955306810943322558665559171420966945591235304228138949689097565781887150833213091622566047864345010141285110066433537358337167863805746553369881994974985878344817398951868870252929786780358483312623795943260710946901008685384479015863454410203376249724169476974654767894785374369562086751274928633725996978788283150008422946603825828010421559095529250771847724481289966824893564042645430653908075242737011913349399948035471569191615406984718600860730525440912918471964468000801032396148778101168373790551458952568449379368059647244178161675721101981887285231562652479080024643120527042326093516425777554396772330708541645231942171653834875875431636717068406904592195120348794458746480192261219174377172272523978559904597711582611487896271606274873731989859018053335834918476416775331905252135147372396176621470027902803756265856110095973362983511708730249458349451263183255733175178044643087535063495974901853518058874291849970358795127491554425510211949659738061157647753402391057565104820760990642644300142913175752599920291883066056844323973970106617410221960095199405279427240455982910208947045302116010900050964656393016895433909410163246875327879010443053817949184195547146333888336576854489724908891384338530346853867289840291482005574122379897741483703764899159016053741406968287902432809556956904889999296083969441009695573234688722840039290757128896913554888306913884551753593903062455410577506500577366163568122509168525577816473747079415590854245160236880442281374991452150593240241081008679949081924411880567805429089498644088952478950304178598104033194240037007797470027804589269174797167818734806023659299019111205726920607069286829278285133707164394248133042902594599077857612064572066323593422741768867073138144161993741351135893036232332137443621914259097024435023507626573069929968363125907122091525563434729182779421943805498544451491026858254751585934259736047891800090032535782070199495347733474710322873670490225722003831639856318577990733981924165534223433923236746724570118587045392489062645711728870061955799269573391386430678194229323886033928604843809913443441293389229604759000980940736844356779538763756448385594182216321658093461320273718824764297325379424424684890860243674446795831383116978805048178924460493245001056228996623705672066726582450767607290885523836564699268975911149661452143570388321875028596750566156782982557791445647488144199010857243435843408850143505020855394975461383111505602342724665021891176400374226042137259837578378760136240337063901974983311255927352013693713719495198580003669936674008483455118753446770041456575703834864732828757786089631581975623353241409708892648849181875084977388219827138044226910113710250192218075139586038433388532072391158718639793894121548286109638671538056902201262978405253090679032632986222946037880323623803753958549896282033529824962768858264178881045666391315056344624793509767536830780829186399737910549001514376973687793378485679358511044550135353133241305959678153818065520414574352311097706584560112829721296540961711148292089168634910235871051079337899515335161183089714772382107896946457348413141796710960752281819546484341930319140229546327337252916782618401441743208421948692663548152233429726703493346704303104900146382329635306236828054057292303634446975707498052918342643900400145206144673787725252751520587323012106911639045781418360445438255332910264139262122915364738992624741812006619542202404982375206106112167783325220803509533210840911986436307997068630923243196902834926954772829602706054403958083985817708638066275396345390542347156173442906390393612520632232456405528898978389054296523172459735007646390303765017017444855408052477330282270786258921377277332119737435463754227809729754663890687520378110743663277533717167822068030938134515153618004694908347027388068387609316247647886821912679980879748516525415491386931483379634872542073936832570995280117123308608078825523321614111615083803244783824577059724951949673786805137132872556154051924441180252267500130398536357095752220953425069020257667614294363575173415771691442393537172108789310508333515842699842882865128625970685526253989679019364476242479015808994945135650985011913758052537658520603722854939509699325703584297091796189587914119653855009869325407054363395591846098706166273011667355525387415031454777968576000436109509773035547259755747730817731253321179263512823299927095795033645984954705812909878320685221613962392915906466257679428410182891218182991829666593751690103010233545932764296509389752817449315857463605084458860479762698741034234062763402490519388774659309652206518464132407221677174606939275623156923579569097496019556648904403652991402337285196342209421574167870381782185921408674699330336676555132218891068718713985041628845242266411010042676626712378237693599533110983222005991273328367355623452257895166930858803887952809589129835858998337739676683437634120892062740104001953477139581959523748539213494489796857135188043917545289113842706594280231033024977491925701809750631569163903742770162049413828877387970257956520560812550697500779168624770042030255287232622379082805408473194035840799384991056390972081130608216753918138658574267124866663082626341997629467557578233235186974015695041147069379907889849802545332887554456662151313640512897247582086956642141684896113644943898038894949158361529236248133151838635582012810600833143362567338541621650387994176500572068934774268874408105056920747948652622663535619987618222258608417921412164277285246356762248026230713628402859510348802831901294168323478563878126827544878479949030620068247451675719441072662209486746307798283791151509670303782322664080831687812371603819485710229925949707474785136836553123852289296178725464711273821837978104021570897163627616377190569872674416159901023668392158021044893005247416489481944149485113757585733323021645129920467132883761246588184608235685704894391032215072220466129026306497779180158766464717449290008957673710742505549835938090949825074855448541444789905832835308640041625522188700632120932972330900803652932937129192893565608559279594947154150297193670358916219995465225229183841992780618742325438966327874397966189670995821286574989728054775649648584796639760349092658234333439335108084673922964707615831126758507351518131979506288470707782304667974581560428881499505019844874140904011965374089652731593805393513407928674224062454330273718821778039641856908474296761691549767269538462337168581950667110774291333939626532309271384084698686460498282517099978744787781823389787194993212869371414787983753868320649356768645066664816733179702626623428156355161747969214971006868859515314614334955579922704640380898529648458479456060306288028156792582671550450413010618615918742942553497613496055540026143782489862944614085539025687811605678658918288881129234526468451703793671698566836953061302846827903917543504812941987799072640031844080970077763548962665706307833488722086280257519415946878866208743495254267030952188724481993457574729333457047916623774878220802453444959468726568836424033395195559086759444887964386621233890573873206399310138847428800601974062609600391358513614842630812580439656901481780132439288562965145842241189285323258923952833666688682912158255332164727544739676800513170968749740271452160906603695918388002082401507942248831496223163559786568653679866861909302738346763082738958100286145904092458832914924853715284566311593205065789953098538676625129518361302736093407802465176388538292900369724721267961579245611174477853400484920232950497262860738763083998922031039351746022309058967477115305865575516136900052853492029085829028136282257607134013198846651707090120608476939837152201450656564529278559894956543180903874157286041059689147933546462459008685764667415405178808800529419725018591858825973351791621375775925038270348192166292227081171020028262493386102640277972787518457057485930972240084423142695874944447143246893619597683315900097636125905331374930994397331608330065810571324211616221103071973448305143987659264408252111413289293438343003704043546856677647576332027374397367041196242497108366956722080051382393835111991128008717114678687063421440853285699484730252112738937488799205641755887425471282050715523544682125767206917217942755637453871229799282516303263360869238286679568624807066118606933340513797099922043736645669288592528835452215491259636129505023342967693886436914418909959991287814860036811683597758444656382283343512900885965576868455585211093297400584321064572152224383815747740737821321878118153287853390175319199934535124465452221964975199779190674789993202678019156584783650731628935960291155871485131601357056365019657142868037461641390007877135858570855558082441244975454700339396356304506122330891867683921761869869944164493391548884822250574683190104214529732016637078989191039231681022937264829487127492701211873702853747482987161170600705393425659343388865829732021411885549549013444848395669309544963483168747037465134651993815616253449819074592036279623583091285693252288748434859259090237900106252398433482680467733241256782488788889738417143375859044637983117525898501460003085951610631981631176113692689863379693764886131304943601681632557775265067198762578569777259376624992923908464737567580560312481992096870871204974815506265291590708119606570988986534703836363814164253609569321315917838906079280680633245372399556640372292324434427774260151638358143282951788381634380871207941561891151516398655854749128336517364081264826372375164505021343584886475954185432640043764897007311575590450029366567665275049244303860385045912313242139686612555042312570530352859957461396314781344304521619449737878096757797404904579124593062233453908847903468444505727085372781141982800369687100725684905288606204549742338312795431246797348192345102680530429292535733179748356838688429965176769441510908336616747362620124550539541782218781032761257992864967205160524298392751298916903797220668964740833411306774836385199565889058684518097492863108797113284204279844083284047195103393014486289644552057859728788356621424278590734712546899018910879906753297610493938466812953759100917672125378879400676629924411929794902474917202241211893932695930200002755120110618618538859369729921806598115199569647625936578175147720564144542471695941383160388516539627505015840154255662551184115663539216594365476170526241065923936042155772560558885185955067159725967167933409699584685154400255152924537678021174860890580527230098137117127778553853231876369941249873727841211784015180636808478347559348244594452510998181136424303091977524007029330386797791447503583100815552582930572445026252082245325530038630817584001376950005735784095228304472575377693717675888040217569280130260645779603995048658259880260538228015135543337414364620552724800658687081999444256968688200508367732587547928961069217869868583954179929788475242218486613880756899437931991537890841482166370142290576492250678577233989756246897532883178910294698962473220675518280544793111580126043557986479964418225441511230256167227573822481437709366330684657005040018455487031684329424910603809916916770133134635142171342430423358563732925541978379237570015615453156497985904768658483200729691069072709345736774025879896686025362338083980607901556249610333434715729549347862045333315885700063269444074233178879819077548438974526438971851451179228382141512231392789267114538378213979724675618358434714577200097000329781813865808885883049822776108892370589864291967213296887919481312269923901609249471112040841066227965067857553938437760130530216631112150114171540498052084436363395494697913841228976281466350148501811616153144711945541477128170224441037037471957495288219068145604682364711931670719580542142148908979986795737327676937959670061274444316529314405991289434398779633667846893722715705299509976749520549222884097632130753946257990596333270501661658504847023687746103015038839095333093244446839670094963108793188965748007899130216597382319505668080112250081762894662609586463998921629148383267578579900668899473127829791461529600775880483253899413908652407679051530067809132262582527951429175907653958486579595165932088288064262290887445409958201607300442858418489363053919972193317616409437207992228315500844111189872321400889221891461796706698782961550387627156806125293725423902853349163399939456593663854764114925936343758820167817683253425922005306155853459492293714943322158860330828237301683222867871131132579843718523735341292310440955206996150931237879845629554361826826985606263162212907439681718523935262377917668487038243648276972537818607291960923309515106422580213047660159138319203724639783528853518652861373524617793389449795727685468674954838953308327012276521605976824845381614852763810494109253243595571726513588259894056092639159975749917761132787846386337722354677960408517730104562605329607112141663251248268032885890724651044000940877614267558685434988630128545481641091994569600253519575793742236621256219412017033832197790647024006869728871980389195560164359433748040447606891491425423870192794526678545195248161857877764341625571419662465887929180391638866510516623385216030731857454845035290481523547858351025637761227619928037192302747011803059847353089303969720055952994137077056047645209916264121967289086059915154990579550955159832589693373435939475090029165941968635263873617083867762612205718561100982989837225412490944345216162765611631134707827023248899067847922643439889836445445812551655953920321396730230909710088777449316062298895847026714789727136795185845375041757901072498054501625051074231077699586750672988588982328233563667691547722150678568958615486758185825729223634273662473425389901497703393348257866669087232409832173415257639710658204357133588963726403426809934552084954055273418070786026560307992358648738825237225522840134700555788193410498399345488552091201163724849302231633112267482572686132137474849640690568882939051888506177235074572595206156595151449970817407416956825602883498930912428172234384407206656142693647905542872371453151996684417956691678079784845024639064815552769478333737801089305008790098558881836453481881119218592512879447613272998592833236976158359397747831313155655419482934160165774518877593598509734204606001008282794990001559040630705681329176957156278788301180865415984998079325324799614998198422228825407147039390143656514770119845787367437764156763516737795911581067370271784716891246172876328286719032977931327714124058657565450774022904850969395109227954545038067464151739991061866355839966084714801154255968485120427666035980636178511589596205461886791622715823811591226558181084853102595824603029791998328434934154185401497810981664742545918585416961708445820209734694080156093996017495548298444714479802398234371781373804950583249722230146364325197801300672325319558401617280991616298594825826738437471987847693117255226375124472996978019607942648808620014496032130322290793794003447662080682818061047276565571587688918145635124472301330839204611365902604193089580925015982063098745375308526834229764619972789119157055355464864006587158786638920590768944483626793875768657250777556648317633912857239375813656490691326797348207432734288479537037594179863275376375527992773701891478336311656727877884549410215193364794426642473824409928246570492181057596966027598648595349532274347815384621136690818811516598235049142665291189824635767156534578579294474386829398926565997288549735840968463941488609168573479759408468329158571643257947113196108042741830673147406094425020800479782096832179270907397498585554907494017507241075737040474737311815724749960166354216057478845943314581043430555906798931798800874726815502214334472502008515627090563294485517022561651540547416250611231498443240104645893319743648491513084520425002895782535354317257351284908711572273827666737711766005223640850797778115259230842616226609330206374815129216430611852446094358033072083589366567220777077488827237702458326340796067306708008067672879597514825955483618361866715956247292432276832470124911171700226344487921128230719349527762547503692784130910818707744958870270122793790950997474876876051017587713330226677287784223159623027426646570990313074171772039327849043087214366120950698131795409796314347657783246993921566102855196503876418384875977701629102705282328981281941043773413229204254802123292505052240018719880377516087251231167704366039532715983531984583994910116556126275598696198608908060109448396049087205935570767711514986654664331647790901398992077524277017923451999118516312027847346002932560855010648615471290885301145282621924267596717634203352751045220832985562508144266365607944108455521695132555483836651120328756991483625234845948723577956468310687985480669650055375330309255990392218364100829411489521752798950148759099447533965869941129230473157099166283867483806762426581770998154879516129432952409351292740799434865413263901219845000816181605607172376619026112486954741332948434773743583904756086218536084585427380774918589283626124087133241680518820051486610400293665898435211011896706233043065864083329515065654957545824649424125304959754051008843113189010485727496653331834047709276697537561172887451193226663698385178512571679721230188506508267469199557050496772319310465790760928857437410268214563052760296186400484273478133033482572147088167390486198103743318388626232946242665026699543912469671083817395548175371496224618825191676704312275167188129445656843897184684517130552039977695449973584383100983996051585236071057063147078619303338987158104617809437647471757327326104884931707402171751997691349261943681524583736407004250744773925315344435434269450675303105654646322081123438755198355370701520260527996363864669077774110860533915614739344510844127341306311594610260610722984069520896648813634081650464272857704729917565577069937918094987750219473066295544245862023559159143831583751044791150832163999381944131839282653516163458829890283023195382459249348635309836707948958599886105138900565024139257919492750110705675284690521118540887414252660211964743618492015980294001454494282687542239350653642501606829753121666078063788904221595336208372337711137919845307476085830428869134302453549578569170487724152186611771815765918532694458571711825808319855461609210474632930958507360894731855826440427035413865423643152929837031267999111097047505008239020810395832645551257458920869403041407579420476619067087210032347367898421819935199899605788134558316876654696610557337984209655164279541045467780249155046250970486303861505734582080620182044045264552632596689715692096060223405946005448433341249052540188624160331051585320990212207763544276310693861084468485064690076620714345631996755710952046720494975272718321355963144916428519174800489887133094214881559377860170184347558322040368406201623527689681380068071581951265538785804058427326921365614200265802824796631971832703636456841285097437007263144909031173108849984765771675761239546917927503966895623847050512914033627641429704154549532929195494540930537216939610944347529883953622403510286991374784725048960302243838044374380616424845103435795717558419877305268567659946761134168913506296060317241536982420269649830350464497419351663073999289788505994533776100061500278269945069618468000772666449498142518833262610249842743827340299429955114482931673968818603941021395140853688453068968491302171781858988522792332949457573833054187688419703505554883708363850487893106896850954846729810950885119080696722779980261556662356764545941844587385893129826719976284133659562505643261199156625176693914248737670617752900443801587149112145278315751509265327918128160874416555439957584227005855475097662740337030506660142204095421380063834004723266361382502043284933912477079682963558793121212420720991944516209381456410577710934422729935401651875260636527805717417762689774937967751046195846544430068953636617026747894211440699937491622773159496425482663229513352008909243762809385566979364513071514032640460053201179485928590680282257379749788600650304752852057422196525549832435183703373088788175226970122080766235792017478514886504082942138983416864483243812263100169596251598819021226289024972034614000933593659279448920812028873950164149508134091889058269214434109314034199024704298321183222349678167295442232510486138358098014679476354241586964505525929916077848918301561071076022761782753845341520698540981614162353885035609909508793287523056890041058417884727077216197873648136277814343581453236117404280883650989063830090965197386849907632351623169278153351369207818758464894569422483819362740800843152053479128853442932183985863040937585728650318874610482444195338118805682636435489447797392515061321434626137638206689835676121922408537913217125736796241067123444120940512977599423301858722454209672197851216913270866838542178688869275947246900713069863420623996994049309823785325803526224420357334367625752808405737751616238501250049244241640075555926650573663549207392392135374195455411516155555900752202108857530635495941998279022500638085726076514782946214363831010932493007922002067981711620467390612907409899746604625621142862435336735590739758392093882866752413411789055604234111034144266730069266521719837910494603365050485971915551193852563692570524799188777518046720603919204881827735847330977259605781017824577098440681081620509694686192074799566015442379208202277848130971662200783049401306740559983200978389368758958315278519737013559350375649109024789498181269774110770926200593549342024172760561166040906437061573201639998741832759961492386630083517146081193303103034954393792337156874449040613191033817259787725011741566871385865472831628585830589815102908448864978939070925896733154913603886834482101789696775411889977342607008118326098331015578815569196543158142958198721808934386040165560771354779936850671070892361151367517346617144941914217265464365056438476559684548069921612971040129804416825247412169722621481888912851302501597548087937635353489428391329808219214910444571378446916083859312478652648489426500391776290500314265776398097912204745616540608645075634775538618874154596309034473626224349751033499283661620383817678574377962941606493132199904230503934176630129940396758443412125705879503357576191046579540047590381028788963997933268900836765471806780664104670808122076342450569096867223772927633485608622305118613461809722314447957252138321809214859421103752032263506416187490834179737583394565989876435885307438104060023192101675560864649779213458981711203798990882677828271085142600300796456605353655646384409563414322623897758163097524116693623639054809817776374873883161451191547451419073473838960587364656290751219482367467133013335402917834333167939304024746823863721249288716128339756770281659209827596329461738586878769420973910727522265836612020346148110823040272826532525904779270746929992612241002123120165960618574403956445717675676177847458362490486283796852515558028002661394240266529912500048277858805425978759780665302575042031353389646210848417927944242538578152691793196133901682168162637143543526947099319072472731339606086152535069671025571677239652985816251384170159737170971869564327828815494555281337657597401954665227043768991157842955438785251913654687820959936252522502556695556072408281553261071544664669639616910453043785844414574065698316966565290032119262499916579782632266849069030704486080953496740626053071860102971367658389156767681318845643316319268393625157935054816959342407299726284962989332481211599274508067945308362325968047071714667952275287631816178634189464667338555294573074451041814089260366164191858548686235565293275349628378385665754019197848088690019621160968152065961608136479850685374009907950032666596599603673372616345101484343523932101593796722012987952666315811059879099480875135096354135606002880744471512982038878507093211332356354292631329485337631628041969967992220547496973268799588453326734563216521862968853088129858153742353315024460478810808192190778716709190127390959105742545010834725928974191532530982823907431167629110529569932362310147018997823042501157061030162253558216440202451841724213053566935188958222572205714366653013940056834675727312193460005498094672615935194585005406644199881944172644889736687811357430162712324236839564680222302418868276780170112473811324177263684171424723211504740845630961615390532466354900874654444496775649087315078882852374504373541060168433715662847130189179526786188844500336072971114839081371487504235613410406539704675528604820780885366515214791788635797302163353653362084433433352132455897030765474530684710792201568273277007533940174092754904660611174234635380019298097963023301203529663118879495191962175796892488009435827154240127067096301181343114556691785291865245020862068983673408102948181759302519622839918060907254243994475645215056790907015619242163843570312979901546152072914093671627489317721803936896462579612668093655127154754961622900331626881801986274284644418342153645980106731241348145797593931533263522163055871157593793058255709102659930898297956147678629598352596369185032855668133778361402681392713778493616965650286263299929356660173867048293841125152069522790203359055515687398530321619687738868644358123255571211028721921833471339837113620808423643905521862659550660658948264336790516449400115446592898196481835719853493517117000641645297216201133946026755587272915689787849009844199909359935207328527528836035252982638619551608557661925878131379980459085860627387584369589234832485432832075050969020065397228935718197054472692064547820492424774685881550640583414519204574209931730738430808455513128072675335137872067818618597871256957814836414575866933122182269373364266579986013594281629104743188069822904049111885699358270440552766282306643278527136953396208598016803809092056379200176602138951847519057690400271909570101487465792930267077916678958693818473166957895502110163276910054800594029256995901870672709866365634335912809461677410515720050848503078018975711605271501416368498303218769289882747765045665033706167551983994985622695825391365558959836049904066826909411854027957155400818204201429688851440765360536768597028238161653640746204383971806744933367816358572081378830087636232540608171720665263260034482977267913028688261805257095345594623390542315225091725655549002032530053766488964723130466075284788850081903416790916521355793944047566566196076489102320723598043230316310164130128892528007358337644694619076673074243517205452771901931566959977584926824283522291025611108817519118076340825553348687407462032054705927226381988517228491770122201899567618947432696049550356986241548800895412557103967307779927337602560860614198206591071627739032374801580967826093084363406299004608366332388531257132237253463798124152770350233345818708474916381223994721739376215949986432452271278151504337770287925942112215249496872953880911028783160950809886090796018013476525277079636857425693490157520146638031299324297194695822411627249850290246645248930364812666479966017286695995912955953713725154140132748580055240252591061167316915607451537636834896557772492671877954180926611109136732094840595871001105816941195988864500716389956401118930814020301313557097741595229968574688767686685572824070758086488555681178565562864214786773653287428799990611294317409743428263862996357706045525052922856347293902911289513559783914156959078553206234737116395007545457934798488249562903491557358804544521700457510789442988829049814170127542878546268135483826113247045000294455094871346524407061056966260825561481567920592938100961694185845366784072280074555158", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n6389", "expectedOutput": "128783422115528889093546474294674461473130071902977044766431709389572675042587455381688755114260665254562805464102334382534066665919885013260019292758612746320018161311357678306033866179636802860108374120796820300523194404655577187824379716392989701416396410539511579718688699771060776631556820442919652634073816110856502928101487417921494682733923001151319170161374021584503317777833998408432311264179219925712231238615209731428440699657192409983461217199022932555233174970065098934487623271004302453042683074532325951596818665766111397479133086735148280914831671245784932019207806033060907792508804399129952866642857621482474393891412618087829478111949415801216630410989239650384781987050166624115731437306684492627534308990325096915198663447188312238599804871318963344527679531320881046339782840905709699837177686360381578358134040998080519374385479734089922670191411142622558845254107933409622576269295810821557456383288240330148037193577140982506344358128995289266943916690987766977791411145803073124914239422514738515382891047149041204208237550034958957967031459039616016074414614525818106753800226013059159871535682460599567715274476163317009713698193429531550134669290201765130824787229222617363795477887462349910647256846168091750694851495941720700719246108740996611467570098835523196555622104001750999846150748524410924935877295678885732478447999806105670247960710445633523036633832869973629850696371339229627810529688303252349786713804482690071101036156311769187918624166401424735866122567227943485583734458181747189012482828395022600880206314115092523843656031101081695526629495224379679059563039823012586869341040028123769020527378157977719104222181129416506374817087253683741993111555561041157284915082134772343818726628033448604873142668139912123078273040616688865417756941994868699693279573987882720379779527879928165426318282465781591295188338796686981552011069213170408125988967290426197363329193685975200456739608795323577976384622335600103067527319775983812045648993812903351318203805429617960454549137653315901629066695895573200637472285748165704382142669005786746301719577560592077082941419526215865068018428887651394168871384324254111380117418767201278980687963265578573067808633671690383944167408748387375668565833363096785931260572948100347046869764243803855716235258578963417080199649388809631549308327733768487818384903871436167517093120365834291130743077426535103637936363534074060256769468194255107579275875989234485520634727497836422895513795791686322563241482305290325225412537904065283586240161403551527563257391596299421763293123708140498526701380010575978301715136603113597749011287096471104504460772032063591758985872476382341390333058887808456286190479429083650557221899258437398685246393170721048973567986936889175282548053037067364354897039532934156121711705143795699279436949971389419607878148611887081606568001468441538188961982738401720084366139629853338501948568617879990949254092930022789006832121090691506022351514691919868267104115973581001092732372169553435691029764157113528956562554165197404218354962943061340080159832151289937829741752546799170359131048910746550844591859759155245655924319013333067946351998249293785653011980910561459009052672448619051327660863675558458681670652291496568933913430595709845742801150579799361683185676851804070033716059520050796492307653466882097834721885677653508271925014506224671804703170096345713565122222905442500885152913868470350237262243996242634964770469485717400630334330224736320094126915145984689854000568000281750447983998628693718", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n675", "expectedOutput": "1102536332173934360205789162889298989584967039807927737734214427133362772845510958643640162128687200078953613447531368372189965349798471130014288667807195304327321155496506973587156028602205371760357787153357188239004605669158639777364766427330135118337795943753419579658336422809300764067497055044480248523286903265275352294386014786579349250091635518638090344446313648742", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}]}, {"name": "POWTWOADD", "objective": "Chef has been given two integers N and K. His task is to choose m positive numbers(A1,A2.....Am) such that N+2^A1+2^A2.......2^Am = K while also minimising the value of m. Help him find the solution", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, Line 1 contains two space separated integer N and K denoting the initial value and K(Power of 2) that needs to be achieved"], "outputFormat": ["For each test case, print the minimum numbers of powers of 2 required to get K"], "constraints": ["K > 2^N", "1 <= N,K <= 10"], "round": 0, "sampleTestInput": ["3 8", "5 32"], "sampleTestOutput": ["2", "4"], "explanation": ["3 + (2^0 + 2^2) = 8", "5 +(2^0 + 2^1 + 2^3 + 2^4) = 32"], "testCases": [{"input": "1\n10 4", "expectedOutput": "2", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n243 512", "expectedOutput": "4", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n32312 32768", "expectedOutput": "4", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n483439490349 1267650600228229401496703205376", "expectedOutput": "80", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n4258990275541962092341162602522202993782792835301 1606938044258990275541962092341162602522202993782792835301376", "expectedOutput": "114", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "FIBITIME", "objective": "For the following program, find the time complexity. Then, based on the input N, print the value\nFor example if the time complexity is O(n^2), and N=4, Output would be 4^2 = 16\nC++:\nint func(int n)\n{ if (n <= 1) return n; return func(n - 1) + func(n - 2); }\nPython:\ndef func(n): if n <= 1: return n; return func(n-1) + func(n-2);\nJava:\nstatic int func(int n) { if (n <= 1) return n; return func(n - 1) + func(n - 2); }", "inputFormat": ["Line 1 contains an integer T, number of testcases -FOr each test case, Line 1 contains an integer, N"], "outputFormat": ["Output the value according to the time complexit"], "constraints": null, "round": 1, "sampleTestInput": [], "sampleTestOutput": [], "explanation": [], "testCases": [{"input": "1\n4", "expectedOutput": "16", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10", "expectedOutput": "1024", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n50", "expectedOutput": "1125899906842624", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000", "expectedOutput": "10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n374291", "expectedOutput": "65781999058765196824484391311972043706763936083007181323263538601401811690587651614790433096807021213852833812713019769559496576552994552800059724727686690903057760431636411221657543229761956141387200555633580462866183828547821067927264920816478030717230118599501651412331030344262197892083037187108822339027836212776718856403016431729014413694048662525788858654248785986936424448860480086646750291695232945111592811232109462168672517069422567478874310625818456095412201114466042048650552479234044915770865174198047779112601318491742056427287329694320566060671440186339317777976489993553750027071696732952003450356966929481336161458586386514484082440771759505380789753838948922771476187746626082974258394513014628428982400235563191833017729542477983006435187434839533762302134443915332763570874193117660386227902813973686040408446414083150977880157928831222940161901985574782383824285506438595399840319973608833999370185719406842796206817941786197780939438794972556062723568296199048178506348601604749888999574994854335227394492598835302112859443491112087541434529155605623949984250719977268040138491570520240442224089028396842174000660135333668525695293821975811410151169424536241399416329854481143037093512699414213876279905494542179344899010897122792525906291021731704387916968439936598657306233755963054629379181421817739730090567508917998070594601237724443968425039617829149514588126144903571707103780171426853571614843445136296553967615207214058422144556126154575609289939770327461946393366685833961908685029475372499169978479728574382913286754425699755441364984102656388531353163917772872714075576541053631980874012512220869141978318223837641282739062174230293277689784318974276064552050339876965910243835329636632599581703373183322216769776067216347051401096185626035579695980378023629161829960260808597237601055779052336293584227535117683978868186222129520166353403755269791402515624355552212053942831599203024908645962895462100928529832010540125138096406302236440750244849694041966389048755012688934746463064484037588770301533467448940429979269233188277933644253544256384577040911253614598008457105579103276177022900325170751429880319761583233503091226119618356132987451886552038724798494783408001077673476659672400440530560373659428603762173320150507755353829775720727662707736361175758074115130009902388952222966219390635571735000254931631135898979847473478908896358057879970956946906776755477814281841314798941758662391797893793020120368144294230335489782046388463996273308912773394568128238353312085519472284765701079642931015455401113594018567842934275111102099809971337587062309017916603080311486832689158816434091178842381667625208852818493872966073012118552713261610395550861027112555789970339833748262704234331708733420407863254536963041406724768157876459702672873561944356544518683333718524567305632358315928158408742015380441666061841067644919166657153724653147218210003087579300544558260457129003632011361947539259995075417359953311253292427541476222578345065258183225405768319730868529967201138902059845437362871996551098655211233352506613136425769611726366410008430359059934598636926624154765136512538911837239042306724222207998594120799215575966464623829991242401874930363951769183265530338184118698250731230662288985729736945215724475786162192769071992422326952746384506127464061955530715687521429640424017552030740324517684252707260079949436384051538550091055241270567685299332659972263095803653069377650626305505335578419062088819655338031030262277422538438327485125274978387924787183275858987302985913959790652568352221531277187422302019696752906646275448184745134907687016613976447053347083279755103753828084757323405579398534116808678600991728467160263671157887219190961240061700695199128788745566837402948112259159002076274782030452349435729395695775872882522771415908080191639566082825623494867251652865062514257668417452061281376067205661998576854805254937277765647567752906424706170018912780577429857387662971023373205941930697075237801528465933398977357417693944672618961176965554140472974703408834291746995546771817439169335081445066676328086536419519525431560897214069303447732554402903519113192944269802763760807437529685756891156316629918479200268935814972284730447260693037599278500566725181524314720451750184221965743290042714116085252833243919955540394177727472916088663150512153680768350908494480110338383969701402175325936659425244192505998407954743103194076230225877639681682283929384330439505982133630039583106334071070527945445662190106457456792072436344603431965592523593008050837331626784252339556556648265511863115124359367396472326320865597306056827433755188722954572804096898406185916265660624064628513462269222374726420548394831956627478607492421658114909077066586661598000899008010446613285113730124909779197349952337500373790822250691871302550578515016537690437198476025348707257099020386015349560330135021874541787723248734321865720991670956217013906437348320871959257136765836469887627958958962273570925466706108624256877467233772373515395969742872340473316530198247496251886789663301433573225363466464320790729673706099191758855549610069469011340095236307881738596887755380548488983864445798516909277797174464065796570016317923530062089882846157413683860232041367216066826257057528450365935986509672436500662550920967647554557937033615699258282546994481422293187504061944402007032206658449826787157847143119231745636267373591101681676214869375978004652562942826353905399155701588584772742463263311773904038528661239814963430572359119487621756185929836828813352631592852471545737249972191811920259542244983804754874443484735739458226922379740216570481073371661651043937298172977235792692980227430222628099071155813180708865304271742477448436885324280742638384441501679397087670413321370860793086371193072354567189053365023569870017507347026411256645381307837047583959390589450262151080960876496199901243059185481777988936453775018450181175684006788849466740119200988117540055024596871205388662469859538312209146881123066567872976426357461838625401300703916492374717342516680572578959757263781346997647670894895364597030780631835155264276027549337272865387716174240020392080026831570652647216501495899089249432602936088011283015764809259628532030418250472926598355214810376255662885550860760583976998718511155758797682840748869732071880944689594670610245705245059162926298472055263061192366545640111616036779830948751180240239655923201549643890707997642977306203641618205657652875020295214383670796617846591377796428912848956513667586830258614102625284388011633045020687159563190511353070802182228815059304295405072268106825890712683010684978598380261277331369134687145688998198640402414034739240153262561700532603044794699524741523268344309280401068480793733574306389162106804411806943549193853949195662269731461082180558787637359802198918725928492162141804731628413095687701458359900359713809850336531701948390583015134852712373510698871716492597803157831154961868624931296125179546188848992085598111196662019641460272529974514489693067093066837182418222071706768007292652645574946972916173938309628815169065821682171341009196863816902870658088090469558621548046301409880697772064476273108865688416829299710582640878884310652927058275590403626021450772790313682303443419622679673849798809598751581885772897810193920676120127602697680452505118151413078507758450344648246696331195443906567623934528319542108898108676162448023084012337469780940580504758552917493555842335998534210141860197617049497242142641768975675561545158891632687576057827178791633922073283539842141388603465954680863587790925245709873511337126259758797011127205578227951995341205250157365925457336712904093166640808190071050261040945499115696786197138617234700575504296025438849866658365610178800942311098975148348915828074832736105856714054112425249538463563127516315949226783842264365293291015333450011309929569776111302323370963157405418846258931802567952925349754751171391083073113389153618782136476395446539608099952302588311726446334929339324320788255507005390565370193454515257353514028859918201518958667300217576151409344767360402320526884658882992425949149964408876748938620617692344869481345463056975285764343862285261590741049714608158667066209474499226832057599422296043506737655870640643122937972432108838522753165418288145783404111383621459989528207563982483351024700315100983643930506401655430911391274208357022427436401914994906618694556573259301815275042156477110546077820590360393482792667222061532441832833994274893367193793558141304758397636860533047898720743223854299013581274339545078482278935204417300373815375553554137313708091472358006493197442892649015647242880824698035198961710414564424455505622368510627111113863436223590595650139325218693466422440978209488912878578233229060673122619312820067375976944861602034311888602693924999613711939445639540231457007500975622043677770784667914579838624552588739893603990898101136225767077646153993460390172046422220072964705760106758100421317953743503319586425845645950856562995294462817694008075018271736154445012519064489407261957364568467538141256589980028565944586759009390555408170930409652855712092338344605886674995095094145101324095479244376407224713841260091347005304681351620506350508801292118658018435164923486510360374474105522553859036119805447350934266134530023396072892179970686120434368627711442544122428022545163698154219934522287115320700351230149428506730140379148711516544213318912200796562319917570195374468913143151399344708703921395968067469856954102099495926775498067564566618432045820817694184229132957343367767654433814892312581200513349645802816052032363741126497788441868015861252624243309403164220190052640603401886071668013330835930399715681010461558656717632896597951685912429073689381784538510160992935211775937418396699964061932949017176677315151592209564372093580894059627667754921164381352600688722413912248266381292711796006808241503358637320010450544557179626399203082140332954213538170958529340634213986235882148074406785496390752441506145502478474930637166943118324078688735708840001792415722726021047515484874585662094041801748302807040790586213591402394137393897097619821515316067235560862462748445567037818237642389257480757121195725978371893259174335234669094152047654847435836332184200923361653270448194522311314086633953207894655606998766918857884609695110436846595764221642862627056829954885243091323125546905121737444674384944372716241606850699126532396830543159400407515078802548910859833672739317971476561503245667427197723785567021609367799541405136789597354900543418475796102680741828016069257053795529756786674661538039951965030466133721540953190617308259875745175172041542598034386469779923989465563595224026238411371034586716645050942100767483458040984059263028237164960358189555425904381616631711671865832645480538459569092292831237936777642339602423244045565827473564450363874853450568887858257739241979003735384275050231455568159970186763209907602151254167842977293725882025728372098431871403308506732120075914333096813454669104464013855892990621086902240101663627865621683315350053162588754826926777591626038911617898362390868346234467399839632470252320539178259674168518756264453081455156653232470521315119307830290161035603817694868508816214800567262686120938886073285555809348912508391160760228854699610720287487242077431412779176243349458768647753333962705632965408138365057315583276858507570807579280086604479589175020230468634043609815951842043506703410474682927538361597865523418859375504472666415743899122802003499387797865607358898306571500451012676634755044474580013523225956877310261052886880789662893746707663068858102973484869365332848587638894256662481040695300397651679018893833102011020288451825426502807956046367795502102879991594862315320625537909503100657714369722457716235995791738534508716766211205210407158630700989364987731087965075621700655100203052248980227255909447951226218615859823681815795334546231044224485924210640864291918290881302808068781206376508300270602833007497488151455750912579613544002674148991819838162025765484971364177200363554352993669134618839341242608070042127885759695353483648587575939087412227880835713567967113704726255208499072598186408913508245059353458232744824458567975766332846946447648540457398735096322125683801510179600164691367281656106960223179934478726609402666239879493225908089904841023893930047564552789248473856241740612711044241953070627635923623307953944162221295669871218202744820556947101635011175437548253863940364596592390007962902118253611098113332114740879767912493992487297832790764577634976589372467258070360836847910112034008371422192859302665584427244033673478359450201179035597632031907795195582172993632488365088809648899520136556296933107916875231912084419601206014675128419820623144628969841478603945410654561174830806685405553113494174113936284982638177617840046773367143751162785801175955766310688966998820213137139718525390783471348475822821873300419335791356775923832666672858737694740208173158359941004757949476137096902675549831575952481733740957894570597146432569071542553881814832734936801773478724054943476002252897654377742601231806966292303468213204607061703605726793574655674323963120657693187006318266041939301414053184398187198552652333183291102863972742749152765275073051871237553835973695880004984299231823428447724614134920252301010741366093784874725172371812964129040389450442664815653860587321166755580903019201461127963461080142632751588470635050307427321567030127252224342873472075251598991214980846669052912590355579916131609676489884323332284110530778902431987441321184857834482971298525032935472484537359747258206544073588721862163173540628148782904870658899866869845653849765213608624798235915982839474432156176637704360934034442166192017041921282500601454693207596378283941106502560209525052015583856337353862833022052343282273543046284468596759834442858676852231134448419341755336929001770203259973746965069151738938370599409582594222119164306112500857994660609803693744762090701451507042481916471435218415109777365677594433873461605431945992392873553982049857165011556489136169737408528321952752924239854514026071920025036942628434641449295796507182492808632685735338614562272430151903586272360617203773034240868306483801983746599989173262587101035833963968309189390649701227617998337213331656761729507013770243538207633006213386723495918375743996599496097931046289036787385359139193712574101438254605630514990782982463058170866516860361088799354514273532333881167882091633353859712614309356122085099933832442153556518579666169108234490004551754937799205782226070308465801007261529361516580923496060041797026308762867839465118828048796739887985419733229775711386693260256309996979131850874050454260538642652589178221668913149093931941357049154565243289121686035299263241979324826158768085092034173211794049112817033305311456023327203615377565304696387544669651040790937603516253009767953339947444827229550414823786190961336026192260304383516613910231089052921574310327358640464143712059768425608504636310545420621138871144954822937493234879804398523494112465099420250433720026836205448924657878867948133185547789254685010208846540105945574758331988569109394968498930933614781202829744516289214475524146205886297547314253223495229543318549636122664169359069255952347420934222753893497441939505672607266104306258811034974089061313756522767927470566938048889797606882444304619379061242387900740981058803160903481626602224499395168891518034057233270580412353747142826441144086856311298537507603809948129901089014161450324073907654507857252210999365482542171368479000083762383085634152590374101443844543719333296594835609215388907191274758477248962174730813218308645960440846063343280088774253484419862768403223644000162254159274393010821115246455640450709180098136092459056485350529899180547000114243812992531285916497242457720696822314483835324815907893093177636108918301102196519945586357709567374256623704558418419148207072763716947834871172018717807560519981379747734972467422030725178356547693771539548153833800190414004395724505712320351507971947183864774016494084579501100945058523318099210233655215320051641033293514289856202159732146924522577924639938602682532441657688717694868827209046083507461707503815087411295907777628287263212793213095613292100535982149707649996674734021768273045396916922414692090047511300600794408237204426073788671415019603431187175404709790744647869820146554917226932421828948153183194187948303290431125714859244342449296215499460235466362924951582589065419372386125781179052350151775867637265146730052385499489119724154109899873625950501960047766620674928826822384682004531492524706279126380859255180618676432402449981036111053589164222019268972870065712734279320482646884502271230436866715162627988608475691503544336866891382446599144168169093304808825850273546205434477281625223281103458146763986819612923098004126364218174439250989303872538680392927705502184362684792736250501836782255595324202674135829852770151685589469785639050571575937217948209614562117521955722686175935672887175833604947635554527934817203097743697057331266519553255950139589343847502509769569614518177873196261304567326522998034645190791860528067637619843266798329541436011368570758606328252095987692296622045152167449010835681751495433774653516706772640067410351450959915639313181302812690840401133216818475505842148542391119568491955277230117215389181728414122507068383271543041482002057629345801003170605325208293887669486418931090677978127708068289221883175746873371472767939377225679744397320376876724505566971407402547792146360167784877662607857433049660147158461693766806949750631504524177149469589885222828260440871415487652368768998261644606029553972188639672015997465411796821891058539355403345094489522364122252000538423401462728020833291349478047363428267921729631787939585446933459391600186672654734567380763441040620947131594976216572680031258936091738700090370693783015321353073374220257868178045389761238243044358636483264345185820261280447245478222838772417938600936314711803291747011350481204335914299225025788328827486772778960091656105646529074120618264928858414953601841259135516001665808302926567637903398471985315508298973114524156114648206484820582759713571060473706192551044022585116077150388033545211200362573713869320559811696013402540522117131424282048695082724755255158764779822972225012860067873169607695921570811557916301336529666723541500448558299935297149148020707582796805496454598830638863338015794918575013043926847701297280606213537404417698228914122530022232786800287462631871165856301522275386159967173855841685286005233237544262198197584444880998062763032505581256494244163513880435401448865803551407984212844872571427469738047836754208720755498133972524020013712682434505991876959232443310844420350406918583097879793094549207411633343818681744670422301803625575059055736971912705961852675422916869944780357240226625220938976068860667774513776318401953613829718795145356024724698695191605165919179556978233969356800504956063191465400575028309792022135517902822077742352448206407553819737919230994725968224044416899606317617981712215325225303215971390168739533784747393807236907675809188941907001008541596618028580536426067686298647621907826491249824422817590473601917543820748302003622803356879076590424581052504175178443906768927907909941158676386299195414848144338779136898997282137351745545852794202288652874553044692206690185911842942383207155857479822812647966024302855111264277140380260462571819247255545482612576546906284375929389656447586141889413731958582160119979624721776203400568980673419232764659151767535735082368244287905093716891875602666822818969006957323246605472944883625833450181998910348525372125758605569379036997022424255303486403542896316421884946675814478384527733580142342282744728569821780523000611644335046162088652517969693145196210397545752977170325617998447213329975301004264504167294639150924933134834384133207558423757605007063387612785706458995721741651671241268456061058006858683201759598521535856418281868232523333541143559318839634371968959262134378369298039912168797353769099144023565560170160294985993210469400389340923245928950796248292552936870592460287281952957940728512946693459625998268236347065949533378351800612006575375064132721512861307799344860643740739261138145091595111893338312554806314608107189307665836000231001227610229257421725974359510123610934159002544697482931155074877399686792556852038453771386173088797085264049833777771701937058624279290158118027644153951361730189351887679753111900435217273185769499963559465280918977923349783712643334049309082143090021291194880578996114732980404890336750795286206666837393970273112324373869707975090694137500747850655191320605374933118157579034720145109071171533170044700258646424474652855227637359012253449533875018675758755064193702409923247385444339921321025749711385715273561588781971314591902931142103250547592432832748440697001918873136549619650044261100418425659591722381879271106055792039173643958920273188826635775509530143328529177228968127151831724283309643158767827234723086117771639807632015886857362158227371731833947269236765023132660735916824449871625676789212064814648879198294663856297523350522922129428643025432371220196928132373615783961276485165164826307574193396634843934602383306430673240903054767680492892235537887325650006382194854226879881582774978463309444818998290477434725762576397677074495925557384993052171472841890641533456821102128472162234645361975465288369596862720005979577491736532664819197484781416621066517317758202410312079046009966001406447981206405551008321661752658358838554492610174570906740336556000673357087518446333905995022887228768520148795295633108609152028113906236820007044700940261087719754801883555437168502326180845017535113413172121289291285534493764139272699274581765743765325167058783875927158703434167501050348283561770552167069437606437801982805155141451364538554850629799353614313585469713994960771744644377319477356805816052241728940147366419487696491068257667396735463541626243346265407317378724249522213953756000534094136564803526632444101781613845766405223506266041614446259900361696862411010343752769475474136841877321008807725012963659129701745460142127913181664904724908681473799038494251221196807151642031284881245308371708966758953823007386446497491397175210173049340610916276496843152909709177712790168492277621814905394878821510911009314596872451157475604645452600111827774352332485647516770970638819589413750126446098855091019087285707267267522458632683535696112748080078480548436566459370448075912488797585667218997984495198537059412683473152957222911923535155725164050176291970482542106643875352833895330033755345448072859252640798021785554374735047887721663913904809774673796162535531733853973715357056890239085139236178511113462151719435723417305065781863548067099246680813880454482641808010226179339200075283866820447316476163415817683945681328933694532387165689728158716362808613299448693990300321716137061949024471156512773158021464723851340357342229075832783386328518373059786719054932984904012276979180953519161550960422328218143918220345865741311569897806941319354557369675859296262427264191210101310303126799927955543302271127293221198846989830519781101601633234301268511112769444873210452754453941324774136818992405176065242114124631839239097097407717694040242425251337480229408930037922460943853667967521678176556976170965404169525480208085368432236103944548074486039659807387148636361920201385951594963946217523245591923062701798637268158428444675770033776626318206481115297179369473801722620849625347070407374145434578398388986956456506179092149391890878477180993933638157312058650404937563489476310256835108886065509171018235138425212325344510052634252238179501613849945990462273727488793952714479076866270587974345265724593745900165055865818194380723163315341449602830454475876344888535327240298319166617881119378123127592791355895089849666570446822277339490455671212010977678851684221030460688062162975940082057095040625917492116955549203476526002575729429715402165341010900947313005745599323667301223265274378379196089237260684227220211013984159497464988357736030403457068134294227899417919944179287994344076066089777627646396301799922760017496063685384592462142393196287425776227177428889441248337942203817780949962760494580562215164071025881013682352194489579597018425924377776533530249981819012578592540993042345173643522864213096593762799282328888658857557158423291204363031470231746935772063343359770314239248838962577816430362094812333977555715340417292972224409326219583383516762509554372752941652876016082004155198778047095392707625448835957063975265164546553660803620512011923840444256315731785577617120844854036578788576550049234842411873712409427531061640406287850003898532831235302650527886668710134241787703342059175989495947505206217695995992444948072693526545355753378082192085819898563501415191381674866064473332504996445561142664946970855889682093770349535380885306617851183409987767308365636453068830779950891864276789155344961919918359104742607740621308924788786644584211767544880299990988155556569048869931846628910806324521769379488288810512383745457768431199413623790699232748759138247673457466694033604793324369999278642009174130799773898213379741073230804176448842459126144991820200530009331533315298454722180792833093480990103757648610041786135266170703769993541187639754594463383724648854363695176238931673352874977741727563130031029055048751027534015105836255014273864944450402868689693972414219527354292860753109381775558838455644355254153307876167893042497241336426910250746971006540176092386969576790694601643514872346879957873786896400747306003394224046937055232075442329120020658003016758517688182318648346767549500588027994271392412237138427393759876309135288122221806756515153684799265810084438882170404999655212203499677743732517454153523775985904160719025862332533794153090310893220743147693498515093853302599986285979082622465539985436253037060194571283129191549437963076382810088777133466987815198241079721985476245638825300382574630222442195421601759416965833880689727617723221157908128036144640522530485951377363027372144473802198480731377523312910684263334143173772455597539380798199309894281832133059969158596161201128149857740987545475030627324177823378491827723401082494234278012766282257247354657851784193184944938590666505431312266047851346514970330942027077128674496964242110105261984851809408500966521276295820334849101055858762273460274138504263891608899076803887223532496459600665516556450702963896194632028199229749896147262391611937693053235266124498342686926488308495772877571264746602827339665427761234502709282843692345032897618398728432566876491370807064462318948664199431939404526389141661570149975123871941250767161391328488769536990552749832119863250269567556986882767272170765306099207505895257592165024908108904971075734347706363002326025945301779910631244952987229701915808176079197234503197671588926423682469801014592736707740111205463720576098250302695406237180814442290692467439411371609761580599350388102330737658164502640273795294918092893486993088117051574784322158667350601736259778379110375745710506574959447850251727075878140961709409671313760381165613400387206798187035637654916375921651449323594889801782433977293625817603856868577841615630888978256491477018899983556902295410170945778858502695491126364807011774411717901369579325590637725598989120709746960109725845433106246331399714699423433996960610372261280957250490860826460673521610475664736077726212520831700309724193088698153264762335930540156396889177132732550822919515113628041941123029118008326357248123900462489394365784459547058016896559345710802362096892329555707171213437041973299486356693620776434916170301741763662482343767609343461027697635264183438698143994364944092079255015770196417236467626728119017813360208116448469357930489613926865370783807048549624771969170732529845682650641359096598156479360233333172731768285523767017780249148845458555548263962099530885242898641438415943054095960847439272043914517751820898058951349882427763423333931195865740384965127806533348113665320867822456604171696637253714281063209188125936076335655194748113576613822385828475919053328581604438041293023503001815639195099816353352924491277453401979720864419234818758746349226027391969378804999470126225937945795135593703385527798714308010206971043006421525175353085257547421820437866189361687980027045425116342001095353366567499451665995585385720165146411284290426034185768173419359451149711372905660977616856142956341168623007479971157192742444666726853393901930545991702075421372855718111830626216418944041288326293644529830221755971853640758360381275311336069521431781372628578490634512826812131758839679499218162018621622637097750112128572722425902264305986781562133931728650432347411562610627989304247492665078282470735721220471564116464392582348692928337093003983194365629491132031683401672856171100107664451188329249929305287636056134695354241695084045121003414745818769809313244020653630702864844250732367863882710035745973081765540651535903919942341276799991136791237395204810510421891687118586096520408730083481806896259327420679110796419991578595522522836517712363885424853698650703970653678769141162477458353254822198935442405891698826845228761031376177808690729999271321960014704304096764050717253019717758888119822653781990611612130487743305145751328954596625431925902680839345838392208347365387662374767798187425961165463847703393811294718514686371590798690173065472683440649052547337276825942676201164832235531809511154887759298954928137552625424541937218518421544019549310118318550399758167834801752393531088215323537553587099200051148336788104467737944641976219433028842339964834520942745068624440616006964244496264400959293451510541344295189790351972844910391196518409937466594881710865278439402780679638201964126968194666732151991319971732737515513946465814716396920488313983797864627297942336864023333961369730360670661592133424438065199258793275843590226120447585243966517139733370047241527269246111093617827918007887777625246913637152305625422372582907096447066196154605355296620944025623593429228571633188465543689219910980985554927143019885866430123349852254935738618423753781939590944028936000602630469360805718514121662399559233188648163238658805413096864365338473967408057655570125274823850268571015069061149535305977974276369493195417042333588675930907363849801688019574799950841476211484598665434227764261600150312260994453320947120764178768675240252433683243922507284337769082521534811861951283276239834995818244105620851679030126391119167114638972999823159068439398355655055844174787092452546651656324580132598219397118911507066334960293768187335069765724629110145556501029445843432461147860904765308812603816597626487505386330293810593497902196432898991333003652547009666145697485186339680567528172643321665317005664938017631142406006713299769396494597056568626818185346210346284894318352876354113908443295128793604581942116571057806720667945320420931554336500786456256257425125323270913481586820457545219843246281270108086001716703847240861403755511870975883339182901637019284406989317847766599070685262207127389299158424035364529237695461834121511001320961274511719281494095362885887168921373062186746198619953045402504796893895594912029994640042179134512645461405952734747615948227790378772468721773052556352520127913617804929302853676534914428009962850420630477695959415962623004178370684746759719968035523774937545906605463251157209129065466739799213045263097197654868789971216808233956752897088354522538073917834608130282539834097895506307650780219536842626101711371209296062403425645742243769096946066235640350278027601611605611682024382060801139141613410917412568616032216265080974510158109492315871256009945454058857003898791685306829795558086639051799508834618668437550018431798663745661886678621527773054184448634916488693840631247457100152442097861219507365247105397565163422961282967428393159792888911248020334341933074767380922775994359960771346985852253364490573552780325576884645213615749464823995948181644842780806960162655421575231416047835903307615241599615422335562580924293631780950364908910120553060109909522876346608622786627819612656742985713502266678985755775686207754112513900867971451562426494268089845068431094542414892826609941297494754939329024313407052676712524324794390035709966562429990868790840136427963187740877634700187170522938155727118644420809282289868451965793501110076165369239108848833171834208876396187421049553367967740853567383653542152795858858907324916714915251668054132383158446859708756711240930700895645639374165962396819604619126447126940956825582028745766815739205414571482713698763124376456017241300992013534239744558088626952741065022574125539481098808766115718449264903717515447700440122242859165017947761848713708060483212386148175607823601236148752592728468991583557289916411558016364538520743837069288363747623017974609759419854751474299801981739145731844173687869021731732883059855411678448465983134632829437784228774154864864402960957342684914380688966415248688805657370458911168690143858950925156593552951101369063462998329685211290810560302838035257395401721230394666702742607556206217111579995103731805972164866693553421544353190280060951052829843644195458034822911824408176971687618402315882363861125687922282353836767343494645148053749544526758562604007672093476075870844309028285791538696724693532196869602774387771050935655635112810152233200270870711389908150534281693046147162606970693073986567147442516481032120806710583995488180070629692046667812906332884706286458281471924125215260438659825470090100349367012533319538862150758954120440457865869682102942251947641797936161303214903519438746330305718019601946943004318827769662860525993654498021781699859761240421107820480675075348376558913788073184689394325846732020466629607764152559629806938410167263317659103701103067886778599273888300338664027259136423394003710061820349922345290268593187619364244058218649799019259076789660270825197096786946429696828167799405515821581252339328784782818928256616183253200175152349152603222481829022072960321507591857100373655582517104521200243102960660426450848195790986797214996609474948250848143392242866406985208958023293887401486710126922553746290431780221598516315735844567948099304452398961140308379506810553148933567653001628526642996362468648125229092954919763151628436445599195708200422190456631373186892027571705799356901618669313848034896936164067088837238166185651744239167680992900680608876911201912134024737643493836985977527927431161210457925646471947654444574716181606133700659558562077296546291802450986604087895395516607681870030331370509332384917280964002852188293378561797159606721374407829048861219239962202152964749168478854630064466102468217520076424899352925152765352509887888094790823816791820446723273539967167860713862012227477399355351013020451564124653434739223378093360672635624281875842843992861741703952316896141337911763004983774243761044564302246840152709174831197345264508159958358407999377071007219400446771345643541744881979594196939641375549804007705103661719982990624767727469738813458961072201803147414272753854237090489771599865213134788937630318573776958819801157821639325645524343219205981425981032880150573755794347927389600411059223580140948903957021114080920010750352601523908801000247670199005878722546353297220453477614185477620054281258720816459412923054695905890965696418627692623938270024495110238465248455618369600925923297366604885818435916999867309384573947459001129385986901705235685492349568859155811739570811974390318597597222217591686883188992167216040053787178740483717977951731483959963405254427615740474617170842561485511389188622004337105232636810628062588760977473336264367550877825679997711455615284690155719250472344067267204767128189058905126381880451971663777785922880503642421327632402130723509607697969048028816071549638467227857341826023829794355918217760147473165244547976648935089214108538065796468712801333527803878169215567714889280612560866800909155676249304834468065067266724193176407981899832085540967143475221080296773474262390427696525967737215154430095878490825283582077947621264580992291451541520387337703159362044615124220497469395816696768608213705568988075976632992868621683916791790272928841051756572551448917226350400416121964405209661916062455183872509924731637078698421454058894612976157887765835193033798671213857137652799359566714329076600332216004244415445400859027542704589397005320147749613560491307081628254066007356627569471938448327351312610309706740421446705483578624163671545823281738915182778309536761115807410936171769725322559043479980033359422054745905256196905709539246120239707988424899723052395268613574972634655241351851839566574821987710020940845016428904715540340599334382744180823981763496113700009930142107391815658605103077757076548618673730381724344068877213974146202960313896121707530369993127574862911381767669943178913430722246199710316443597842225197885498613113286202407856663378103180753966335556297298963604568027242381867646631114950767737040837326085650736731312739174339960358183264753432419669841462832969198904307542311555649392694031509208347654449862331802760110949354965331177701628504141301536759887011771952515783505490445468039497668845143937320377126420037558366410921388163256731119003655497958535347005446898887515374007801508901918838274486682580895731137292073452342517321825947374678130674852596072508599512874425163483551339169675844992012104416943895600352574713033726118660116804203022627727704829065041879382484391310161248378632684034678431321252276449438097956366447845727012608380754788845260128378194669847297705386625910646033115449284736245881501025803213249764837969836210039932734927289256955469227128041724120450744647921854141971547737822628705657889858586952315166464699405946007199916491403643234138108733247168460826959323745441355800898378024084080287260538126376298165181380811403912555030692920099732720138871590460956449046977851239205855085886643417646905590518263282343619419371628849181445946419504188869638588651787460399981290489506964549623651123616071211432738330572819830945597820367376404039486988799927739080039540924646338988865794971286244029041086223763052362552547352820257738675489811927568288708075395757707913225002606663490959160699656668652652369741753348988351519741496067119439906924799309470853395012713839316114287044006418684998428775966705546610116177324177135145380153231877147181870655383058479812072515214386587686276296551893688622029396743167953305047682889124235598254752703058854653472003431931012911677648742073748582777811010045597379196277310803704721866580879546752359103047492500171842355464638699290572930917383406278086462077207532567950242411239018361044187710928056415504047259392826017786727940357461216529452450238916489729137729778009814057315827120980844921994072366233906425799650719788379697682400716085118733299787322577270352065583888065153362620657791235736123893355029309850548505226404908766796868787777985238793540358869918128522280410251198431329061581228064628917330046984069524471166254749807935900067556094941989436729846892381718732363439296841199145891149615051701889803922610972160710778444626715508906482081298199142036871261788941881859855999677516898544076898216709726932817842613376465959430837443727599399160620023404920323000533279793977594531423640247805370025518284317413145467090021499248102777258497049228663738570400187590350435628544255074371761450092493934175394355391458368366950421992853998918505960774998469782688971088088404435335440204910098205482954353324205495079648412611014939779816818016660473747484923593040059000466509186766000369595699111459095991365639571407007841418090778767999092611848046026103754272060426389885608384685170700388388374767246049153669016654551173874628282089860272198313768431502345088711720538123101067188132533008544569154243508626768972067153747052730830358092277007124853955877046920584720597960523509263023405516256940041748242149262860692931585371091398979715525931591652302881336563416155731139349963352751288428053252450282114175048956307127597421020571762020072193556031446978695357766214986153243989805634520399513490921894879685701885144275037541566324491905731129402962604026671938928088702371928983340935349119518426486746225485271268309582429951455737262735684097464419321226399876533930149274570528151367553826963582785598190555320822234088832271891693512251006575479915530692076133288288578928524968691456207241161219620161982154232331013572769334788685626986949724693121869894283303668307649948702492744445675616685548256587433488836926950054836899658801049309007762215797342814973085459312799976142607231582869117008843184271873685076696664288770838540626130198642397122827900674616758535952562048487938969466573474163659352309018868290770273077522468995315408869968430543541394843929521608263999980575505363937428842427337417023362842251766864859358190337144978809132820236294926321194811369316254791253007749300764881489582056016739195480029576469527299994500626135484443206883574231765690936104367512705723916275278473106385248855457179782776645515784689656189819552202242250360892332432708523517888345042434477698143783591367999788971057588875163061412153397830202539097590701181584590851572452930571076602863208462475402736428118724956537938113921423493777669075036023211643510147839655522095261060790107615337344744609879972736976195990516140447161741948619814240488117557863529037640358157322821437490193684490756753286689954577716056606815514707594037165839285032026640696496509791240993490698691105055397622590718866870574810330718918415088014085010213908656759932454169057213013152920633694576487490885702535772042721850883587066122510485742219354395453558000896331723903299656809718876890597333158180149441752509909954310586079988640652663387710110889047928482128188933687183616843883956374790366748756846073633685630666167810997624075435656251599354495577900001389112749059505883454388772938704924036981985627489814532226934623535984419723207243751586080336118125387545971311091259822569800046205505740626770277183116201423490458190189516266373226510718607639064552665116746039478252427546110241865149179151101429245412967825996500662926963512176184918425412491570637965458729341623511760718207096558947025427761524884401596480051339902230949488708516555912698306277440685472549134802708612659292031616692211655608471279055461276546576398416390954441341744184426828816826863527964548553192653909653106128248624242229903601177110780474271534953863572038626744509843270981347257748051455391367790295365570300807718115262109658677766824405032079652116147120508854513751530549992151206319302072386931137732433251673174294652240766819583982831832893024198597394613243966184243002078203416650821279083039133992251883596354870003225229397382330110847003617459508000722403690378688611950108620892919075705868633916143297307757108598972588372080041996737270405699086199277446207718273246669385713591352766237120654331878748868106627607895400217975449796960979502112529692050375933050087794033625862092286731551247413277107369761794566908614198562446774528093764553017171175093625595032370325623978781296713906831018688172867779122886140731676892982171982681392835371136688766897487946412912977806942315023269306723392397824557288920499645717889042105429921598768302074203391267290446666155412381017798888727650629374389867714431977361140856669494820606813362187536332624548366558323092896701933220440711267826944816363943095097831170133132199611738824052280119882978471328200012357056579822608179970447300051219044901219199726031317866960151682940744120912129589414477546767396628468139955117066813696735912658411060354383964197772878130787995142208427384037598914549069246219108016990595190422780582654605423840849057945518103044992611223908302101241014454632280718710042729795099030452721075575083752447145469607251351991649852144599934720765733116515662580082776389431351795645378065222299753102606329974381582397460330072333792386737641505323152129736853701978888360695033582380482965473475761067486636646272402925148312518458617589039735884467405134351121735560551323965759439523349597254537136339097455184712040171108721286505732637212604237082029685933503976150322412590540450517996480666590927457138907704800595808867395552269815575003956785666538241505858850108415632675106886657999369475080900964759294028476742191049215449341940915605126818281622681968272612652028052761590460389829083958373745107116351036559128266152473121243332860566216980025330374507716808161049914996716179107066394563611318913863533101904855214811451899894953947608762965133461074928953016803563487811467666405516113959597832269444513474676869772238244332496458084047451407644906267495104366571149780009939769615642617913469770531457148213447615453801944684018017485001563971132763601953028637864942701293331795422584938050453250472231474506429996011276716626819183672751838484122501748258525446320918885506281651581086053610259951807791573852328036503584573453643767023827952772986121543171033216333044924990563865346713141346269118901180269342595153045008287110508176646206256774219720035567294366686246507741154372417109540596769386941803839189402043927775912486115545826155853384720146387319862781412194954446409267799656765452405723927141539685090422300617715352485320882582398991362351487495460374908049821085089474923633155001139682890704723576780397151561588861480104869413178858734901564905361519377120300924487859557810875448735994508028171494301528518450453960089119004207468814193723426488452905506007843060780361461585141739473023008422507943457475662973125101963674563018277433772418577609673021540446794938188850782236843084419902731806972851810378074711776297061159427804041536761406364257075688659951104791873710372942718846387134724225249126995902413598354701894412256227833372322296380837939161787407371878316583017602504554440579488552279573077463658208930881332012158675800320337872401124997597596539468398120336065550225638216475902835597185156394065423613477975254826438777950592925442776700402457461098284755361069269876083322742353748318195773409395956929359635075578479845310651414833079194338334086813401936568207250712199131253340502400161876063766962442075530705271859959593052889719281823944006712571563682627549986794999042647136210448703967176706269343288811750130965439677719872724508386400156861514139818777072588616859994184372209222361300977092622244968749494545216234932597797735732606810454283730028876448367911243445966597292451862468359048921613719271021154343129892382849736079180404997509513570832801693885187745513063667931317302456781327073938697879977966204042317552838011811956432787113002600777929503917583123247689423905053637510091144596124280181504325664993982361789586208296633739009188338742421206322037525315982152585804452838015943731979741787083923909666316756668250882994684290766633402375001113475792279505505022282250501603982668103863153651477331414908278211057522602954368576998014611889396984300019164697835557442107006435503326140329217686480481174024203704557382225872247919808504853686107944759563190129315653478140856762437736323850481267414538713184067597150485021813721267954367441747693404140987918020371790603667647991197040038749811113700780839774644296341794139132962580221310889948535960222673118311592750353387281070848822213055597031657446990360182988771952395481520173435105629410003759843396913727853321422742766966432432582492931435124519210971319018948322087111441906995048639758787207203211015329041692477381895794327345375065259259280928523569220865276797471151619970852206674224317373304845366951042461172193190754097306182067999500942007187345845067104772409733799018870373220574931561169994344144739622348583824509928275274962601286320471749411705192391419156411184258544386737072918051177693186958292228165050684076368111415137900543101369976037673009228517430872627913727603912391735250326194001835041998458567917530959933249235332318604722216121474795335145071324039856424657720844981065914024351605774999309963475116007990142001957380091956944940167361396483278548259945250429755951691787319488791437627268991077142337681011667704099647044901633528733340223857231075054616046902964326605202036847243108514075612055196444498474935119675723648463841008082803491203215586125676971742331123675259370538163672571788715593646492186273806965348220817258162188214869446396106156667456959167367326287032369724393786166117569203213005601965883009595117082272905514147630369048512065235916799288074042844994843387653110764445423555634670954827113837712856974921085054795183996734663370955006877288597126191210129533429917371392951237956854929883128411536204492166636276112875056248693664114535451262951356660682293922209153786752314671228468908774579853046264133491556532133682051910046041477285626780290312880165155193608208406119390015114546807342477455083301650764535106208050628554544976377870400297149565739203705610476076180854699603046227535104301665244902733395768762109482736747281234663426297008724969447902906086791799686826290593468019691110621365578465192394420635893033163673545712296411766876901287150224863989042827106826729967313198712807711307543802665059709660759515426145878173288200360607293015660555046950909245560249003268008833751562013857548177241536116519582951068755917337778514259224674267069835625080556069320812292795612279652984689068186283703279553993216864634967497122733122110197505570495435031887142871673412301685090291274952878015139686749311399989638473558710305851357965385192182741808160952764068221790968647834445903122183533043569147228680096264179488230631119251558106386280273270817053852791984924753585719719834678383993037106237203439613217943455045021620719165642169448314408249969456220437152192682906240021409501960792009285666243142307058856577766411533767296805924042618384992102214522292978348286591031879619518343525058739130795986459935025554764536999718668758854988007516472381603956961727472884792292266756507237675266292829734287433576566221549342858097351169435857013222166395389564992286730910958480927269198538275925607894489867255536927359747411947960417026959779836677321615952487034305616129952172105393928438925021801179239638661219381282291792678267576098657063180243293238394948734426925093623689617787129873637295972494325883500026287724953290307751865088517523304237944365915357819201087329767324062154510760311366027080031650987276422140163418976566361709533004227379063828176538899925442976033711133040321939103948485262665055764391330267649932211400962382762458307293297404747556592345382885794061854865929658160067426693298447143554282658050919023087738012401287333340243349897500509588236184376846393399870371981550947732007702078963583978798549372833751902739786631166447478252416099211832691031776791169747264266023957280473946210844879229670527604855364638319237201418810995400874098216450462258906335458137475953514287650120988728580215319779460169197619066171076916776590354081548522109163064528763857089513323208664248622632559028059655992209776412520510881126740018802562407456166476706362134242183053979524223590345606438878521716574372735267581889375829505564310748319669479443234193623962581514026684950343049938756453434123464328959469478023970856903549716198692203997572813079715705605455512016402093854601121339259856407567583767779346987135464227055838615323379111274596372728094731958360758381465792582741790237004674026676286754704038154862615225189492871061128738538864732557980273692143012310919629695550023867671253210716789297932314968329416550191424461115170612854973282797201361584296401229886190068978799976903625304505446007012726662712019603188070187729227526239537717855844870210447226277512651580815578234666706878041106787958293273183607697330857164347214706903917202438641223434331540996244368384222865651337855682541317278094543269930083888730481854034724181860841321399655491220050630160175710197802080435004264792509877796820101708071474287524988015428572869413116417144748104946169567570613554836626327384433312003902645638254800023017136209186227337823956714402055920173321658345846801615854188227094714939747444234718797279231090444385819674058793898569289632778231606038407766179584521525786089001509739506927041518559613098488148070376041580339180634237149279074439671736532972901340168926097270171795826224717100445582054616219957142832328125990258285314488457566873880723197384475500628935487378065997912060664186054303945161101833726617924191838895186982773517199740234418403766877395713130702220188718299324682317775548506210643954700683282540838221010754904212281696058862961342760473992940049898737303254924124449636294673445522083762891185448682046964305239650908509585885535010632992747135213072447075076120305839623922316395671913311667663628771018546201504838352752678647314936518483181243005658054607090734832442558893683575960424594296549394421744084762137828567386359810289977756097817958654220231954455888841301069093832651977994691637983358366903307051667949608547451541341187083156243751821925458597921716276022694333924078651905656510653226733654547699801084265023801896514003644703137697257963614990886957053801428882191539222898299543850977251617485896245399639002583860888562537336329517287394819275298643081596936661919744616056521759063352693603398678306721416429700856008594589486349119785709125455231300913682606100769836064008140514852172603897327453469201965850110043485159739302979806310621784255075122864513363601322189917008798143630413326984777925436779424076343877974865655768542169159648746748397022728387262145821566952448406662536868772134765878313572499596433238228871962086550885120694683273089541862406719111708918557883415778240597993587823674230586371390763936634678889152218165011863360683100726207001292036003077046394795005927499870954529163482263851061689979798284273036088324661675988079013194649086792443632812173533773933571665977149520819435274100605389705375392661926259575881171842194763980650489583881225405485383843373578616955198600484227570397519601183805603703423286800215723000137632484577261646896310702890660132457220329404206098503073734602526043533292076196216897381259173167668434798429339129696106154189675905614919579670858413072127440614977789753327039902618862293862484902248622870586055361935987755104406847069089902444708241386139640115378677340695067675130658731522569995341462437783776026734091040128582767471275865125900844139365666198164901581712480845547420799417805020807027494060554239112897810981359942642532653372631952696002891548362431386549036437915344272380205559785038551671202430653233439301569189294192349204037884918208428026058036820534149698810184590992145651967141495722554433441491875645981812289382370625365350750121331275147078747641688045419867832318548715462301668547989492857156644194793065652416955263918116148471447154740403363077175101336177078219193178268874064915428481068762434393082324210734347999463007180384168338550836141042585955110418322310958992095326044302350159958671158864295583929345810125499642470271991667285503966087814494894206977163130062969330858809283672973980452851254093380477911083098431955088417654931357657068820543729345390085432877031652786094790403000047045807801308487052698383390099609580113984240699173120625578696653944147800885903385294390605516023347979248169706697252566377869789582420616413540390096080471206806510054436873710715550297172510159267680973460315058586061415114693386656732952344506823270391365990886403420833269639227361763677823361358903134573301326567356827003934094950831312143782320488490403989771535900277363374485948915641174920887932745487388145725109108103193440315044590376257303394084694477120481123863103839496679775255139320134873962787531452911759415632191898399654964856929368738884653545806361591135310709824432605572575039014334390909834233561600848313803593730737848371230266921234197027667408054634509420109951403584892499957824675971736796387406251602381406721190680973093869580051886099465633247289537887953868335780837508037366993064352655270942231130801323214737407664928510825951918739885750674141444652696678663194942094190040394323018244768880111097035654303421646122621350791203128390237649028498349506103853471758688426221966603729235116042775701928104957410124294465521572772454505156466836133935801840262126670605195365788213296680340084994147809757380795874251038022047888861904962818359539559575250778469189909015227373713497041417961595420433835552456195385302438284085750673911646864613687963884504943249229587759893960953875607907662546670259708065029937421299963993586093020595649177077206492848925091733441290198612757170425422426650217858491314570744444626992318292776777738224569827628337042795710727706705432819307832264935644335844736986249867328207946396729188318070443610509227922550513334159769347774219832520467507661002458350977113470914202053405652350534538685791714106480692444723885598751574530860578959344989530254544116810386609424474563300908832319269771933799682495046479143852223578412173738785058865917574931385365383215648507355948200892647899980883357273803073467763090189262882903246564465150707315571850583610460103582194520982463319066782950555789519066384743483354833224593578057198823151813864760426350617001106576796476868793243736021835324037474110249057552649905205984260926955264080254746594350510981897017987544065000309369469833632376770351900803344671893651992952443645592708343166559170185189544328586083307566762989802310319642640270814765131516866975519993711783901820605387513295282498663354927874878693289619866064118331946188808362687950256435826505469495390010618285933481054194537207794119004581193059776489475125610314042963999212904252910537263383032481835875668562370336009982395616432482799966217300257084176256532674700931965750377623192230457449541888634314862439583404909140896177277486985273847038858036356689407031080439530823897978117918232552349506416609238051167157804752977821907090240597640024218105192059436115498428449558430478657575866212541918428326842762107070566359189259612069736439256955843035094274720082243476023743810988865052648252910060430853273978944670595724758812062726826305786653136485922698429520742143304706767665748944089698382544357356680286856555837502604068120546078871700740000635928580338855313728039020832463310880011367360868168022106842380023059850188761807706030389084645695717407600604755029737200789557215018840463370729674157178348730293793446639448502196110941490897913703400998354126098643060951389598954561182466777661589481834561973128553128037631110317694127349330279143127359215738283206831617996948204862245154868915344718394243688692928702125629199049593809125968080660022089847998114797678227414910802603473679682991122873116687450421610537083358970014194038809836855550806803165144416394514280368834300341672786537354897169370075504142397346580231708933633436848723689447418532516601724884238306697481619682616569426097131971163706799011344380065918151208221528598541469488838325901340451774766518105297820832937300228601691956264831445606208191076009596801964231710427436655506540747072815439312333393371915347493149884014140054711923963970764540169446609971477356353389891655739091197116742375302747279875156773638693154500420079468695192923861082616111343637188951731687550373843274572389654785424523962337178924486888125722608304205070176304932938011728499242389585478301152581344940579791984053814452409933005170130477810036918514153143194847986142680542961286117704133267037188485677591367807379949732454292291823450451608638957963184998837898604701186678297828360200810331268372512814279416485353397511252219863495387781155456248532432140631505862578130813396785701935073822685782808161119968829694876565830984116303793061437365612047792452833048523303939184212132301197033385866570972924781735189116064613412198370519308231265930562597154204061612924262869042193441838509599218900031099536077709391131319507377373848907462945003817943417068981513719056152517742214693000916628542041079260978078117752283275049874449289851577859538102391301377637120158752020395431984297947584963521274240628879889408216603460088288774594780455500869495912593789506185173358256468275669606176073803731487588251965285466620172458742952173878686431509453517270610805691486441506852534858684669908257570762462650010346680549092692718379726958149604263591273877167299470207496899063962016666730481910974344962343693539811990698120172771754137852184979502445796488082704543046811382652906404104802074795144847120846522455494817127204540946567662653950029190927263200553193659500424733700513129948519982384979761015565495845377752833452647872080852963107884049963424315533371148107020350066810153193376477625232489152676745496419021423339792926391742098820970427248910655840400757126091783046791241955505160175466885826596268052460309760180626998033761188295802110275428646354410916000634416616792929260255820855858559651947547418710129971167475803143597192501176512426886229560924036815149204051101427245743255788815382838638418810739068720001472992837434679068632012849625331871007624624342506145137746972092348298275666256742491324099657931915530927894899319727624566169917860918507415908254861997704891077730409934088841961556761361752055788403562882871176494960713701711478468008919838334673462420421876016500334769282403978183437904667083562299363029583082480407314496611165847504071336562299052774613437289472581349950570233062065279670395929844781509039140413509990715161942205935045469739430907857388187941694683820592610308263488196442291577726157389263394752096537997141113461439257297013056913112323050472288285850536044412602579169069070629028375277134288721654334495932964139561400828933928671551869970274257309241968863483478427179350411575889527887996327303869725740218687756861765383416516496907425611806191468113486345665393609568233429601327877582623541472261678045018010534949037343840173243132167862871037103908452745318282935648767075219388494917507413164384666778158746046526352173273309169181171556552062959289532699678810914963582364733721984821549898975617721326422865608648006589328019680626857893243073313058340322678920043186939101265648160529947043357674055550293520188314617831745370001366587181700163652514589415283840476920192760388985668541410794947867590155555142650150181247226417597853864039988143681208806463910671409914755455722949650422605921078300502686957941950331083925796828890971295568017923835973647513075822302155194395292166971577408569158771420337620250709284273877940148553631690338121563757137036730510996783347863319666125374569511854622497119229915676051334967523992711066521815684792668036179424308230463420395394730581815968138154301976402554993422836757185301214706929638580342979233888348091163189993762170122659995364527601538458389514580820940219035254699267677744618169276821851690323008603588243427333925094125209515843617172530288731021257841528406973084604743110577889450117926806182202242108640678351191794776144799073983744369197386948399916107900502574149630803273327568958572764465128106650137306122070467040267148529497038214476388007876642937000914276818672810295720358610239288230467411321144654476872656017853025531269053130621574953522765529373421001090224097185024641308932028190816822425608351949064613319353657942043672256294474728350683679891321830192585988656871985484834377442600075395238153266159629293804858833182131950318419914743737890883631244615238742659256338653353326500975443139986292860096629440913951642028191932910738835158329146442133147004876825440700333196911522909760620820750953478569116948314046690515076094487671135010598911122078000235579804792498091683087920825890016200542223932648921661521070759120373369839306809354363827928706805050015516210226419826883351771602259980251364312391970518970469560277518648978209674257045922881280624679308237413623438694512327233285360471100880231613182398341754112847956600603525462092158345049149480206773762566082059196630318074506588949221766481826410821284517286908474603971108749666259151514274459458235466318508439757742204652407905399993555421292437041388443623935195925561213443817591818751927650362456134467737573869457039446505573553449827580375524524962714726278433282977843069366183293677130475148588709256857295466390006940291958418947699856655099065586704167443841235290707392374504381270722898490398212536768552591303840060589824127357507982524076276638999231984680331762175917320622032157373415596836926908264272757465870754367971047333567520549341493537772748947077050903053891118347992875777159318142654556256151853473625132586987453420659142370479135851306942471000475554711790924895669587121477111699589289933295664915924161723429510180615871284450133584681875267860571787024346678530634312234775839589745065170173977538922638531815469789113698823830348520782457511890408704693230102142976008975268175771459516172342652681059211253346502204950207313418879449255010631704749765041225261271142028098154409557925292093653039683460501676575954302460536428992151200607701348174723297868360849948334142378718555327096812117367242784829948841746498584914249000167076592890223513780879607587607743229305266751842645799617931833818384321236769755512185287649618095177023986474876704327502959258945132119375882089593672155515943892461271578007847662008276283253088259538335757696364427325155049311239157693179653849453443892733625221873010726917169381767727068956094302179461883096853514501333555368140723433053308096717904123266114910673897725115072045706300481641494042883714658584781617005876310987714287428592342661059485726359756680502180584545372165903087149459615846179557409489106336007817271483844605749003787741086386240004913122133898002267643867990949010196226925493786001378084636311248029986100947367699648154189942937958545882137385155212603764055646588605267230663677950891495001381151544394044636849936560407934282239749701694119255233521146905314764957795896280007845187900155634523507500996288852328812968020684575937121926727513513641540828810475704980796771263460982605493958985067794788701630409967277596541459590398222273845988385458600607941523789526755302321911781331463483109030642139748656431297167622511458626917992097997110978326542734156986823075135693541362434454907552620789763894558047634919539302068312280613016560620617512025226312156850699835972912329786927602463527886002700922314655784102723450866017043478085565115473235691283941453869388137228705063235143443725884866037454097021002129620547847975924834647925886702114303379402348085806762940901547228787940576463155405439512004700813698427421275701529676396220554174512990068054027632321244457417640467849863580549418852158244883748883568127631088905855081607375395708964838375095163839625117781680669771068005382273195299363256125262354686694466336796945993898196593593820541756584640830195494277870638161284700817497806759114335133433355659520961370825055875519737609534263921574656982317936670797336504171712702333097870842634009968990347435468430235585693155663509650217380957898320110823635566571141371744607131745368415222261254291456056990401640155370168284184874495528452067410771671110682974563499531095945085717834262414386639487148037616280148519739892963779209204905821322194547360928477844567999990417593425488036455288194459520940538699892032369979744683206280057481133231946093397840270706387482004906817097718950183819786574360916455910420364952990044681705653240749147918584057714898411291842415700803626551507283078855382111337292607701127935406783058104844908527982915523794907791090639000762523792378025890204747915237588230798584333858945868537935496545431973379196327347031699988312995894478951134214711371860144384099342051185001409814503216844035980342582333956271542088953566637371563629956118750376594269897594739014753808745237175906207364245898792344155861572269894294114245190253612635380891087566183252370632379356080904716056945868794603424096487215451129702351979943331629376366689283328763636036436258329370237389102857531593978966546003763232434508208353255314264768884220990692429666943918311024267949622726322911644791168254278817751968672990644856878399826532239665689181057905235551533532329379903383796058456545441138078769980042617194703979910785646963585927685778176646341839535468196728236545724057605727233791625682168149267000616531206360370454551447019988026317661698748236142347026424822071239511791069401909481332301330812011627449755826824472245028743572169063505227143001650175429957543748450980999286781946683699655939417923790695876264143650781503951113341425122075028089562081594551234317183200147874253787120535737865280827288885500623265632910473216910548909163525032988339079642269795175825221454045925904665832116868961573500051247019038188389657668305406979840139310106977214069380778869679428559075448718615327971161197730020085846560614525678858274417259625119768729534107755711478733658054261493809753055131435129471274550146759821412226598408781249786356301154628106223189941501617956233915908120722911305598630653613067724471844483834372499669675833847060846523197335740483417427823276981524140851463781212960866033040741473090745732241525128985243673643864299577346693272398610063469162838235670773689646617830727989694867525535868955115443932624119112036892602995142865433053967672542741994534159334188407994954535890317979438314922050942938950292637399148059814549835195669701127455447338361972827841211244164472720722982626060895030411392822992448296942728715602423153330698321316597851871005624503088304609084683303054570085577217947412077485911548486143222382127608480267479029477947598877795786494130894267028802436346784819083757185055517886722194806976845150257885395178232804347048905968430318146724199532091527913800487549548161608210804216421947193864244210025739232211225043356615917268830348503053093442084251570738425672333160033396596323867685060919879741671381834147981408161942994481760947803246263491347590914912028290369970457567013190334984475094927398262427309753219849250813000443273493453501617901485497888190992258996668697373589960447739211887497429519472666756073694305264460176650087827563385945968577292492524380909232519014346738567343962436725914150041551419791828553869140791497934839862576937521208533082426262053537776085358299582568063690559673499872071080687883337678275481104342128776130541395582196980038878709472970797409893363830606945220715386899881427802099065643747195598073608206483342488485967040745696880834723955641491752184369674497383402108545529795246933976940036131259150207492356797567136092209529478348431906089739952551837621404495204974893566643060234835358926275311343989407545989497259376007631225298742259327104687284590476996816315754470572431030549833864820189302116075389562257692153039456724212457406812069572568998804183976537501861167269905314071325540117680699095332705565104568722483672669475821125718299055737790457658358261057973117299129006504797314844341386008613375141998363829413620792361916101148396294204537997172586906228920146721774988046841555024899464077662175869981005337309494330093172259532028431520921783408289381122460391819003844694198891075910810705768927444516993059110634012823826663597937599959845204899195056393963961239481158093767901876659564746005714262346507652528700481909436196523768588104003999390681881663436047010978513519735469461738597081461565520652354621800774133323954207295889430950615515519380788520825326109938064580497380198461323237910946692442308660596790591617599673622927655641602455607173101211062959310048490631188927555584202796682119481791523214072602285103901834421486148986923527948352933335824900312282688123333107408924928289787896839972309616529078416632131522120989230671746651265892984224034717969673400895945472428775838414220758098577962214366674023028494467127759145184028106031979058386840969698839871162118695294451770810212609245791386251798880084438158248197427928361768591638188245575256755490870694910479965514303635621021404383191643151822405835227693368357806912467785315568980780606392639842327455673818327544781079404081318448444510582578608962497947661956467952812755915828215775146782019154381977533056287840298326732439218239074616840445152693583428289419734936795677295305346070345249478324549985520132124930506002346655102700956329576862232666838170612767068240346731501793599998397285543620283887707240173198203078938314734688290976939380595217206140898701746143444089215810272258058228867210497609665892015691920225893040036913936010489866591702969418212915723388018140003885273797040236322777824664456280360334543969927202656629565051705783824876019227256648251354311599455586655288708492885629848030067956077914429987875496447989470087044895311170092665118486990263799426354913283555315438834055199466210923960110453114924905495460534304084719849456348554864176415742819032577744487091254980872406299899956632363412322126550170719922052967023509044388095225232459642726275967025896755885440354598001399126760082384188949820847269328184450064169144881137417972294454327065367991078848646118655632171340044580271041575808221771189376869953449169474674715224289877206064734370603462714087744257183002817344411738813261780696643909787195448204470171968111848065721412086685443295493946277349816339858459243428918962202655306578120496815723844453136800311718404531807798054231485331522113395656588716017669805153398311066701535956342914321598306615107328889072664369441186132909793122266356008693578682963612391979087246982743750956034824300401108545384855152026941821722655234123474521783739526354610142025940169283515057851219584525153932910517646747794205336721366554201524255901218452450891278965893791265311586094452152855465956997421450759209357414090079728200929264484208250590527898373111866146339319994984460868198170104432434088611408190142526485152701869048736428410147707743579190760054322603029076245807769757401490396567853040185355574987382352428735718162626746144678958455975552240035940921553554195432512686588115095982048546090045911831446821116841229864515431923202401669418927630724230900359083812375617386373106666911119606279880735429222516624828754368663375115925771097314516685610090542050674132428349075337000609295703837287114865879383270394247056622770596659689151133381518578996515715006792284138090309472135697699574575139053831258927255918052185293536845872701306938315598636865142876018225035776802363453887601506152825647096194947236092151360473966996465663198103918084180800412718685096684163095493478621782935299928088246953080544643955125167604142117329935443749317981553925644427153891862203918528482270002555286103521113915677763308288207915550360755318587510166112400449373670426406224731510608967504204414279455682691365260603512666634593283149109476145745803748803465165439172640065253391103209175476765392464401942969080816933557229692264111795586054186004462836501346749788742366121525397846772552275312808086582015866044737045803054646583042149767729930080207276892047028008343901936893209968134388835821597260179883645960687984113401219269889608593486125365834899025910154424363418375850959133654903977802286234014010185311104631697423984179810848545732179709019652788127404796722724137779294313754273404461566202275498487425014765425810606375632710934749979141373111313275095079021345475003869936654197444693072140750986194002831685592075757794483759653550981562754597776445663402045791958617993147789897763617800797701099662848708104594114597467672121495078107801760627452518109575364174689466148238309587381355989690386009038136940439836100160873289349926031275680075246835699076376936008420204916821510525380250154196062384290104187917902344765699539130263054127518754841459877500755688899719053617558213701296368179264475922913721750757374712645794494591292788191773223566842517249216264036975421311646712229960217319542130830505591350595017532777836761671824148509245269157508888964147555660399675388053201778241695486402837522163941023144303597242785723830023783752258359900721626729489239287919053145418814946865666769116173474306096569562907110862960104317916317585164609943379877352872868812903649329017897468422056066556336475477281620192651196289367349901837144322536480598369145752114880050903249316569029466184838078596327112317314796823671832958642359745312631908428815940999998133437031974011674672377107334367390640076517081527880957714686578135651396123838001901760893689429034998844954642765916591368773883899418765131695105999432177490628809385974984120562942250289262301191396046677636917250284642334215583945617614397403926047234605474992923476888813687011306466368418222007187872521061335250607613037317739779284612589655340023869199217473890451589669146329839482023690423352426739304068198455831861174146791792822582059964397232579944573512304922778978560771123585438540736376754472428043759804193558738525830685665832757185727101597145482821853320596103114022833744031096392248899317137565794034579319418622753163826084805037663003805298646002042515080716203816090003890616254818529476722023987258077861086163881957277088924250031063487499615852662488242244315339203558938221292294010167297922722602560657087063882106253283216240599518564651319874850193892724929322485370258379381371899041782282400113502984599460279835861325964870411985529284399351856339987942342302315138221959375741746774666332279511275656833697041246660893862662261988384633298832444709305182992519352542883485728810191091459349889931325843875623114349400964976263276297901974362149261485622478310881408695109455744157960104972624793614965599563910250574805942711118831611390048632954276688497808408104067828840347916200712898931907214609240106929846472373850087788840452643238034151143218153704065270339032682776138963492220394175223729108881125432744180552331272789242456330183937336381112115433923844922061400438027291078487618419343234978236988354542874375724841238446145602655501671986004025652449608417512733996113426797549045541887858405625624253458148416072330699750915084819160182845408057520511050214161763713060337980622792321099800627959410366105498841670745896362279851780278220757227967816549018056991137050770182737274260679058929693945261869993237889388629071184521774415695648698806172586013219857771440206553533277343744833012187906219541224024611020958934241127533296615161264262120251729777087760352912478073550230896504403642759038162979043834040384370087812958025536807867249960049950547135950273811560236995170244031698314625357062068657618052948839836928508714778051595733811929282971145490974834269490687542107846542668621042872576862433217064868043491837614243190945600611611049709891918747162770812019063965139122468859001408928474877616138688083256658149935613358542181178499127047839737142252581647698958190892858856333003831507403804482745745454851889396283754770296641712349368882078764994971253649258982633288619967674993974136237152338819900363732087860736260767468119818687908156418993268558932970432669880968986886659717102515719522068536258692712588162519656515380331402069921114586090442025202644498981458455442520957647076881352512002509895518526642848526673264180789957008189303118872195671031131678479571461331761673654893950240748236250764788331154392068611202407339337490582337019016486481568444151311109991762602255897658362334460647603546006934938239196061665318637752118145450257188320261133147343580604139467408340089103404330688993934282190210700252177799394996248801368317371585355674471458488736709073427745599085619963172629879221935669345683428517369787325047603861160640762583332619705843220453116296599715137084413784282749405177897489962187517983633617363439097040345429714392437443497683443185556600029525926084303888219292111769440879048916161198430145730620052132525753587739201302034737842818684956870549408186321227911947229999098716655169707887332798004062227991185978372536925743424932592999626080169858884990739400311134305846029740296892137098813660844918883306651155878213112481158080256522079195005937319428126362002026055185139494915568443398973825166115846438196741595669520941775971715434042104058797053490872513501488711233151559295624163242464802772498188060540982165461759366916177516549249307164375038327245185607959364150395058153381716725264230732494888773469765432987357833987154321223407188263626611838027997275805605967999542612386123616057411122276531605985049616826378047523326909675785214300718665815777214108470614875693389358498904718601982968945817984309103535555436700284695328473092982495622781941864002265665806245291631981006866454474862782779752097817641497360097135263392381061149571786549603333192136029360352298935142768340388405783682642069015795417249562176891994158355597313955882744145962075503308381015894240458127286583053678125099636055245970539452092250468141353690630907024794303842290820008872432667224905721744946055250619838129081421650443101081911255386804868358665057599000523999561669544356749336972443394175075593389599654465748758411081629372616169775943895138731942458164612189024691680614503070849624972478887809759903076819184619416700949658808574566809907514828628039273102811494141642857870754717569754293297059447324708989913428952510874241566830922148807068598108026750030714411560798575661678906352206221205451836970446933923421660566247765182007856890846291808603413421747913940352815848176821193217938292017382729171848915097747605451869644766056756949826666304781534522885244751351986566280477060408463484655460267864180822183708327038795533182961144974301380037499643930111784400186689539938883747057188660402709607033211895596548861585368213149206818617257290111840387434241879230173530310137935787319602386588272024391932263865882956647809709305385707064209510146051423972789350679720498782340401609248573449495696169889324692670101581127406161849711420198144512269624712830185318529300629566465890458458214097022652122868606146900568713047649462194133447872841982048998628976860963313741746292880063459765444378752258513380804871257562095643112823282566524473297142701640012399741739757147365118996894494286605995426506537112535492311682561405400782422252457727363914791300408792655109659847011018321578529601874118490446078746121477198337358178349173658175109615504436763443327214002585649831470159948941591084377751977504592367783232996035553865003416028323613865748166144133700469726819682093770538229344789887481831483207239190061297380029415618651514384678619171776834669672668333059531063791372932210085415609704402089022921164026568583403903862656610176297455311804219577365437738950310878174577667471629660975392848582622416940933210307096125626822746218636938219592863423211197847836765137061478758588535013782568747179948825090597561880150563951081671470422075149205413096996254904121353625295636201125631308973556426000269571323811616056516536946276893332759323288231979971780818932735329253083993912497534713875792348043302762066883334274433391198350308196484794519103027957044022617157083090042574310489504341218732681314851368993092974987722974486278097448425031961075842220536363525595643446166344790605573371295071559517379352487736194221639058979181367728825370604272636533839832727275033737022463424416171620494343011522003926221370965252000544770599934519186379719067115585219031355177652302349912182260453471047478878610774808219496206809985482575704565473280043564195550770552465779274977999519834653775128986588559144643621120626438092698918312758005963529832205691648273881031958410857695555494344204981433586588949356165669476776998582065483321912519142586952769637288819801780127067861724009011066620204225220595072888104528847433233198214496674334966067374084019509700135458718623315905932246762695078878664316865426814879753951204067967020194258356744341768535891499885536710021482383382362235096362373303046147662310253208381593438211807458885227699818878175673552631772245543261392704625387625688949764686160001741068754018304379253473793481526913585308184024566130305394471688356183728524769816236073580166586162144759379064832809278226358468321566716952836675739652887139847524045382293087786326158822934557566501452091710684017227063463514906472271201621592339455799855568581304454662683369143759534217907113258188901001350837046784647888670601997581468417428669963342147349197134462234726977673284986487892692764742917244565863618808284223749806002602940889175147797599077394337025820620462637863210698146332912310668708775934072578467833601929714242365897257914872108856060462492161292038722301138809172876795610939695432434454908190459541712451697743359190702151835947145163052755420555588682962788450800839205224327746730078203652305199865190469847758178160732054389016719208312754761167294998912847363770717335032482415838878286443365078387982118036859582713133657766353493808876569465106309019249604791858062419150990265885375046673892702166553489354019294467760805788210504458376282340906764639829953812227970706660974600928017492502400043025264023221788625067976586044004940043362625844501502340937850378696351632495309565675527039171614672219396804524822225116927459511183113250474508583769640173854027938238935232330596705898792477772799399575141201269114920047987153570380977870594087892947448368130285327430010061710338609118869660418452537418858049419456694386497742687993009960821791483617749065348317166806552256366998979105489544322672146939619041533007587815698561156444108309530095675431190086825578008684421804910587334477131816036732636552219797896527018883267240360235289968113191966474737553957186855433560796204203431328225869294950623131502678682573797066679549023297484204703648132701800491319206379979474248066894317217599860826501212260498863054902647474647402557773315365757800556039263108396601793675585614641699417812292820589738425927922342384593202640368694249353363933513674695856506677358166561440226523780615815106639658137305648253000682029931997306981849098876208021787876288228003656224534703039940679397205849842270432166922266780980317342342168720674525154932817611476399772979986967913252119636094469828093383175308026590464688261947436181618465673265142430265627842578445463701366187469614308722476777440992603532834699022036167330857328794187900250125363750031554829330319747102162784276349819807991130341389341213671751230476131231564653528175561707504118922919803362709267090204228561208154690723976404989489631290591362459014180167769438217378459027177935832524147049188033340042505590328828620568656304141948745610604407519364536031480416837527331595551124733835684704450481850517452623389666962199754914468287697137825740717890740737863451976202517620454546673727382830228671092082854126479525880611159401766572552823413849009088540313351491654676300952067522771312498852861704805593107966322702719906342030880007040994710830222676324561783439495410254785563598484552741023708134032630603275749236196398783962214046741815849898398341087574151623347536112568321417627291477019608319188232866376403933538504284966836136850771342685512959839679304167731935847594991435545367945528241660801907688443061280327202216456826547485971982574677876823168360941531169701970395651201491228206117737822339624226682679457512563096525949264043192291985754417055348671280854158423614647850923981084770312867147799451160792952181494050446323131552768147880016410060425195082823267248318040067199192161185052971465003400471694327788758767574863132859072664444907164731999867940471401077745979743541921600584935036536787623577499042576748829497069290071008010940294992157783961505450135605716736104306169824323800181563090384317043600531613986202683079746125598194162251721725657927297845398622810387370942512502431305874877284333493087261622256335482577097950759343902799418152139262252532583654511284985879714743750769788705807224240483766655758979782161665841932203747647301853443949289504075784787371585617373453000216065029266620227953693688716113764661225783607239979969368374102655881882989461729538479231879592025538100912963668096922550079865591990135790955240410559643951536401005575210921783450067730314220506841267313271210364928397540685351414208199776779786811535015680862179015583364382054382251822202105136873476800890958740145882422065535118391732613994526417028815424445541548107115972446114595991542978553737575718769367514873481157859127770734569389341496994737211455474952808789033407943184750638332507551966192613018913731715236365303222956767497534399279866321180126335204374713568102839443425530900737875687360462540340787737736748346536481279690134602901010044885739849051733811305479666968077657822322248126275891370099738007876723128406096241618875971393578898968835813796542649660677679342007184491720916399351423669712728781993117441564516949564987411950343623794704418060255386267971179652349776628859975266832075122884454547931228539832055774568537094675313709990738195833546459076043833997077577546980864920988515985001647358426624191838265796371155233666479945224224704979525513838410868211151127788090380724993980335612565814215609591513070963717855222766793914383523307995058145308054419524410503233299569464183949301587169512647767617072658617601504422546804254116967718557668267808862926337301691159080477011200986802286986113051736520631971574909359477814725682407666510873619687173177441052664405528190298354599258859653291595974944662448219521349147786433684562483636010914922745957335232700991105080536952987255289215992381958855647754060903905160790065756049726608480812179130894142954178772768631471255236882090793007959743188125812813904983654190937955826833557026856437565433374556912726376436677555737509804987606272634255825359320809834067099802768851978582049101998740071599870202348131849612787852485479814346873324022814945861480159499006711946227375282775250906164292838824234521112214080542386427051784551729801488205655762138965419833139735782799706973449308213159346926004018990370178621917743307145084313659553321092587906861195207351111977386255601864268100016528250512366549890450015320124442009237629916868737853096930728876242330835840120443265166703532265706652523000485506774857565130675891848713234841707227073657219260859776901896859751934656278284372375663775014892554517750753543484673628800500092944062151214515696657348818908912037895122468629985818766010871947851947689474462120524147365714424561157038599916394946642520913271019583691023466292357640587578938231378803657594358955853578169913194779160346595210854915315112411034325436635920893555774346160751125349905805841693595324763073495237534070905113542146423262639086262268488610246411420304536047825809690232039458943401395019719470958749842507158925589377894797597980999497708596122117511855344357137554162010902425717379566774546666539652218067708870152543459803426193355764429075366961723415686161346951387605229560209509709644867876858929123377193566798335079060541812558831271733945673593959252988759309962402814742018523231792999969757343623971105105766441912502480824932052996543267412424053928914772941316314250067626153353166851551844308528877552826362062765795567320554175705874068857472175537811974181785348908547510532522043115181841385161860100689893778272791006324227673722845628640176491323055345292153692055576431288700124036172502601644907116294727015165201650668790259009402101040064629035511967467607299706371903341584459037789151108319392706922797039677223008824117307053944735657461212001155718433471260489524930286502479503570167690143425481766614337016295145197249111067260427200602291720906835249853725591701233699606317825604912662403557380639506623442368197159590617596007137566274226591280243153725233337459281766824901653960502850978615167365590816597821838895888822246308236247200358762861245604042466283869466934258066878475409562141350827138282652293132476955097596178080497721027367285166881681759310190277437701056911634862610939445891431339263318608847737633833715639696145862788312092692017520782569609208291632790633902404440231070890376785823831346768765858686267978180682803441540068743713258379483533022998463114257314422373110801793644920898309736547722810623145910111946610374737277723549199113252063686588138708994633061763566804846723521206299669925421557862501397760701606297238575471017400185008582561309080320703866225050977825122457482201604238509061248837812425835656308708571856717087430531051291116012563799032169810218066879060108837365638187940069141097590982277263482601868831809144650835952965117038585022481872593934622858550183145750132960778613795538189823672915873525904697273487027822963820791145026606188724964512139754249617537829310622658447709915651613756306699595632467964436492775605221428736871780586052185614091212439078589485557174880954090107813071871792367510820481335502196475894163832671991186071866674206077748353026533479926849683577616179965032662616606489427995710982584800912230267687079237555108048483789470909716451793933843490922290493003513890492060704035710335782295639136019984590377764850144190570290791854132775727493098744977872597713891220198509024192983214883800911564581394292384438878898147670955957634286764901359611601508545804340712720106632214205614005678213688053724325953399435007517083347927677007192794389275312470358061925815615748045565701631748177327464498228799058983511486317402993708244981291511408421939124159632350075033045267484679338443811888983030487682383902602967897327642790425343435191669009173462764517651386369743811420756943043476034010685805594725368985448265614270216165602441439526681769366494700528819682880176783967533226560990424167561188000314922948097450322857074183238341969234842187858477279550875377888973230353609321921473011382588112111605818432049628110415650302450169423568161519638627158599677255855884433724609863227999807276883488528619421633926832127190871666628141810464495669018752823970152646549519850531868849366138717996396044192121776645423198172628802910338798504151378378873409219717281431785780754544660339833719248551085648522092109937137470380067274401790387526305465132115810441108514366024410742229728956747955541909233804926192058887488603921086377104634496348366337482103921407431972053944424310776705048041032718469186529781960411764139576942816654751199408868628242126599031659532477034972466562212790830089276672861366802881001525797328235738734080239550261601661599938299898951395072790502417638850685586475009565029919156455311157936018377088125637492457957996007860974369843229118401978453480893563455724474792451659218116306915197977759822690780227366880964367352136114788037443180412048153296726557270886144427812510226312897664143796457403305562563577628949371953997881416985388236052780568424214103599215612348412102880618621514946834303905074571957666392365591315104888382200444089753072524378428234188163187568570076279398559439261620908354355265510717183448573127038047379078744567290674482292283593839974017033129366032247851965079310511881607373502879452891153576765436409660784568190732733709580010696107143921185484535361751735504300344972983901894741385872339802860953207009664732240897983618501509253892823084432787718176301437129519562086512994086992763057916702022509412401748624939234260544509341298917736036149531881742082026620953593119849793047596049221642497054743572729323936098802402596720684292915579788120337559450000465826241120498559918909782228594677011619226302058941059827960027446520147716738556653475812641060228873472540526526297605494554184832375256488604823207487254092529511579088345649049175436589233370765308513847885608559694931231191722710794165757363546318366247531965937885227355722711858604375248122122742818852968150512860570289507993656009422423304182740643284936400756584037444196408992190482548502719567948625465868468697825594312341535004692255756560940520815302032018455474702429426968424626695022284796465717991080162614837547344315937274810041982349694678209624209666781413841970541885332005677489073940674550219268929663890583565429653442494465805443886503055375131235629522159920027517769264414251848038054015849045242507035977752104337021451036674831649875697033378177241604337989831127612954742825654912581092070273699448668060337391930169553951787003252785966283493852519167233234086868374170011124559638820263471552284360544970452049646409459824703488624856613451407114674628475261456556470440729676359046211218576117004020409211588145713741386544716692661342812576855797825994973016487305654124350514131628237709453898315628356924157418281355748483748552555359623772316584784675959565658925243812032951669017965939736036549847119011791305541649364037065031085961375468487158256106063521707803656667967039991498586527078403325376626362519548903109883751617033293951846071481916309379785782854399842204364091253833221136085132675829368529945700585251754558484419931563061661354355623118019461057930428028863626104957651558442647500707524534991610380587011219545358867190704596904288707717279012081471078876687023066727506120536661729110734355840898000660752830143154549897484892108326661598562206520364612528809410546182855224345823642420054071668167713678248707015176745966030432283685275626241192892001078695559993107220373293815148979163908562537878704055443474072251289296228818573679262824842463569136268475606673932826910791342409791298171300041029875841409828352109509793867269491516537986508041855743267911038474025102124769825612449223136118648427463037178617175573994608689740112118894743357900002778239993847139975773030747011029349053689770323353139535582988814425863327431598488872484759891112134839135487361649120943257703302798344809125631330701001899507354213639688307743312243192612366431233592201198157882282240441955256271519851481559956886857414321996836690900550516373300517293395308366871356180459169811773872197769263534037492916017922745380561031687618580873687784741492877172933133574231540383575667430160396218612627531376938726326754088292949926897834597113242732314948909545475206977874309216149754736746841090510057082160874186183973189289895753421205867078048719251768985528834666378746408726123881431650149364172884173099722512881744799420578524018830235215963502190865550396461249798217865519546294326620668575150368237720521393370095608157642694425702483442205470789983512255238998017070479334712858117194632228442039437387792800449214969297057230787050972210662142506947423443250642418367314453189674048390205886145864200993187654787278587129225914164223083671207335945960719227354809649400323600524969780044470292871761139325315114147862589794878101565829867179286429209676066097655594452283942663564440138511728936987387379281133895177200308317353569062478231686188727184903145573930756284297566506548852593054598887364990589816735455231605963860170222122089509317878626054150574291197352447535399078118290870474040789038598340581762580133742502155306154483051148492602233178295100280645024323038004994590219797358102628238900419590660293212551904768115502378735204167782416701335938630619400909478223581521474922163265941372294801378675843138613338526475366673823072048526072715162007748442291324796426319856578670369388378630591418361384168657278597605634159416967052365125673428849276760781164182344472262239659125985318745406647494659164534997093757382903334716469092619984760533850240814661041879440808974455828368522139477203322615322675559316328678575587134774688355991890131664623467491321272899029986940878400702446233557766598788369836558478043109735510552105363520980194067365787635882215716191627531815539441542227527573427868140361677220938311315164574417724729908891456212461038031493026792923500624340224939928193757864913622287613278707249832518206594065091952731076510707030550159541638178976962946724486480244501002765053672547417978645657489373260743152089465884693546243038182680460721716658644900361679574641323983749006224496799502717247945568974450522540002852162374639992154817560925234422860173122786573522524498204986197515505468982813032035689173186621158603843647929257925568935763880996528202117865292316724569605357516360065029596060375853300570417537175819109057859484451928317539077906802470138528056815085653165429809962436147648480875508318041822964971152767906849423383337734234784891874108064258637872930319095038048066224234800136532984231420172145929703188503057705335405953759238538498049897716691120720776480293346414053337290787309919166018249197768725330508997606735675934852821211271318758169417592139769704840665896855378988657194724550715403537305946467024165627803251632796418925245978135375679256778023228605029001721602906318152226020310382269165945984411597858590791913640317453894104378142979090560859313305061572602834356575681759281318827253938067414558274300327147958735796605834522867273725902658673472413299232173499802616366311556088061426065480178761631668884802410775293684748139592122328104939252132805872231806939766627773618638377523595980231201820942280900251408873052315631484179328679025277740548173235150965819962133102046493999330552315703315834224465707428787892637997461854633356162692684772698163616943700465603158221278202924664395990202513894103674962292533291527123774226180856150751292278859580920614286307643965095801220532918879514286786945209087259394903797476418171015021890999134758716788157873992941737080757983336169651100381204395232547392847254229853163948902536305948425319966227414492572288015163571696697397737362718152066265613845299027375024863499482073673147759100756280038013602847451347326605546784899651176104225472828965394963986376584625438787220409569654309972851960086752920815284980112739237767138099070022369292233333610429315644621715112867625729366712478687528256239587285698573718701493259220135514599856452071040789315516340353167883071915501721265422282476135567298232833971903483294474327327910910181090573641973878813139833070377700921655838860855040204468684435442495420116484206369779363479501649926077890828044279930428210008006518232086586535491554353418715785300588536755288434127180597880561701155967293727929686143191727416851798927533200949367820121901723545569695677436799633740355527094716068800649188650770356421849131037107076116144349662846986737757488166227219501990787453352702821443309200431013913713136239019651675421977150754088378584810175744841573410100330146486625053769120102283715887652673733338359662377642310125928871133642198234242805851446752459821427859471071189147118581950144180819418549159886427751248567194177644289201088037076082709471954966058016803696215615352373565804057075774858180122032210394669465782753917615641131214361646419245572930986836810786175004131799792869110358758043023488022657617890092003560642202509942167090322174942229288772128863908998784544781328952421080555585770832133246486467362934531689666455574090125317757845155898327499392037523318925588217668035405344144586533343166904818430325803511051426886330034586797569281510576979865560347613631705281353363380680785049771905154727141281705828708167870988940883432970092938805035771720136196340904949128457115094550733901476737644647249104543361929636271755772145191672413378519624518829425895150035139231252139384885476700917131481012595329287401368139742659238810970364099047962094478515563822238424988059551952423784377026991513128766589516820236164078037436801350387276073075720302690069789130698450653103213370514659063850769060766141146087872931563998225878850276806551902735302499302999842342178480854265825257679306695349325058404199866120005601826960122595279242107034532697316331052232798332165454563618983821100396222250624658585421025366021917147873988310501493909563249516051320365249704262289667422110502505173366420506898225917985419683617914889269099330696132563220049315477662143510243942521404823787732392743049338944710636773795716819768033060850462001346605942262226767790298721450238036314647568350971298942205559649482472113362560974089419497582200437088093044942198451452878704483564541546401253985687924866744681170263729194160648907531789319612622965468699660805827910365302543141244239177789624074789562921096779246386144642911622254685503086093919029501503174621403909888502117332588115066721641564106100121504869854493633176669109510085953104453839340413848719346759082539637136320496240837865297148471803708971321214810733650826771431220573597577575836384744170275093934395681688715519849931499713850206028202583487828209207748651633240801562529524258149390876179505530942479223658179274794901062394954493935554758139561307961994957416310555085916334683592136911967130004434986017607275812946931526947289400069093728652265267039142364803211590315468618311352315079584407137543277219894554113309276106786035726504075924010220784891535128521246678850345347696532657587068003125456121089402178576103928700841963537048544962622404333796785031145890758513258575949066924329784907809973889003259330613029188263678284074222676482985505571483741012284046845494226646635762868635276637227823065252460825085003627143226478026251525881175991836088811493731249137413500556589565668608984195013278176803844417605364420197577659376553180924585258439824527019493817894086717892091638367466089310648405743499734193839713460132782192392223729257351695049174941219479438038803425073553589400759865880919786024637931920276297251322648089237389677294370472231028730083130383425023921295204611459764298080347858016477243717971353618726380838147596237608213040867303760244136208271368730306084206035100794951993386111240066536800466431421098390839496139046478530005290190430167067431204994458328291933188796879510099016033219039589471816853021641580333997241401249023417784946312195554151385116567425608318359238643762820957499485236317723855352522045100171449858503573751282629775800782615704057802920554733009185162103165682992008394666963663476376711574358947359286979620116767640794006117359639913290726134298713552889360188671753526406746205187160890406838469624542257718508141941794475559261574769022213398733720972240955959204850666789901597799355808933706322420400738105534336015519209978544997745218618525032467894153091470480686412529938060810017102305351034206820406471300152641278202839735182209049785540787332993065068465790122483816495310720400406670987958807306493556012663838780492045781894636150269729153415059533792774194376771480688147292172112349495088186600691591254452028241631935184405069977450909240472024574862017234159469147865723515637538538708930356106632003410333792878862923096469369092738107718297705057937284055244383561942074704994014357681474378740339223126674927974277059329094897757431973280937916666080523455416367717670622538004231753785627085292413229486203453503683197279824305487918082066061736445692110707193484631781416457207217918538819162119523430234689185474463436798493791885637805815484094694903999040667886413236342665219568795385522902079988618521731767009119943747238922661903089801149019767044491396085490645101924584526026664253903665208578692306234843521928730653104873350266932978803575409818565069977128668176568126021622698233057512477459651933957144746287662758638347166798699652050013348649378641463932955815511540782782261808352794053733712162511931444729135328776434849323816919452798267165596862546987449084969929043057541372180029574639334090702146356105562444641048115831800461381934938457422978585624517624814611108379191022877799548420576347671709121619020390400546403089743909306131823386693319854716555199299696384946345978651094128855129888327279922653443788454619316774687705529713927111414750370548772963394801199074352202497670178424924794191285067062626541481276392743538276390869744860497013430419971116923642219435135610475691669974462988347350786927612230188737558872398193992052141207315131827578419323745684926407558984415157680584673974316674767127418066839054384852635484332282134634820586975470380412572478410730611436727300440886247188456288901649229137691512514520231748717249420397093682681559691343407436357001234482628964464316901607865429405371161303514196549503267683212266761975281908003877570292201684976846191378949945779156371283942029067830273506791332533491802976334593599013628159513734569725707655605613714702221134836405748065567815746990260914537474250162011214014069225385899589973942582749314300236843438912437160025229296612495814382968520370579373543701254899485548619653755866995262735451501530486926976790051574322214493099805204407265678683560756649953801805078436600970433634781035918051702110760229758516580679034849714452561386655516946833802712529889880124113272046247074869937158594998056843629580959085472957969936196596525648899678758507619562472581246497018192241131850381169528353295871722938539579262360177584665678200491109946399099279075595142353785193740851872074569862727858785119367033378696317266332901986434623292778479363850978668609745236177269564655202890037052700889406457400412506432743085745381254547137387733174061002017737552304052817308481924137662422997673320580612618625577509855735341302140514713037780906669488941371733097440309220655136468148958304086704055965945099427723336068560590727283065595662497363399460008854473101677541818641525404869527252942443225184013067042126100222802888079923109300939673218583455977345443534129824624785039229811103124363573922599055367166761242595997781123371436896761927745008957152414020380872457038103675256285247179446646237691941353088479839065110514015181175708994300502865181577761454816436297143656519315830353176351514026666894207207236881241098949770849265615680254029457414671866314909653892263374835819652940160583020973817118872192378647695836377561047460067835001221739894746283241293523103345138931447300603446927801175555501775340608775919166466327832335765894052259155799113006658271181151838897717895133923043281368419250066773044801286984647281769386202855655422063457615570902984195775123069284564163335955332993486993957609495512940481328157141369266174694169506709952556193129850359754241134922828805415696577245096563673977329415698338275814816875052818729947571921417411363603885705765051351381393791948691879932994188996044268088451385435052661475449882000262672400342882771973156383962078928837626715973620281403131624634897042642444368047851380987691602153944581454556875575921673199659245031452158134631556169430159893311670296443566434631182795565323739862644989846190069601897824966406272312808839070023918659665516802205534731403363754861884738352396143243967005163389230125532052682699290127389127987276077234517864723292847039555106175998264721970501882416528940519485413340351581645837117292387158025292165522261553010028535308462120649009083625982133053396865686821221935438517288892142217230316567078779911162030093012240769066877563692288870628991600864798267020910134937118793092682450941089708554874575969237309595969799462957398007673808227554562762365174820258918433704054275656198559360129539672924731863213475448387760661267382713642961829805171789508142199768768031436513862368688086817421455580447097283718283317322321615166562135064984790226709387287449810568289563770331477668400480500675843722468036092800111133132291347424109017976472165112422148864835725794147942716468597674604275251039057644141270529037881080016346745272939832771957631958826411546187055059091533429996089958019675165244560097833076043679809675151808830218846495292369844337688555030182240625743568122878119047480054909538595385958995674643531877715358095535584944059957511503401443184845477758521130736270570414657511372973024694134624054537151848091782995286478701599078219707639275942763219452695408851615054116642158921013304299753748561769623593441189816312258194764348103590272976530680361819656104584504302600641519562184330379808073032644762422923550522744583061305166509490514969534859941924975726945908717821849130591886646091771296939273446174916803917298052125669841404876670541444624440004901221441517274346135795150823674985855795231362024471660210408329677187497595906293775838608713672440253045053856658890625222374516366110004381091784457414656347981748799453777930457499452661858743755551642841874257637788311079563181722599547864283612975440187635117164576825936453070884549926377119169535049427103893609809663415811480295944783203318927727177796523508080110644107469378479931440415543236427304654588054025947959833634752991286302814709018958327807161827807959601775975356169316253593730130664962157774462163293961287257040675122297926443541302315623618933209570372981944170775786603392409470437798858377562298338455075837311609463433338699382538794348080343179501275926174287908340467804922307705074111578647619370541723887703243451680470010491297876635215784104166845683533059303038397684597050762623753783070628808278452201723740355361252014394283745468374320393414847348817220228516881970496866037444720642386699967688230862505060700298559668269509354858883769652141305561395486689107821387101228777626165942648719919099417684188792301779977925255902472272974184448", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}, {"name": "BTWSXOR", "objective": "Chef has been given an array. He wants to know the number of pair with the given XOR and SUM values", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each test case, Line 1 contains an integer, N denoting the length of the array", "Next line contains N space separated integers denoting the elements of the array", "Next line contains two space separated integer denoting the required XOR and SUM values"], "outputFormat": ["For each test case, output the number of subarrays with the given XOR and SUM values"], "constraints": null, "round": 2, "sampleTestInput": ["4\n4 5 2 4\n7 7", "5\n5 34 23 5 1\n5 4"], "sampleTestOutput": ["1", "0"], "explanation": ["Subarray [5,2] has a XOR of 7 and SUM of 7", "No such subarray exists"], "testCases": [{"input": "1\n1000\n79 29 50 70 30 67 56 13 46 100 64 26 20 6 20 71 95 12 32 99 53 3 46 56 50 99 74 19 62 52 59 83 41 26 97 83 97 55 51 41 5 17 62 97 57 34 11 55 82 94 62 13 34 99 87 82 53 59 43 55 24 19 56 39 84 29 40 81 62 26 77 84 12 26 74 96 81 76 79 42 7 9 50 8 14 53 34 87 66 37 19 32 39 4 31 65 94 23 51 55 92 30 90 36 45 70 79 76 94 41 13 87 70 38 84 94 27 71 88 94 80 82 88 73 96 99 80 32 33 81 69 21 62 70 29 83 99 95 43 65 35 27 71 83 70 51 12 54 75 64 8 76 88 96 92 5 43 67 9 36 25 26 94 97 14 90 89 73 69 13 13 23 22 52 71 49 62 95 51 61 49 21 47 88 65 43 99 60 66 26 83 83 6 8 50 28 79 80 43 94 67 63 78 65 74 35 82 12 27 30 32 9 24 96 43 99 47 40 72 98 20 74 75 37 62 92 56 4 35 48 7 48 49 81 41 70 15 32 17 39 31 31 98 17 54 57 50 79 6 90 92 26 26 18 99 72 89 59 79 31 63 8 11 98 79 19 31 23 27 62 86 11 52 98 13 5 14 35 58 16 96 100 58 78 19 18 6 81 26 96 35 40 3 59 78 75 85 28 16 27 22 19 44 45 28 75 42 6 27 81 55 70 8 73 72 81 24 38 15 82 100 66 52 83 2 22 1 60 73 89 89 4 65 4 58 31 49 60 58 60 93 12 95 18 41 41 11 36 91 31 19 42 44 99 59 75 41 64 8 61 25 14 79 69 59 100 48 5 30 89 93 81 8 83 33 26 74 37 81 12 13 26 68 14 8 71 87 18 32 67 23 80 6 13 77 94 88 81 83 90 13 69 77 26 82 58 20 9 96 66 98 20 37 93 71 93 100 56 34 24 76 65 90 95 75 8 70 82 7 69 77 47 92 26 51 49 78 93 76 12 44 99 77 86 72 40 57 23 74 42 64 51 13 75 72 58 9 10 26 1 20 74 28 72 14 66 78 38 47 44 77 97 73 8 44 60 45 72 98 70 49 63 7 57 89 46 85 84 83 85 8 97 22 87 10 90 91 80 44 97 95 61 50 54 47 37 84 93 86 50 48 49 87 64 90 57 80 32 70 78 47 100 83 56 87 48 52 87 30 7 54 97 86 54 10 80 15 34 18 28 72 8 49 16 89 78 37 98 33 13 65 73 58 8 76 13 77 53 69 67 75 2 1 77 21 92 42 64 94 93 69 69 56 10 56 41 16 79 97 85 43 63 19 61 51 97 74 51 61 76 49 3 71 83 3 19 46 76 37 21 32 24 96 84 78 99 5 15 45 20 69 12 42 2 90 12 5 60 40 87 17 85 94 38 91 85 69 25 94 86 99 63 64 10 22 97 64 19 6 55 91 87 65 31 8 56 17 89 78 71 44 95 3 33 20 100 37 18 20 29 25 59 61 79 72 65 65 81 10 36 2 24 64 18 53 77 85 53 55 58 80 59 26 21 83 39 65 97 84 98 4 8 96 29 29 47 53 88 39 38 38 41 76 13 35 28 64 24 28 12 26 54 52 72 83 8 40 60 8 95 10 11 5 49 99 98 92 38 77 72 43 24 62 25 27 47 36 11 95 11 87 96 100 82 2 94 7 12 6 48 68 75 22 97 43 3 73 4 73 84 56 85 34 42 49 80 80 20 63 54 10 92 98 93 81 78 78 82 46 10 9 17 73 39 23 35 67 15 97 39 65 30 77 37 19 65 28 25 30 80 87 76 21 97 94 5 45 39 24 30 92 74 15 88 6 78 89 4 25 33 20 6 2 70 41 85 83 95 16 34 55 6 28 54 98 12 6 52 92 24 29 12 20 11 90 83 46 82 37 74 83 53 15 81 49 47 45 42 40 7 59 38 24 86 65 77 8 28 27 4 83 98 91 28 60 22 87 68 3 10 83 38 92 60 54 96 88 44 62 77 75 77 50 55 58 94 10 42 65 76 25 59 51 14 65 23 88 44 31 71 70 87 68 23 65 78 58 42 34 97 98 5 79 37 13 73 50 28 3 49 48 62 61 9 68 53 77 85 7 54 43 53 84 54 95 93 24 35 66 77 30 23 97 13 27 60 45 30 16 27 73 59 19 43 3 94 70 89 49 94 39 66 74 29 17 40 35 20 60 99 27 78 36 81 12 6 95 10 3 10 15 58 32 12 68 65 8 3 54 90\n22 27", "expectedOutput": "0", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10000\n54 54 16 65 20 10 80 13 82 14 78 83 75 8 31 97 56 10 29 65 100 42 7 87 73 68 68 72 43 45 44 21 27 53 100 91 60 13 70 69 70 17 38 31 24 45 76 84 21 92 48 73 48 92 26 98 69 37 47 58 38 15 95 25 19 24 75 12 61 17 79 87 5 13 16 9 81 3 56 1 28 12 50 68 69 45 16 20 5 99 66 91 83 86 50 89 80 41 42 50 99 30 35 59 86 42 38 10 79 39 58 2 96 49 7 76 99 92 86 42 45 90 82 45 62 14 4 21 22 70 86 73 92 64 78 35 17 64 92 11 68 37 16 34 72 42 15 97 10 93 19 17 58 8 86 5 62 19 64 100 58 65 13 65 95 33 83 26 63 37 23 40 31 46 67 23 84 2 23 100 2 71 81 70 26 49 41 38 18 10 73 58 82 45 98 79 58 16 65 80 68 73 49 6 89 75 50 72 33 33 10 32 31 74 50 18 100 81 82 53 21 54 37 68 41 26 30 54 100 95 13 21 45 88 19 27 69 38 8 10 47 56 48 38 17 72 69 68 19 49 62 7 64 15 63 57 46 97 20 80 36 1 7 22 73 45 14 81 10 94 63 13 31 88 89 30 73 59 36 3 73 5 50 40 95 30 2 5 7 16 4 87 52 79 85 26 22 13 39 15 57 18 13 11 33 26 58 16 90 88 2 21 73 27 49 11 81 71 11 59 91 92 93 49 35 40 24 66 39 98 43 94 79 64 93 74 49 12 75 67 53 74 2 89 46 6 75 20 40 30 25 82 12 32 49 33 49 26 42 6 49 56 39 26 31 24 71 86 100 48 33 3 47 97 36 60 33 84 68 20 30 75 72 34 39 69 81 28 4 55 76 9 69 57 8 73 2 47 14 14 10 80 25 67 76 13 80 80 93 27 32 98 99 93 1 94 66 39 62 87 93 75 16 79 33 69 13 73 21 28 48 41 62 57 87 31 14 29 82 55 32 2 79 9 39 46 60 15 81 62 32 97 7 6 16 21 90 57 58 55 26 87 98 90 33 58 42 69 74 29 56 5 16 5 1 80 35 81 92 46 23 58 32 97 91 87 77 8 4 78 46 42 2 92 99 74 5 28 94 19 11 90 84 80 14 94 30 76 50 86 96 34 33 63 35 27 98 65 9 18 63 72 34 92 59 88 19 16 54 29 41 66 14 41 1 36 74 49 75 61 32 35 76 51 63 79 49 25 6 40 37 89 65 30 74 46 48 60 53 50 70 50 1 47 39 16 38 99 9 43 52 78 7 64 81 26 3 27 16 71 98 4 3 8 9 47 91 94 70 34 21 88 68 49 96 47 87 50 1 55 79 95 25 78 67 58 89 66 39 11 11 94 2 23 9 22 52 84 29 25 32 64 16 92 93 24 95 25 40 85 100 86 3 15 99 98 21 39 57 8 43 77 82 26 81 78 62 82 88 86 22 85 98 56 95 65 44 75 52 70 43 45 100 64 98 3 21 59 54 99 19 43 5 89 19 6 44 40 56 26 81 59 21 76 26 38 3 73 85 4 53 81 27 80 43 78 85 53 73 42 17 89 56 14 89 64 71 63 25 12 84 56 58 2 17 81 81 43 70 36 14 73 76 4 72 65 4 63 63 41 35 73 45 88 84 13 24 86 37 89 89 96 20 32 14 42 56 11 90 64 56 78 71 98 71 53 77 87 10 87 72 81 100 22 85 1 54 37 73 14 74 46 26 74 52 44 38 39 97 93 88 43 95 2 66 92 74 12 63 22 95 100 51 86 5 12 51 61 42 26 69 9 43 83 87 57 13 21 9 30 29 77 15 89 88 89 62 14 87 64 23 32 74 39 51 44 51 71 14 5 75 38 25 78 60 53 21 22 80 100 82 19 3 53 40 7 1 36 6 28 8 91 6 17 65 74 30 79 93 93 31 100 43 38 80 58 25 100 46 93 92 58 83 86 53 5 72 6 88 68 38 46 98 98 61 48 37 17 74 53 38 39 55 50 3 68 11 78 59 57 93 7 15 57 18 89 84 56 34 28 28 87 66 76 63 20 29 56 81 43 47 87 61 19 50 69 11 9 21 81 50 99 66 70 77 12 89 85 85 100 28 39 1 9 3 76 81 47 41 89 78 51 92 35 83 98 25 41 57 37 45 31 48 8 26 3 35 69 94 32 40 5 74 10 85 26 73 28 99 98 2 90 37 96 90 65 86 99 7 18 90 56 74 83 100 75 52 24 60 58 74 92 98 87 80 98 5 40 14 81 98 78 63 99 67 85 29 21 68 7 58 44 35 83 7 29 38 13 23 72 11 11 79 14 37 18 25 21 61 13 31 13 82 23 99 82 8 12 45 34 2 65 73 62 74 53 53 91 97 78 88 97 94 73 97 49 5 2 3 100 72 85 80 23 80 89 96 19 40 30 52 57 80 44 99 4 62 84 50 42 92 44 29 69 40 94 94 69 80 88 23 61 43 59 35 12 50 9 62 84 6 88 8 7 56 43 17 49 38 39 54 22 84 30 40 9 100 19 57 98 43 2 36 37 18 81 11 89 52 99 66 47 72 87 5 55 22 16 10 33 92 33 71 97 61 39 65 50 53 27 64 79 34 18 26 46 50 75 10 36 39 26 3 44 84 19 30 26 94 51 23 42 16 14 21 44 9 92 59 30 64 58 100 15 74 44 100 24 94 63 53 9 49 24 78 26 17 31 48 17 100 56 40 48 17 82 15 55 1 72 18 7 59 61 71 67 91 69 50 25 42 44 32 2 86 58 53 5 46 15 59 29 59 35 48 20 5 19 3 73 10 96 42 89 81 78 71 48 55 78 70 90 53 74 96 44 77 39 91 99 60 62 18 88 92 45 81 46 95 11 32 98 73 56 10 74 61 97 72 50 77 18 74 91 81 42 87 16 8 77 65 84 24 15 52 37 27 42 37 22 1 48 22 25 74 32 36 85 31 87 24 62 95 72 56 8 16 46 39 2 1 21 49 27 3 12 31 48 4 20 71 99 67 56 45 59 99 10 3 46 11 24 24 41 92 87 7 78 91 87 80 30 20 15 96 53 89 51 47 96 40 19 37 7 78 60 1 30 41 60 11 12 68 87 11 36 14 47 87 85 75 18 30 13 49 51 35 71 56 97 97 60 17 17 89 95 90 10 69 54 76 82 79 75 76 92 3 96 71 17 36 10 86 19 9 96 60 10 10 80 95 28 2 2 62 78 33 72 63 38 17 66 90 63 62 38 48 66 23 21 63 79 31 69 36 35 36 39 63 43 98 85 62 11 49 14 22 32 83 1 36 27 19 47 26 98 83 17 3 46 8 41 23 84 17 51 5 67 81 70 87 45 9 53 14 73 68 93 90 56 15 22 66 38 98 38 28 86 11 77 73 2 51 95 62 47 65 20 17 27 64 31 55 88 90 23 62 44 73 50 94 64 86 58 6 29 76 85 99 72 90 68 23 87 91 98 23 40 63 26 95 94 72 87 91 20 26 67 37 58 12 35 4 3 34 57 6 47 68 88 68 46 49 41 61 72 75 23 40 7 44 70 67 13 57 77 2 21 54 10 47 52 51 15 9 69 56 66 57 43 55 34 37 59 93 34 14 34 39 7 21 19 85 47 81 52 2 23 77 55 95 100 44 22 90 97 34 98 21 9 69 95 72 74 51 11 59 23 40 87 4 10 94 66 19 90 69 78 44 12 7 54 35 40 63 72 19 38 55 15 82 80 41 42 39 78 63 67 22 19 60 8 56 92 6 17 100 43 81 18 82 23 29 89 21 28 58 44 36 91 57 89 65 70 12 27 90 32 90 77 30 7 86 80 5 68 63 21 11 27 25 26 96 82 74 40 42 48 84 42 87 12 62 71 78 51 20 24 54 1 100 61 61 23 43 9 17 93 38 5 25 58 8 84 32 28 69 92 80 50 17 56 3 35 88 5 100 8 76 63 54 50 63 70 56 57 93 46 89 73 84 65 84 93 20 25 1 45 66 54 16 87 2 84 95 63 26 91 70 3 18 70 19 42 99 65 78 34 72 25 16 4 17 29 56 35 60 12 22 60 40 64 59 73 89 91 18 91 43 23 54 7 55 81 72 38 70 72 73 10 29 54 13 95 88 85 35 62 25 37 95 30 74 80 79 90 82 8 58 77 66 96 44 24 3 45 13 52 93 14 73 72 81 5 66 8 80 10 64 55 90 28 98 100 43 1 22 53 22 25 8 89 68 79 11 35 31 90 28 44 24 7 54 39 96 37 62 7 20 44 49 31 68 73 17 26 21 94 57 99 15 8 55 13 98 21 97 96 89 71 2 35 8 14 29 52 81 92 76 31 23 97 99 93 93 5 73 51 18 84 69 56 79 58 98 81 9 45 91 43 44 8 6 83 45 32 29 45 55 10 58 51 18 73 65 57 17 35 78 18 67 63 88 41 71 20 18 78 81 75 64 67 54 17 65 49 80 93 96 34 23 71 76 60 24 26 75 66 37 17 12 86 23 36 61 50 6 27 70 95 39 79 46 81 38 46 36 77 67 2 10 69 96 76 32 52 18 97 78 59 92 1 18 22 37 52 97 74 41 43 58 34 7 80 6 5 81 67 59 88 76 7 84 61 76 80 30 89 93 97 93 43 79 30 73 21 28 74 24 69 13 63 33 52 80 10 95 66 25 17 21 37 47 59 47 24 27 5 7 76 99 50 75 31 42 86 6 52 100 93 98 75 12 32 87 82 23 10 54 71 28 87 24 89 9 76 98 7 91 36 65 14 8 65 62 50 37 62 85 22 8 46 64 74 85 58 28 56 67 63 97 54 43 31 55 2 57 33 83 11 52 68 27 50 41 92 18 62 84 67 16 36 99 90 60 67 18 36 56 20 85 10 73 23 18 61 15 10 82 25 59 79 98 9 89 49 55 7 30 97 51 43 93 55 46 84 19 34 47 18 66 31 60 50 61 72 54 39 26 16 31 38 46 10 97 72 53 85 6 16 13 53 33 7 73 96 5 87 40 64 45 60 32 19 99 36 72 14 61 47 26 41 11 7 9 55 76 53 69 64 7 75 1 6 26 4 30 98 23 29 68 7 15 45 96 22 12 48 50 42 88 23 88 68 17 71 10 17 66 87 6 44 79 30 62 99 91 91 92 29 60 1 89 23 77 71 44 41 70 87 19 99 90 3 66 17 5 56 48 65 24 96 36 48 11 49 24 95 29 93 19 57 74 22 64 54 1 34 5 18 17 12 90 62 91 8 26 54 53 36 11 63 56 43 65 2 95 58 35 28 89 72 66 74 37 25 69 53 48 24 27 36 23 78 39 95 28 32 94 100 79 64 24 74 39 49 79 28 96 54 83 89 43 62 48 71 12 91 11 52 91 27 91 78 55 13 64 71 12 83 98 36 31 76 25 19 30 96 74 60 81 27 67 62 73 25 90 63 76 66 18 32 61 36 84 74 9 90 36 39 73 40 55 6 18 21 53 57 36 57 26 87 16 8 58 19 5 31 32 94 57 92 85 85 80 52 29 91 45 96 68 66 24 57 93 10 2 29 58 90 17 73 58 17 43 33 41 74 78 15 65 36 94 84 21 3 86 51 93 41 66 32 43 66 50 60 63 34 31 38 64 5 18 65 75 57 43 100 74 68 52 26 38 19 6 28 80 68 21 99 1 62 20 20 84 49 75 56 65 77 58 93 35 52 41 75 6 38 100 12 53 41 37 67 67 37 70 30 8 49 41 43 68 4 69 44 48 35 36 67 37 44 29 11 83 78 53 88 49 84 23 61 10 37 56 5 61 22 39 20 76 87 89 35 8 2 30 57 2 79 66 84 96 15 16 26 44 19 74 33 15 15 63 64 82 77 88 44 59 77 77 59 60 3 90 79 54 40 61 72 34 26 12 28 22 69 97 20 87 80 31 11 38 29 43 53 3 46 11 84 89 53 88 37 53 28 27 11 64 5 53 80 68 22 74 91 92 31 8 92 73 90 65 77 71 68 5 19 68 84 9 72 71 9 87 8 34 27 26 18 53 87 52 4 14 84 94 37 19 75 19 69 50 51 83 77 25 37 39 37 99 74 18 59 71 82 19 22 24 99 67 75 4 45 49 89 58 8 72 93 63 89 23 20 60 86 5 43 73 9 75 68 49 97 25 13 68 34 96 31 20 79 78 73 14 94 45 47 80 63 19 83 57 59 34 18 91 74 46 58 85 35 23 47 69 19 63 19 90 13 8 18 85 25 44 64 69 9 28 32 71 31 18 96 14 98 7 93 23 58 82 94 42 43 39 1 17 84 46 100 96 68 67 53 14 3 41 52 19 75 4 25 60 90 69 29 81 87 28 91 9 80 62 40 27 94 10 59 23 58 24 41 10 45 25 14 55 55 19 39 92 58 32 55 48 38 66 73 99 52 80 89 100 30 61 8 1 92 27 85 88 34 31 72 13 83 13 87 26 85 24 50 75 55 2 100 69 97 13 1 47 86 18 10 18 38 7 10 54 39 52 58 34 23 12 52 93 1 83 22 59 89 72 43 17 19 53 43 48 57 1 2 28 36 56 93 85 100 33 10 5 60 70 23 77 83 6 53 45 12 64 64 35 10 22 78 81 70 97 39 9 77 50 19 28 39 25 23 73 92 81 11 40 77 15 11 77 44 63 33 9 96 3 59 61 84 5 30 91 92 20 8 29 76 57 87 21 76 88 50 50 60 100 53 7 100 37 35 90 58 39 1 5 86 7 91 64 60 8 20 80 23 82 16 25 84 53 7 4 46 85 90 55 30 1 89 51 9 72 47 11 40 40 54 24 13 23 17 12 31 73 87 39 24 73 17 13 74 65 82 28 63 100 16 57 33 18 22 77 64 51 41 6 94 4 98 79 34 67 64 82 55 76 25 23 63 2 76 23 65 47 50 10 76 80 8 43 59 35 64 50 97 37 2 31 3 16 31 91 34 68 98 93 5 33 70 86 28 47 78 97 35 85 100 25 24 44 20 54 75 91 68 17 10 44 11 39 97 85 41 25 14 72 99 94 83 39 18 12 14 37 72 91 28 19 70 98 32 100 79 87 25 8 40 37 18 68 50 5 20 96 72 16 45 90 88 36 71 17 94 3 51 100 62 27 97 35 89 72 14 99 47 56 65 91 72 22 47 99 60 59 24 25 49 98 87 88 29 67 80 61 50 69 73 8 92 40 24 56 40 45 31 38 69 44 31 8 37 68 1 43 76 38 50 79 59 27 78 22 34 95 43 87 7 86 55 10 27 66 26 13 80 2 79 71 96 5 53 3 15 41 18 35 34 60 15 98 28 59 55 87 44 74 83 7 91 78 13 51 57 67 2 81 32 16 85 44 47 87 86 28 37 46 34 46 46 44 70 13 94 80 41 14 89 31 18 7 13 87 60 36 90 94 1 58 81 82 66 49 7 72 30 50 33 61 3 10 28 38 58 35 15 94 79 2 41 81 59 3 51 46 85 19 95 30 59 76 73 57 55 50 78 4 10 69 85 56 30 84 14 48 17 93 73 57 36 52 10 63 10 49 70 24 32 14 51 87 85 27 52 90 22 67 81 71 82 22 26 34 86 26 18 30 8 15 96 33 100 94 74 41 4 31 88 21 62 57 45 37 60 95 98 36 89 36 79 82 69 5 78 82 9 25 66 65 43 42 86 67 15 99 42 50 15 67 28 64 78 39 72 46 83 69 23 63 19 34 4 2 30 71 86 64 54 62 97 70 34 96 81 5 10 18 94 11 63 99 83 49 37 22 25 20 54 99 53 60 69 69 66 14 74 48 53 31 83 3 57 66 7 67 34 77 14 25 100 83 56 81 1 85 40 90 19 90 12 20 100 98 87 99 69 100 60 86 85 16 77 32 54 35 67 74 6 85 57 81 85 40 9 7 28 88 2 5 41 12 23 97 49 64 30 57 65 47 15 82 13 79 38 29 16 5 50 24 85 65 74 9 30 21 71 7 71 13 70 57 71 94 11 86 25 19 26 94 58 3 26 43 33 70 10 81 51 38 14 26 50 78 79 34 48 9 32 61 44 46 49 12 75 71 13 93 78 24 25 97 7 86 26 18 84 27 28 47 35 40 21 67 83 15 80 72 75 89 48 66 85 1 15 73 48 74 91 85 44 19 40 14 83 15 51 91 22 75 42 50 36 72 59 39 30 73 5 57 53 27 44 89 72 32 16 77 10 69 26 33 42 1 39 17 29 38 92 79 29 27 13 6 79 36 41 50 56 88 83 18 2 88 46 1 27 2 40 15 51 15 45 8 45 98 51 79 27 31 32 30 50 87 65 51 72 76 33 75 64 17 11 84 49 43 80 51 23 32 36 52 55 83 67 93 8 63 50 88 100 63 6 24 89 67 91 44 60 30 68 25 85 40 37 1 12 61 86 15 52 65 59 19 52 19 82 34 14 87 39 57 27 10 10 72 64 50 52 67 78 69 3 4 61 12 39 84 11 29 36 8 34 45 39 59 32 22 54 46 93 16 2 10 39 7 89 94 61 53 34 12 35 95 14 2 47 27 73 51 77 2 87 68 4 94 34 16 90 36 75 44 31 22 77 81 25 73 75 72 58 28 52 92 68 95 31 16 19 62 93 48 48 76 6 4 49 9 70 3 98 43 54 58 71 85 68 26 73 1 5 59 58 68 86 62 40 57 92 63 98 13 60 62 37 47 55 72 15 66 18 81 93 13 82 1 61 48 28 63 44 96 64 49 16 91 14 59 40 29 88 92 21 9 74 84 17 59 13 59 61 41 18 44 78 93 38 58 8 6 40 90 95 39 71 98 93 54 53 25 18 32 36 88 95 74 59 38 32 61 29 6 86 100 15 36 3 18 55 20 33 80 56 42 91 41 12 11 61 8 26 15 5 100 43 92 90 27 68 7 26 86 42 93 75 5 53 15 96 74 41 3 54 13 20 93 27 18 5 26 34 31 40 40 39 75 19 57 71 97 71 47 35 25 59 14 89 55 13 76 40 24 40 87 46 25 13 82 69 80 24 54 42 77 90 59 47 21 98 37 70 35 39 82 75 21 43 72 9 99 71 90 51 27 87 26 20 83 97 81 61 86 69 17 45 46 76 9 62 2 51 35 70 60 80 92 17 10 11 9 37 46 72 32 25 14 97 87 88 92 2 31 34 83 74 4 8 17 91 26 58 27 62 100 7 56 44 74 36 97 75 71 34 16 24 29 96 6 72 41 96 12 25 67 47 72 89 87 36 86 42 73 99 81 55 10 95 80 57 19 81 23 85 16 80 50 26 84 47 57 2 84 10 69 17 24 71 59 6 3 14 28 69 65 32 43 68 83 22 73 5 3 39 54 6 3 61 20 15 85 99 29 82 71 54 56 22 73 78 50 48 58 50 32 97 10 15 94 15 93 4 25 94 71 45 3 2 46 96 87 7 36 99 24 93 69 72 34 65 93 46 81 75 12 41 37 83 92 6 60 47 5 14 100 13 22 27 39 17 58 80 68 100 95 96 85 32 11 11 32 18 20 33 31 71 75 40 77 26 72 62 83 1 25 57 22 47 11 84 31 79 74 18 78 91 93 97 3 53 48 52 43 79 28 64 19 45 22 64 45 21 27 73 27 86 57 5 10 6 86 87 45 34 68 66 64 4 41 2 59 97 39 85 34 17 79 94 26 96 58 43 27 27 41 36 46 63 48 87 98 16 60 42 97 41 33 55 91 27 89 78 70 56 47 65 66 80 5 4 52 17 46 90 62 73 30 94 74 92 50 80 34 3 45 70 37 19 36 62 6 22 32 79 69 23 49 89 64 58 58 96 24 16 57 2 16 44 41 99 26 59 16 85 7 33 48 20 16 14 83 63 36 24 53 37 62 70 6 64 13 93 64 91 39 94 35 34 25 5 85 46 3 80 68 42 92 61 77 25 61 59 73 92 56 34 42 24 24 94 19 7 51 73 69 75 21 32 72 99 44 6 52 64 28 43 37 65 23 42 71 58 83 55 67 85 93 66 27 44 38 10 66 75 95 45 39 53 26 28 85 89 27 86 25 75 1 97 86 5 90 70 95 93 35 4 7 72 13 88 80 92 58 15 3 22 75 51 45 40 73 99 32 42 10 83 97 91 47 60 89 7 21 7 53 29 50 69 9 6 53 47 37 33 42 81 48 78 64 10 3 11 21 58 2 39 26 69 82 43 43 26 95 8 62 7 50 66 40 5 28 36 82 26 57 70 53 4 32 83 74 79 84 52 60 72 100 74 8 74 10 18 33 68 100 26 29 67 32 3 9 57 20 39 48 78 15 26 62 35 38 4 49 10 68 10 69 83 31 23 69 58 28 48 80 9 9 31 86 29 87 23 32 29 12 96 87 14 45 65 12 63 8 50 19 92 100 74 43 47 42 62 9 55 61 70 41 18 89 49 18 57 7 61 54 76 97 51 61 91 97 7 23 43 100 36 9 69 58 34 74 65 34 85 50 48 10 54 96 82 78 10 21 53 35 22 67 53 88 70 91 67 58 13 91 42 68 87 7 8 65 9 5 72 74 20 88 52 14 47 1 35 74 66 26 64 94 59 86 14 60 38 37 48 83 19 12 3 43 23 4 97 79 39 28 25 29 5 31 43 38 15 75 64 2 98 75 51 45 1 7 36 84 24 99 66 95 45 5 17 88 47 29 19 71 21 12 20 82 26 65 89 47 55 19 34 21 22 86 88 52 93 92 93 21 69 91 96 62 100 94 4 80 56 92 14 76 9 10 67 3 26 65 15 31 66 95 25 85 20 17 7 68 41 21 41 26 43 28 21 16 36 24 58 85 20 3 44 8 8 79 6 9 58 69 64 41 86 36 48 35 14 35 39 88 61 1 5 18 84 19 31 59 48 52 50 43 79 61 23 35 62 84 41 69 16 39 54 16 42 45 11 56 17 36 7 18 37 85 67 15 4 95 44 61 70 27 9 35 85 38 83 47 59 96 33 83 68 87 57 78 41 100 57 85 63 7 39 55 31 85 36 84 23 85 96 97 81 18 23 65 58 73 7 18 81 36 71 86 70 8 44 20 22 48 14 92 26 44 68 32 39 35 13 79 41 15 86 80 86 53 83 49 79 18 2 23 89 30 98 30 75 64 36 94 4 56 45 4 58 48 8 32 20 24 53 3 81 18 78 49 94 87 72 61 12 29 46 3 98 6 90 82 3 18 29 75 3 32 86 15 43 26 71 1 10 42 59 41 50 78 52 14 68 15 36 98 55 80 1 50 66 19 85 28 11 44 18 44 92 69 18 43 60 12 28 36 100 3 14 39 75 80 12 27 55 13 11 65 97 34 89 24 88 12 69 94 63 10 40 39 93 60 72 1 17 27 32 53 90 32 52 66 27 99 81 19 46 20 9 82 71 9 74 38 56 73 3 76 74 78 12 15 71 25 33 68 49 29 52 47 1 88 62 74 26 70 93 41 29 84 19 35 52 40 50 85 32 93 2 63 27 36 82 68 74 84 91 6 26 8 48 43 48 15 44 34 91 21 12 86 45 10 77 55 24 73 34 97 84 6 80 4 36 17 91 43 90 91 60 7 93 11 67 27 26 63 91 35 22 98 42 14 66 86 5 49 69 72 1 56 92 17 62 88 25 99 49 66 91 16 40 26 97 91 56 25 56 87 76 88 77 66 49 6 39 83 16 96 99 47 95 74 70 67 92 31 76 92 76 81 28 82 95 44 43 2 11 57 34 25 68 86 57 10 54 95 88 14 69 65 34 1 74 57 32 82 17 92 94 20 87 53 93 57 16 3 25 10 68 30 90 50 57 34 63 37 62 65 76 62 60 73 1 35 3 78 86 26 30 67 57 60 51 98 54 50 79 58 23 69 75 68 3 26 37 94 5 68 9 1 75 21 97 35 40 59 98 31 67 77 29 35 83 30 96 48 97 23 100 8 98 39 65 46 13 4 55 72 1 48 31 58 41 45 27 52 52 53 61 70 62 90 13 55 79 88 25 48 20 23 38 58 36 16 3 11 79 16 45 7 54 21 58 6 99 42 46 70 86 99 83 34 26 59 4 61 61 92 75 14 76 16 97 41 4 56 6 96 23 75 2 81 30 49 6 79 94 14 96 59 71 10 63 70 27 69 67 25 63 43 26 79 2 90 47 53 36 26 17 28 74 29 94 75 8 92 14 1 9 28 10 57 32 6 45 53 54 32 63 26 7 75 66 46 18 82 32 12 12 69 61 80 99 26 96 79 21 88 97 22 38 97 68 34 19 68 2 55 27 19 26 54 72 1 1 62 15 37 74 91 44 11 15 52 21 12 55 75 86 16 83 37 39 74 15 61 40 55 22 1 17 65 51 93 35 84 91 92 91 59 23 63 26 19 7 57 69 11 14 40 67 88 22 81 37 81 91 18 11 82 37 28 62 81 9 56 6 30 38 47 35 16 53 14 28 98 3 26 17 16 90 10 18 65 11 79 16 59 47 45 2 67 27 80 21 63 13 19 53 77 100 32 29 16 62 91 52 5 72 8 48 57 27 75 92 9 38 27 16 15 16 96 39 31 57 58 70 38 79 11 33 24 44 1 32 67 61 85 61 46 16 40 43 87 97 31 78 1 59 46 47 58 92 80 33 32 80 30 36 88 6 92 30 8 71 83 77 29 2 34 46 40 75 41 16 3 39 77 8 75 51 49 19 3 34 4 75 31 78 31 42 37 2 63 59 52 12 60 20 31 48 54 14 81 36 52 98 2 53 97 96 84 4 42 3 76 72 44 65 91 58 43 100 52 90 13 69 18 84 48 29 96 73 66 63 91 15 31 98 17 37 82 37 89 7 76 35 45 61 93 26 68 79 34 3 31 27 8 54 95 12 57 59 68 85 5 4 62 19 46 50 72 14 89 91 70 65 77 49 61 67 17 2 100 17 50 85 16 11 100 57 87 41 53 25 11 56 91 27 74 73 63 6 79 94 9 92 24 45 57 90 100 94 62 50 99 88 51 89 68 6 75 2 11 10 84 61 17 45 99 36 55 58 2 97 73 39 40 100 70 68 62 60 49 23 42 41 69 51 1 33 69 61 3 59 75 77 73 21 95 62 40 90 28 82 44 31 42 95 38 71 70 88 25 85 24 5 29 54 49 73 38 95 97 84 43 46 86 1 37 78 19 93 57 32 91 97 40 91 68 35 25 47 22 62 22 72 90 17 88 51 29 52 62 50 36 37 62 25 40 96 77 82 5 20 44 98 7 98 44 26 70 3 82 74 15 22 77 40 84 15 74 12 45 90 94 87 32 81 14 30 43 68 77 7 20 91 91 13 33 79 60 75 17 95 4 62 35 96 73 69 4 33 51 74 28 65 36 92 48 49 15 65 98 1 17 46 49 9 58 7 59 26 64 77 76 6 36 76 13 38 37 53 87 65 44 49 10 34 69 98 18 48 64 56 66 98 54 41 90 55 63 41 46 39 37 27 35 88 59 15 44 50 59 76 53 89 37 43 95 26 69 75 29 2 27 52 63 7 91 72 69 78 90 16 26 62 26 23 47 21 4 75 59 95 51 12 37 82 38 89 79 11 23 90 63 78 3 3 21 73 5 33 86 87 15 52 97 78 65 35 95 64 79 49 77 63 93 66 10 88 4 73 48 34 49 96 42 59 96 91 18 22 62 19 92 42 74 40 93 1 11 73 3 47 15 74 10 37 52 49 36 3 24 42 8 95 66 54 74 62 11 48 47 35 81 37 42 79 39 59 88 59 6 32 22 68 97 87 17 12 80 50 6 58 90 47 24 69 8 41 38 45 1 43 63 46 60 1 30 52 72 54 39 46 85 44 48 10 24 8 73 66 73 76 1 86 26 76 22 43 64 99 42 100 54 22 89 32 40 47 14 55 48 50 97 98 79 31 59 20 95 24 24 48 51 100 67 100 7 2 9 27 40 90 43 40 56 24 98 21 23 33 1 40 51 20 21 39 21 21 29 15 88 59 32 95 86 78 65 27 65 22 20 81 62 69 92 1 54 2 48 27 28 9 58 93 31 61 57 9 79 57 13 66 9 63 32 80 1 72 33 87 70 31 93 10 4 66 43 11 6 34 55 33 70 36 37 10 43 46 10 65 98 68 95 21 85 14 38 66 9 91 95 99 4 66 44 38 35 19 59 26 35 59 88 85 21 40 61 47 35 12 50 3 14 76 82 67 12 90 48 31 6 38 10 76 43 76 72 58 9 51 1 53 45 70 91 65 85 15 38 92 72 89 55 60 94 28 20 89 31 90 33 86 63 69 99 8 19 41 2 8 72 4 63 14 44 16 73 29 6 93 84 64 65 5 62 25 61 10 73 11 67 17 47 6 24 59 2 13 30 31 56 48 22 52 96 16 66 56 85 7 38 88 100 44 36 50 30 57 9 51 31 44 36 87 92 84 19 99 63 70 30 91 60 62 29 65 77 33 1 81 78 51 48 70 81 78 8 76 50 78 13 55 27 34 47 63 92 84 5 44 83 28 17 19 2 13 3 44 29 36 29 64 36 4 29 70 57 71 13 6 99 37 12 25 2 9 95 9 100 39 5 41 93 56 96 57 85 15 35 68 79 54 38 54 31 58 99 77 51 94 64 97 74 61 24 94 20 2 2 66 65 85 59 67 30 44 74 58 6 64 76 18 63 74 7 91 3 61 60 89 69 75 92 46 9 79 52 58 98 44 11 65 61 70 32 4 67 3 79 67 75 64 51 25 91 34 35 69 74 33 93 16 9 46 97 60 70 6 46 91 37 15 80 59 18 76 88 24 74 37 1 24 97 18 84 78 61 40 64 68 42 22 1 31 22 8 41 19 17 89 18 13 24 73 92 22 61 89 57 22 39 69 27 92 10 81 99 44 13 51 86 10 56 92 25 56 37 94 84 31 83 95 56 53 32 23 1 28 35 25 9 25 99 61 38 7 34 30 20 5 74 39 13 41 94 86 64 73 24 44 42 47 18 37 55 98 60 67 51 59 45 32 3 93 80 25 38 32 55 6 33 43 4 8 16 27 94 15 6 86 3 15 44 14 24 39 15 27 25 57 65 48 71 24 61 47 14 90 77 4 14 33 47 58 30 99 70 4 79 17 10 59 92 100 27 62 14 60 97 35 84 21 54 72 33 34 51 57 78 22 83 47 41 14 89 5 73 64 87 5 23 30 97 1 100 75 93 64 28 95 14 24 4 21 20 55 9 49 43 27 1 22 91 77 42 97 18 34 10 64 95 1 23 47 93 34 99 68 85 68 68 62 49 36 93 73 34 72 78 2 64 25 10 57 22 85 82 71 75 21 75 28 48 82 23 99 59 19 12 52 21 14 22 58 35 97 94 25 76 77 24 58 16 53 67 34 47 63 81 25 35 53 75 92 58 98 64 90 51 42 4 26 44 56 28 11 47 8 59 36 36 13 1 33 58 32 12 31 76 97 24 61 25 78 65 27 31 97 7 64 6 27 95 56 55 31 35 29 100 33 38 23 24 39 22 89 24 44 63 96 73 51 75 35 39 70 83 75 39 23 86 37 58 30 79 80 46 46 31 7 67 52 41 58 14 26 49 7 77 58 92 65 14 73 12 41 37 34 85 64 14 91 84 79 83 61 85 83 64 36 44 88 88 70 1 82 85 55 68 18 83 66 84 80 23 52 12 50 8 38 94 43 58 12 53 45 40 56 53 23 75 1 44 99 36 85 14 6 58 49 82 50 89 95 85 86 6 19 83 37 49 81 75 68 67 17 81 64 68 37 54 85 50 18 37 5 54 25 21 50 29 7 25 90 95 49 11 5 60 20 99 70 72 54 15 43 92 6 98 99 67 53 91 52 17 3 66 19 23 8 68 71 5 28 1 88 8 4 27 10 75 19 37 81 3 75 14 10 1 98 18 59 65 77 37 55 7 86 34 77 93 27 1 5 90 56 89 77 30 58 12 86 3 37 83 83 83 69 56 88 25 18 41 50 3 94 31 67 18 22 3 56 61 28 99 75 9 41 83 88 62 49 76 20 13 61 41 1 94 53 18 10 93 63 85 39 5 11 25 58 61 62 76 76 7 85 11 77 73 48 92 93 30 67 26 12 35 60 82 73 3 17 59 24 95 72 28 15 77 44 94 52 69 15 100 82 23 68 26 27 77 32 74 47 13 98 36 42 34 2 47 64 25 11 90 20 93 88 39 25 74 66 60 23 32 85 81 29 12 46 26 95 46 74 20 54 11 59 24 2 23 28 15 93 44 31 86 27 41 83 1 99 50 6 84 96 77 84 24 39 27 30 6 28 69 51 74 96 43 72 43 67 26 87 78 94 22 88 80 76 27 31 40 94 80 5 44 88 78 63 70 61 82 6 27 87 2 6 7 78 20 21 46 60 41 35 42 50 5 27 38 88 51 32 91 9 91 6 17 61 95 48 79 67 93 37 72 22 39 73 44 79 85 38 43 71 55 30 81 52 100 94 19 61 56 20 39 22 26 16 10 86 57 65 33 61 51 88 44 24 57 52 1 69 59 15 54 1 69 71 31 31 54 97 63 27 76 32 43 36 5 68 94 75 30 91 63 31 76 91 30 41 55 25 6 51 85 11 95 82 76 55 82 20 86 78 88 90 87 81 66 66 63 16 4 5 94 65 11 58 10 5 49 50 14 71 31 69 61 91 37 69 68 96 2 31 91 38 18 86 17 90 5 73 64 65 30 63 78 92 24 94 35 4 69 99 88 68 60 85 78 1 43 1 89 3 32 73 24 29 39 60 24 17 27 14 81 55 62 39 57 72 85 36 38 77 1 31 92 5 93 73 94 93 27 3 50 18 15 43 100 17 10 54 4 94 35 56 66 30 68 78 14 76 78 50 17 23 50 32 32 100 33 76 10 90 92 52 15 96 98 78 84 24 50 14 25 21 99 49 91 21 86 62 73 18 49 59 30 75 48 3 66 90 35 28 51 52 56 5 21 3 41 1 96 2 96 68 54 70 13 28 89 23 85 57 82 22 24 8 96 38 19 21 5 65 93 34 45 46 85 22 88 49 97 28 83 66 71 56 39 45 42 38 58 61 79 81 21 86 27 29 86 85 63 66 77 13 86 98 65 71 20 82 97 1 31 35 99 33 28 24 24 94 74 31 17 51 74 27 51 31 42 82 68 88 87 73 45 71 89 67 48 92 80 98 36 30 14 70 36 96 39 90 36 42 88 43 28 68 61 96 35 91 8 43 68 93 72 74 32 97 26 17 39 17 83 52 87 72 12 52 34 4 27 68 26 11 80 64 36 17 97 36 33 97 13 25 28 55 29 81 33 9 20 39 76 34 34 74 30 28 23 48 46 99 82 43 22 92 60 57 4 7 96 68 9 8 61 49 7 46 74 8 95 45 9 11 4 42 1 10 71 66 18 27 21 13 61 25 37 28 79 84 73 71 67 54 99 18 5 76 79 7 61 91 34 27 28 25 13 44 32 2 62 42 17 85 42 16 11 18 85 26 99 71 32 92 29 30 50 48 29 37 8 83 73 61 44 24 86 60 39 46 52 7 83 50 18 32 96 64 16 43 83 68 30 74 10 12 5 60 33 1 44 45 30 80 37 48 8 100 82 34 30 70 18 49 27 29 72 11 72 85 89 87 82 67 45 79 12 86 41 24 5 46 62 58 20 84 59 10 73 7 35 40 49 45 76 6 11 76 3 37 68 21 4 73 55 2 5 24 14 54 10 32 39 27 68 78 49 63 93 66 44 32 12 41 86 26 94 41 72 16 82 12 34 40 66 11 99 59 30 39 2 29 66 30 89 4 22 44 29 75 52 50 56 100 37 63 9 42 98 53 71 27 51 47 34 25 34 4 79 24 55 29 77 30 5 7 94 69 47 2 68 14 17 44 24 93 59 63 20 8 97 38 23 30 56 8 90 22 97 6 80 31 84 23 17 20 39 55 31 14 21 46 66 94 56 3 44 52 49 82 78 24 54 19 17 83 34 3 71 23 92 28 18 96 35 50 85 15 78 32 38 97 68 74 87 78 97 72 55 56 56 44 69 35 11 10 64 39 10 95 70 18 14 37 51 71 12 48 74 7 43 46 60 12 38 44 46 47 49 4 81 63 37 74 56 45 66 46 57 14 91 90 72 83 79 28 40 72 97 4 20 53 28 82 89 80 6 89 59 41 66 92 49 66 58 15 88 1 33 4 5 93 9 32 10 8 80 38 88 20 58 56 72 41 79 69 15 21 98 97 14 34 67 69 99 51 31 9 45 23 55 5 69 80 12 31 63 27 15 92 29 65 31 11 93 45 27 40 39 50 33 99 21 25 51 4 12 79 42 5 10 57 59 23 11 73 99 5 34 90 13 100 91 29 57 60 96 86 78 40 30 46 86 84 61 76 86 65 36 86 80 50 52 89 98 64 47 100 16 29 66 9 56 51 64 98 83 40 30 8 81 17 28 60 13 55 98 18 93 34 31 18 22 27 78 100 93 88 65 59 69 77 68 81 60 80 36 72 18 35 43 43 62 22 63 71 46 50 60 12 58 6 48 16 91 83 94 66 32 42 83 51 73 17 63 13 30 43 98 17 32 66 100 11 70 97 49 32 38 3 62 19 53 5 75 51 82 38 80 92 100 88 38 80 27 49 37 36 11 6 6 20 74 50 1 30 100 79 57 21 26 22 88 5 62 30 14 60 2 97 4 26 6 37 35 97 88 41 75 73 54 33 61 91 87 18 36 14 73 25 74 79 15 76 76 43 94 23 44 68 13 96 36 87 79 85 7 18 14 89 18 7 43 22 41 49 15 11 34 25 83 49 77 89 16 65 69 5 18 65 52 92 29 54 92 76 18 16 66 95 24 62 92 3 83 59 78 85 71 47 35 54 3 42 39 84 55 92 51 99 29 43 8 73 18 30 61 12 31 26 68 88 8 45 28 56 19 87 82 11 56 34 91 78 23 1 68 96 6 45 4 42 84 99 36 35 38 59 61 11 36 2 54 50 84 52 16 68 33 75 67 45 87 86 88 85 45 35 67 35 19 87 18 84 68 55 53 21 14 98 58 21 11 68 74 6 21 52 44 92 88 22 66 84 58 56 60 46 72 49 18 62 22 18 29 29 70 1 5 57 22 73 9 8 89 1 86 53 37 44 97 10 82 89 97 50 47 63 18 42 40 40 53 37 89 36 90 27 93 16 43 89 63 77 36 89 51 95 92 100 79 9 46 43 75 22 14 42 71 27 60 49 70 43 10 13 8 68 29 76 31 81 93 36 98 43 41 78 2 14 35 63 86 70 92 61 97 59 19 58 81 24 69 86 30 47 41 43 24 4 47 19 68 25 81 58 43 66 25 66 39 47 22 51 41 75 67 3 3 93 52 62 45 100 8 52 14 60 50 77 25 13 1 31 83 45 77 35 77 31 13 34 25 51 68 63 62 70 11 94 36 14 52 68 48 88 69 43 52 44 70 75 20 6 53 70 10 50 26 80 58 88 49 31 97 82 33 35 59 21 92 5 18 64 87 68 28 17 90 53 9 59 39 71 2 100 84 35 69 56 30 17 82 68 2 10 38 12 88 38 15 73 7 6 40 89 49 6 81 11 67 84 74 38 43 13 43 92 15 51 39 16 68 18 80 73 58 76 69 14 8 89 12 31 49 93 49 74 37 38 48 25 100 65 23 42 58 97 33 6 2 8 22 6 18 46 34 40 4 40 58 29 46 3 11 90 85 19 97 7 38 95 4 39 41 6 87 59 99 42 19 15 90 82 6 62 63 23 31 2 59 8 83 11 60 94 28 18 96 54 22 36 62 60 96 100 15 67 42 95 88 74 83 80 72 11 24 16 7 3 95 44 69 17 19 70 12 25 26 59 73 22 95 49 27 92 73 48 26 64 58 82 85 68 64 69 93 23 44 8 64 22 66 25 8 36 82 23 90 34 6 43 94 13 30 73 15 22 24 48 49 70 80 49 94 77 65 60 64 42 49 64 37 59 61 29 16 11 70 83 58 44 77 96 35 61 8 57 82 11 44 95 25 83 42 38 8 85 31 80 19 69 41 49 13 97 51 58 27 75 63 50 10 85 44 10 72 59 24 83 67 2 34 43 20 94 7 57 2 36 47 11 84 63 67 67 32 78 14 79 44 58 53 57 72 47 9 88 26 36 39 47 28 34 39 88 58 81 9 43 91 12 92 21 69 8 69 25 8 62 24 89 60 19 51 78 95 73 60 67 1 4 97 29 5 61 49 79 51 81 69 14 23 32 33 28 86 58 25 47 8 62 36 86 74 93 24 5 82 88 38 75 32 29 47 23 67 15 99 35 23 32 59 54 80 38 67 56 67 51 54 35 86 98 26 49 91 67 21 95 5 65 95 23 70 46 18 21 42 97 98 49 2 92 36 40 100 8 18 11 11 66 67 100 25 35 19 81 98 6 89 28 54 49 98 5 85 12 34 53 15 37 99 72 89 54 3 51 15 38 22 49 1 92 36 44 23 3 66 82 27 45 22 48 59 84 92 51 82 97 70 43 10 66 9 15 41 24 22 99 34 71 7 26 6 72 35 26 91 32 96 1 68 76 100 1 95 25 30 94 54 79 58 95 81 81 54 9 1 57 81 98 4 65 1 5 83 22 61 88 23 65 4 35 39 42 39 58 80 50 73 49 88 96 31 79 93 99 57 32 51 75 92 56 22 93 53 100 41 88 48 64 84 69 81 13 84 7 41 17 57 13 4 89 37 94 69 87 46 6 9 31 39 58 22 100 4 72 91 43 31 77 70 96 87 95 69 86 45 96 43 60 24 60 29 79 20 81 22 57 88 72 81 90 92 67 89 83 59 85 73 6 67 9 11 98 47 51 5 57 43 6 92 12 87 34 75 40 88 35 56 74 97 24 76 61 6 78 51 68 63 63 100 97 73 43 24 36 90 89 77 57 64 89 88 83 27 92 35 14 6 70 63 42 97 15 59 62 93 16 67 82 86 90 38 23 86 33 91 31 15 95 55 28 36 21 98 68 57 9 19 54 3 99 19 82 26 79 93 58 30 72 14 90 55 59 20 78 34 94 43 10 3 37 22 51 32 29 78 90 13 99 84 54 92 55 77 99 91 3 52 48 99 43 98 18 95 41 86 62 8 80 5 29 15 16 63 40 14 8 72 76 67 92 9 12 73 18 94 68 91 2 61 77 3 9 27 16 85 49 55 66 32 63 84 72 31 16 17 52 63 57 47 81 28 66 56 11 74 93 5 26 40 80 81 84 40 48 31 6 62 73 68 12 57 57 79 62 33 16 88 24 79 49 13 94 77 95 33 90 89 10 5 3 77 43 43 15 59 3 91 52 12 15 51 53 5 35 59 6 18 79 27 72 48 38 75 99 90 86 47 5 5 53 97 31 56 50 75 66 49 90 91 87 90 59 58 45 13 62 66 41 45 50 56 88 46 67 91 74 82 43 29 48 27 66 29 53 33 71 79 43 62 25 72 52 95 66 5 83 83 77 38 40 61 58 36 59 61 7 55 34 70 87 38 47 5 37 92 8 89 87 3 54 83 92 63 43 82 88 72 96 47 40 82 89 56 79 27 82 39 69 59 80 96 91 57 29 76 67 76 21 81 19 66 13 94 53 37 7 41 93 26 41 33 38 55 100 4 83 10 94 36 48 82 48 66 9 15 49 99 80 58 46 82 13 58 1 93 83 31 83 34 64 34 77 24 89 42 18 57 70 33 21 54 39 91 12 75 94 48 6 90 66 78 50 82 88 34 92 44 75 32 2 68 96 17 62 71 69 15 18 78 82 76 15 93 33 99 37 29 30 36 59 73 62 23 66 91 2 65 43 56 65 1 92 24 1 89 6 64 28 100 4 90 72 91 90 14 7 26 38 12 99 38 30 16 43 84 97 82 17 18 53 65 98 33 79 62 74 58 69 62 24 1 81 32 70 66 11 88 19 9 65 53 15 12 96 53 6 10 27 91 26 71 51 75 21 14 56 20 67 25 16 35 78 31 97 19 43 44 87 56 97 36 67 72 28 50 8 40 97 17 29 51 96 48 79 29 76 2 83 36 43 62 92 43 41 78 58 40 67 65 88 36 6 7 40 25 76 19 21 64 63 71 60 93 29 66 57 72 33 31 6 45 24 30 91 83 72 65 81 5 82 82 14 34 28 7 34 82 2 23 42 80 38 1 18 51 51 5 12 22 93 80 75 70 48 30 98 92 10 45 17 72 11 11 39 63 66 12 44 4 47 61 92 2 1 59 4 3 4 65 78 14 35 42 95 96 32 18 57 9 63 52 16 31 56 11 57 63 98 42 30 16 37 38 23 26 41 22 93 30 36 67 24 36 77 36 66 65 16 44 59 62 2 96 51 49 76 88 47 50 4 24 97 30 63 7 92 56 35 60 56 32 61 79 96 17 77 90 17 89 49 26 76 18 3 49 41 1 61 80 59 83 69 11 26 84 24 34 72 73 79 8 56 95 54 91 6 58 9 22 85 31 4 80 57 12 33 51 58 68 11 27 17 84 37 2 45 34 51 78 59 24 18 77 74 88 92 61 58 65 1 31 79 14 40\n67 83", "expectedOutput": "45880", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10\n32 23 2 3 212 3 2 2 5 3\n34 54", "expectedOutput": "0", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10\n32 23 2 3 212 3 2 2 5 3\n1 5", "expectedOutput": "9", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n5\n32 4332 12324 343874 348734\n8392 16656", "expectedOutput": "1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}]}] \ No newline at end of file diff --git a/api/seeders/final_seeder.json b/api/seeders/final_seeder.json deleted file mode 100644 index 30ef35a..0000000 --- a/api/seeders/final_seeder.json +++ /dev/null @@ -1 +0,0 @@ -[{"name": "ARRRCRT", "objective": "Chef has an array of integers from 1 to N in jumbled order. Chef allows his friend to ask for subsequences of the array as many times as he requires. But, when chef gives the numbers of the subsequence, he gives it in a jumbled order. What is the minimum number of such requests his friend can make to recreate the original array", "inputFormat": ["First line contains the number of testcases, T. Second line contains an integer, N denoting the length of the array"], "outputFormat": ["Output an integer,M denoting the minimum number of request his friend needs to make"], "constraints": null, "round": 1, "sampleTestInput": ["1\n3", "1\n5"], "sampleTestOutput": ["2", "3"], "explanation": ["Making requests of subarrays [0,1] nd [1,2], the array of length 3 can be recreated", "Making request of subarrays [0,1,2], [1,2,3], [2,3,4],the array of length 5 can be recreated"], "testCases": [{"input": "1\n100000", "expectedOutput": "17", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10000000000744", "expectedOutput": "44", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n384934930430334", "expectedOutput": "49", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "expectedOutput": "660732", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "expectedOutput": "3321929", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854564564848656846846541465465484", "expectedOutput": "144625", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n237469837489327489787589475386586435876348753875983465876349574895627364823546318741827389126487635454655487326487637456325465364536453283274823749832742734874839028492374893748637564389573489758237439748326487653874798493548484512515474846513516848465415151848465415132135487998468451352516548798784513513216548979874865415132135467874845613521564856846848674541546748646541516584748451321654846854151355478468541351654849846541451564864864654165468484654684786467884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928937884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540478843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976046489465153416548978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976068468541541578843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606486454165861596826457540403314327582156399232931348229798533882278769760682645754040331432758215639923293134822979853388227876976003314327582156399232931348229798533882278769760920786159682645754040331432758215639923293134822979853388227876976085456574684564456834758647354543455784358434655435212345827584263452341453234125458647586445353445134535143355433455448657468452445324355445548347368545648486568468465414654654842374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854565746845644568347586473545434557843584346554352123458275842634523414532341254586475864453534451345351433554334554486574684524453243554455483473685456484865684684654146546548423746983748932748978758947538658643587634875387598346587634957489562736482354631874182738912648763545465548732648763745632546536453645328327482374983274273487483902849237489374863756438957348975823743974832648765387479849354848451251547484651351684846541515184846541513213548799846845135251654879878451351321654897987486541513213546787484561352156485684684867454154674864654151658474845132165484685415135547846854135165484984654145156486486465416546848465468478646788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754047884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861597884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920778843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697604648946515341654897884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606846854154157884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760648645416586159682645754040331432758215639923293134822979853388227876976068264575404033143275821563992329313482297985338822787697600331432758215639923293134822979853388227876976092078615968264575404033143275821563992329313482297985338822787697608545657468456445683475864735454345578435843465543521234582758426345234145323412545864758644535344513453514335543345544865746845244532435544554834736854564848656846846541465465484237469837489327489787589475386586435876348753875983465876349574895627364823546318741827389126487635454655487326487637456325465364536453283274823749832742734874839028492374893748637564389573489758237439748326487653874798493548484512515474846513516848465415151848465415132135487998468451352516548798784513513216548979874865415132135467874845613521564856846848674541546748646541516584748451321654846854151355478468541351654849846541451564864864654165468484654684786467884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928937884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540478843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976046489465153416548978843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976068468541541578843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606486454165861596826457540403314327582156399232931348229798533882278769760682645754040331432758215639923293134822979853388227876976003314327582156399232931348229798533882278769760920786159682645754040331432758215639923293134822979853388227876976085456574684564456834758647354543455784358434655435212345827584263452341453234125458647586445353445134535143355433455448657468452445324355445548347368545648486568468465414654654842374698374893274897875894753865864358763487538759834658763495748956273648235463187418273891264876354546554873264876374563254653645364532832748237498327427348748390284923748937486375643895734897582374397483264876538747984935484845125154748465135168484654151518484654151321354879984684513525165487987845135132165489798748654151321354678748456135215648568468486745415467486465415165847484513216548468541513554784685413516548498465414515648648646541654684846546847864678843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289378843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392077884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760464894651534165489788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760684685415415788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976064864541658615968264575404033143275821563992329313482297985338822787697606826457540403314327582156399232931348229798533882278769760033143275821563992329313482297985338822787697609207861596826457540403314327582156399232931348229798533882278769760854565746845644568347586473545434557843584346554352123458275842634523414532341254586475864453534451345351433554334554486574684524453243554455483473685456484865684684654146546548423746983748932748978758947538658643587634875387598346587634957489562736482354631874182738912648763545465548732648763745632546536453645328327482374983274273487483902849237489374863756438957348975823743974832648765387479849354848451251547484651351684846541515184846541513213548799846845135251654879878451351321654897987486541513213546787484561352156485684684867454154674864654151658474845132165484685415135547846854135165484984654145156486486465416546848465468478646788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754047884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861597884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920778843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697604648946515341654897884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697607884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760788438104058154202852304958094271627061768406214171885589787683339067183165206971476269810821173728888918286985654814294657939397130347819129693961281649220537281412948321377091444443943029792387527547512071222330825899369642244461824150607408083177759717522385008560631087706553384457776323104378030236769533045100035792049604721264613890810680566387987540478484999047794258005634325875671228095847402062784224586690829081974882942702921199153380963006069333682592416779379636998775055353923083421650582488070959654470168560850248636563361842474663661443764624078364905669605231174109524767737738723220620623000164895324613262457118590848722773025057390221670872794408236377529875855661234756474610635440731155868359583408857722094679003627236474021978847083228564666446238210971450024237923778208893163287339273545087549029551284602637669223381184578794946541719030858969542341837373197094429395444399634863396891466577300937692893920786159682645754040331432758215639923293134822979853388227876976078843810405815420285230495809427162706176840621417188558978768333906718316520697147626981082117372888891828698565481429465793939713034781912969396128164922053728141294832137709144444394302979238752754751207122233082589936964224446182415060740808317775971752238500856063108770655338445777632310437803023676953304510003579204960472126461389081068056638798754047848499904779425800563432587567122809584740206278422458669082908197488294270292119915338096300606933368259241677937963699877505535392308342165058248807095965447016856085024863656336184247466366144376462407836490566960523117410952476773773872322062062300016489532461326245711859084872277302505739022167087279440823637752987585566123475647461063544073115586835958340885772209467900362723647402197884708322856466644623821097145002423792377820889316328733927354508754902955128460263766922338118457879494654171903085896954234183737319709442939544439963486339689146657730093769289392078615968264575404033143275821563992329313482297985338822787697606846854154157884381040581542028523049580942716270617684062141718855897876833390671831652069714762698108211737288889182869856548142946579393971303478191296939612816492205372814129483213770914444439430297923875275475120712223308258993696422444618241506074080831777597175223850085606310877065533844577763231043780302367695330451000357920496047212646138908106805663879875404784849990477942580056343258756712280958474020627842245866908290819748829427029211991533809630060693336825924167793796369987750553539230834216505824880709596544701685608502486365633618424746636614437646240783649056696052311741095247677377387232206206230001648953246132624571185908487227730250573902216708727944082363775298758556612347564746106354407311558683595834088577220946790036272364740219788470832285646664462382109714500242379237782088931632873392735450875490295512846026376692233811845787949465417190308589695423418373731970944293954443996348633968914665773009376928939207861596826457540403314327582156399232931348229798533882278769760648645416586159682645754040331432758215639923293134822979853388227876976068264575404033143275821563992329313482297985338822787697600331432758215639923293134822979853388227876976092078615968264575404033143275821563992329313482297985338822787697608545657468456445683475864735454345578435843465543521234582758426345234145323412545864758644535344513453514335543345544865746845244532435544554834736854564848656846846541465465484", "expectedOutput": "870649", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "STRRCRT", "objective": "Chef has two strings S1 and S2 both made up of alphabets from the word COOKOFF(C,O,K,F). He wants to know whether he can create any permutation of S1 by joining various permutations of S2 together.", "inputFormat": ["The first line contains the number of test cases(T)", "For each testcase, the next 2 lines contain two strings, S1 and S2 respectively"], "outputFormat": ["Output \"YES\" if chef can create any permutation of S1 by joining various permutations of S2 together. Output \"NO\" otherwise"], "constraints": null, "round": 0, "sampleTestInput": ["CFKOCCKFOOKF\nCFOK", "CCOKF\nCOKF"], "sampleTestOutput": ["Yes", "No"], "explanation": ["One of the permutation of S1 (\"COKFKFCOCKOF\") can be made by joining permutations of S2( \"COKF\",\"KFCO\",\"CKOF\") together.", "No permutations of the first string can be made by adding permutations of second string"], "testCases": [{"input": "1\nCKFOCCOFKKOF\nCOKF", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\nCCOKF\nCOKF", "expectedOutput": "No", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\nCCOKF\nCO", "expectedOutput": "No", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\nCFKFOOFOFKCCCCCKOOCKCFFFOFCFKCKKCCOFKOOCKOCCOCFFKCFOCFCCCCKKFOCFOOOFFOFOFOKOOCKKFOOCCOKCOKFOKCFKFCFKKKKCFKOKFCKCKFCOKOOKOCKKOKKCKKKFKOKKKOKOOFOKCFCOCOFFFCFOFOCOFOOOOKCFOOFCFOOFCOKFKFCCOFCKOCCFCOCOCOKFOOOCCCCKCFOCCOCOCOOCCKOFKOCOFCKOFKCFFOFCCFOOFCKKFKKFCFKFKOCOFOCFKOOFOKCOCKFFOKKKOFFCCOFFCCCCKOOKCCKKFKCCOFOOCKFKKFFCFKOFCOCCCKKFOOCKKKFOOFCOFOFOOOFKCOOFKOOKOKFFOKKCCCFOOFCOOOFOKKKOKOFOCCCFOFOCOOCCOOKKFCKFFFFFFFFFOOCKFOFOOFOCKKCKKCOOOOKOKCOCFOCFOOKOCCKFCOKOCCFCFCFOFFFKKFCFCFCKOFFKFFFFKOFKCFKOOFFKCKOOCFFKOKFCCFCCKOFKOOCCFFOCFCOCOFKCKKCCFCFCFFOOFCOFCCOKKFKOOKOFOCFOCOKKKFOOFOCKFFKCKCCCCKKFCOKFKOOOOKFKOFFOCCCKCOOOCFOFKKCKFKFCKFCFFFKKKCFCOOFFCFCCCFFOKFKFCOCKOFCKFOOFFKKOFOOKKKCOFFKFOFFCKOCFCOOCKOCKKKFOCFOCCFOFOCFCKOFKOOOFOOKFFFCOKFKCKFFOKCFOFOKCCKCCFFOKOCFKKCOOKCFOOCCOFKOKOFFFCFOKFKKFKCCKFKFCKKOKOOCOFCCOOFFKFOOOOCCKOKOOOOCCCCOFKOOCCKOFFCFKFKKCKOOOFCOCCKCCKCCOKKCKCCFKCKCCFCFKKOFOKKCCFKOOKOCOOCKKOCOCOCOKKFFCCFKKCCOOOFOKCCCCKKFOKFKOOFKFCOKKKFFKFOOOFCKFKKOFKCKCOKOCFKKFOCFOCOKOOOOOFCOOOOOOOOOFFKKOCKOFCFOOCOCOOCOKOOKFKKCKFKKKKKOOOKKKFFCFFOCFKCKCCFKCFCOKCOCFFCKOOFKKOOOKOCFKKOOKFCKFKOOOCCOFKCOOCFCKKOKCOKOCFKKCCKKCCOOKKCFKKOOCOCOKCKOFCCFKCOCOOFCCFFFFOCFOCOFCFCOOCFKKFKCKFFKFOFFKKCCKOFFFKFFCOFKFFOCKFKKCFFOOOOKCCFKCCOCKCKOFCFOKFFFFCKOFOKKFOFKFKKOKOCKFCCCFCOCOKKFKKKCCKCFFKKKKOOFOCCFOCKOFFOOFFKOKKKFKKFCFFOFCKCKOFOFCOCCFFKFFOOKFFKKKKOFFOKFCKFFCOKKOFCCFCKKOKKOFOKKOOFCCOOKFFCKKOOOOKFFFCOKOKFFOFKFKKKKCOOOOOKKOCCCOOOFFCKKFFOFFOOCOKOOOKFOCCOKOFKFKKKKCFKKCKFKFKOFCCFOOCOCKCOKKCOOOFCCCKOFOFKOFFFKCFKOCOFFOFKFKFOKCFCOCOOCFFFFCCOKFFFKCCFCKCOCCCKCCOOFFOKCCFCKCOFFOFFFOFKFCOFFCKFKCOOKKOOCOFOFCCKFOOCKKFCOOCFOKKFCFFOOFKOCOCOFKFKKFKOOFKFKOFCKFKFOKCOOCCCOCFFOCKCCCKKFFCKKFKKCKCKCKOOOKFOOKKFKKKKKOOFKKKFKFOOCFOCFCOFCCKKOFKKCCKFCKFOCKOOKKKFKOKOFFFKOOKCKKCOOKOCKOOKCFKKOCCCFCOFOOOFFFCFOOOFFFFCKCFCKCKFCKKKKCKCOOCFCCCOOOOKOOKOKOCOFOFKFFKOFOCCFOCCFCFCOOKFCOFCOOFFOFKKKKFFFFFFOKOCKFOCFOFOOFOFFOFFOFOFCKFCFKCOFFOFFKFOFKFCKCCCOOKCFCKCOFKCCFKOFOCOFCCOOFFKFFOFFFKCFOFOCFCFCCFCOCCCKOFFKCKCFCFCCOOKFCCFCOFFFFCFFFCCKFCCCFKKFCOOKCFCKCFOKOOKCKFKFKKOCKFFOCFKCKCKOKKKOCCCCCFCFOKKOOCFOFOFFOCFFOCFFKFKKKOCOFFFCCKOFOFKKOOCCKOKOFOCOFFOFCKFOFOFFKOFKFCFKCKOOCOKOCKCFCCKKCKFKFFKOKFKCFCFKCOFFCKKKKFOFOKCCFCFCCOKKCKCOKCKKKCKCKFOOOCOCFOFKKFCKKFOKOOKOOKFCFCFFCKKOCKKKCFOFCKOCCCFOOFCKCOOCFOOOOFCFKKKOOFFCCFOFKFCOOOOCFFKCOOCOFOOOFOCOFOOKKCFFKCKFOKFFKFFKKKKFFKOOKKCFFOKCCKOCOOCCCKFKKCCFCFFFOCOFKKOFFKKCKOOFKOFCKCCKFKCOOOKFKKOKKCCOKKOFKKOKCCCFOKKCCCKKOFFFOFOCKKFOOOKKCFOKKOKKFCOFCKKOKFKOKOOFKKCOKFCFKCKCCCFCFKOOOKKKOOFOOKKFKOCKOFOKKOKKOCFKCCOFFOKOKKOKOKKKCFKCCFCCFFOKKFCFFOCFCCCOOKOOOFOFCKFCCKKFFOOCOFKCKKOCOOKCFCFKKKKOFOCCCKFFOCOOKCKKFOKFKFKCOKFOFOOFOOOOCKFCKKFFFCOFOCKOKCKKCFKCCOFFKCCFOOKKKCCFKKOFKCCFCFFFKFFOKFKKCFCFCOKOKCFKCKKCKFOCKCCOKKOCFKCCKCKOCCKKOKOCFOOOOOCCFCCFCOOOOOOKOFOKFOKCFCOOCKCOFFOFFFKOOFKOCCOOFOKKOKKCKFOCCFCFCKCCOFFCFFCKCOCFFFOKOOKCKFCKKFKKKKKKKCKFKFKCOCFFCCOFOCKFCFOCKOKKFKKFOOCKCOCFFCOKCOCCOFOFCCKKCKFOFOKFOOKCFOKKKCCFFCCKFKCOKFKOOFKCCOFFKFFFCFFOOFCKFFOCCOOKOCFCKOFOFOCCCCOFCKFOOKCOFCFOOOKKOFFFOOOFKKOFKKKFCCFFOCFFCKFOCOCCFOOOCOKFCOFCCKKCKKOCOFKOKCOOCFKOFCKCOKOFKFOCCCFCFKKFOCKKFCKOKOFKKFCCCCKFOCKKCCCCFFCOCKKFCCCCCOOOFOCCCKFCOKCKOCCFKFFKCKCCKCFKKFOKOKCCKOFKFCKFFFCOCFFKCCCOKKKCFFOCCOFOOCFCOOOFFKCKOFKFCOCOCFKFOOFCFKKFKFFCCFKFOFFFFCOKFKKOCKKOCCKKFOFCCFFCOFCKKCOKCOOFFCOFKCKOOFFOKKFOKFOKFKOKOCCKFFOCKKFCKKKFOOKOOFFCOFOOCKCKCKFFFKOFOOCFOKKKKOCOOCKCKFKKKFCFCKFOKOKCFKOKFOCOFFFKFFKOOFOOKOKKCOOKCFKFFCCFKFFOOOOOOCCKOOFCOKOOCKKOKKFFCKCFKOFKOKOKCOKCKKKOKKCCOOKCCCCFOFOCCFFFFCKKFFOKCKOKOFOKCKOOOFCFFKKKKOCKCCOCCKKFOFOKFOCFOKKFCOOOKCFFKOCFCFKOKCFKKFFKCOCCCOOCFCCFKFCKFKCOCKFKFKCFKFKOKFCOKCCKFFKOFFCKOKOOKFCCCKKOOOKCFOFCFFFKOKOCKKCCCFCKOOKFFOCFKCCKOOKFFKOFFOFKOCFFOCCOFCKFKKCKFKCKCKKOOOFOKCOOFOFCCFCCKOFCFCCKKFOCOOFKKOOCCCKFCFOKCCOCKFCFFKFOFCFOKKCOFKOKOKCKKOFKCOCCFOFOFKOOFKKFCOKKFOOKFOCFKKFOKOCKCKCKOOOKFKFOKFOKFFKKKFCKFFCFFFFCOOCFFFFKCOFFOFOFKOOKKCFKOCOFCFFKCCKCFKOOCKFOFFOFKFCFCCFFCFFOCCKKFOKFKKKCOFCOKCOKCFCKFKKOFKCOFOOKOKFFOKCCCFFOCOCCCOKOFOCOCKCFCKOOOCFOKKFOOCFKFFCFKCOCKKFOCKCCFFFCFOCOCCOOOFCKKFKCCKOKOCKFCKOCOKOCOFKCFCCOOKKCCKCFOOCOCFFCCOFKKFOKOFCOFOOOKFFFKFOFFFOOFCCCCOKCFKKKOOFKFCOCOFOFKFFFCFCCKKKOFCOOOCFCOOKFKCCCCFOKFKCFFFKOOOFKCCKKCCCOKOOCFOKKOOOKKOFFOOOOKOFFFKKOFCCKCFCCCCKCKCOOFKCCKFCFOOFCFFCOCOKCOKFKOCOFFOFCKFKCOCCFCCOOOKKCCFKKFOCFKOCOKOOCFFKFOKKFKCOFFFFCOOOKKKKKCCKOOKFFOOCOKOKOOFCOOOOKOFOCKFKKOCFCOOCCKKKOFOOOKOKOKOCOFKOCOFFOKKCKCCOOFKKOFFFKCCFOOKKKCCOKKKFKOOKFFFOFKFKFOKKCCFFFKKKCFCKFCOOCKOFKCFOCKCOFCOFOKOFCKKKOOFOOOCOCKCFKFFOKOCOFOFFKFFOOFKCKKCOFKFOFFFKFOKOCFKFFCOFCFOKCFFOFCFFCKCCOFCOKOKFOCCKOKFCOCOCCCOOFCOOCFOCKFCKOOCOKFCKOKCFKFOFFKKCKOOFFCKCKCKOCOOFCFKCFFCFFKCCFKOKCFKCKOCFFOFCOCCOFCCOCKCKOKKCFFFFCKKCKKCFFCKOOCKFOKFCFCCCKCCFFOCKKOCOCKCCFOOKCKKOOOCOCOFKCKCCOCOFFCOCKKKFCFCCFOCOCFKCCOOFKFKOKOFOFKKCFKCOCKCOKCOCCOFKCKKOKOFFFOFFCOFCCCFCKKCKCCFOOFFOFOOOFFFKKKFKKOOKOFKKCOCKOOKFKFCCFOOCCKOKOCKFFKOFCKOKCFCOKOCFCKKCCKCOKFOCFOCCKCOKOFOCKCOCKCOFKFKFCCKCFKFOOCOCOFOOFFOOCKCOKOFKOOFOKKFFCOKCFOOKCCKOKOFFCCFFKFCFKOOCCCCCCOCKOFOFFCKOKCOCCOCKKCFKFKKFFCOKKCCKCFFCCKKOFCFOKFFCCOOOCCCOOOFFCFOFKFOKKOOCFOFOOKKKKCKCOOFCFKOKCCCCCCFKCOFFCCFCCOOCCOOOKOCKKFOFKKFFKFOOFKFKKOKFCKKKOOOKCFCCOKKFFOCFFFKFCFCCFKOCKFOKOCFOCFFCFKOFOKOKOKOCFFOCCCCKOFCKOCFFFOFOCOFKFOCOOFOFFCFKOOKCFCKOKKCOKFOCOFOOCOKFCCKCFKFKOOOKCOKFKFFFOCFFOOKFCOOCCKOKKFFCKKFFKKCCFOOKFCFOFOFCOKOOKOOFCKOOCCKFFOCOOCCCKCFCOKOOCCFCOOCOFFOCOCOFKKKOFKCKFKKCOCKOFFOKFFOKOCFCOKKOFCCKOOFFKKFOCCKCKKKKFCKFFFFKKKKCCFFOKCOFOKKKOCCKOCOFOKFCOCFOFOFCKOFOFFKCCCFKOFOKOFKFKOOKKCFCOCOCFCOKFCCKOCCFKOOOCKFFCCFCCOCCKOFKKFKKKKFOOOOOFFCCFFCOFKOKCOFFOOFKKCCCOFCFCOKFCOOOCCFFFFKOOFFKFFCOFOKCOKKOOOKOKOFCCKKOFOFCFFFCOKOKOKCCCKCCFCKCOCCCFCFFFOFFOKCCOKFFOCKCKKCOCCKOOKFKOOOKCOKKKKOKOOOFFCCFCFKKCCOFOCOCFOCKKKOOFFOCFOKFOFCKFCOFKKKFKKOKKFFCFCKOKKKFFOOCKOOFKOOFOFKFKKCKFOKOKKFFCKOCKFKKKFKCKFOKKOKFOOCCOOOCOOCFKKKKOCCCCKKOOKCCFCOKKOCFCOCFKKCFFKOFKKCOFFFCCOFOCFKCCKKCCCCCKOKCFCOFFOCKKCOCFFOFCOFFKCKKKCFOFCFCKKOCCFFCOKOCFCOOKKCKOKOKFOKCCCFFOOKKCOKCCCKKFKOKOOCOCOOOKFKCKOKFKFCFFKFKOCKFOCKKFKCCKCCKOOCFOFOKCOFFKCOFCCKFCCCCOCFCFKFCFOOKKOCOOKOKFOFCFKFOKKOOCOKCFOCOCCKOCFFCKOKFCFCKFOCFCFKFOFKKKOOOOFCKFCOKFKCKCCOOCKCCKCCCOKFKKOFOOFOKOFFFOFFCCCFFCFCCCKKCKFCOFFCKFKKKFCFFCKFOFOFCCOOCKOFOCCKOKFCCFCCOOKCFCFFKOOKFCCCCFFOCKOKKCCKFCKCOFOFKOOKOFCCOKKFOOCKCFCCKOFKFFOFOCKOCKFKFFKOKKCFOOFFCOOOFCFKFKCCCKKFFKFFCKCKCFFKCFOOCFOCKOFOFCFOKFOCOCCOFCFOKOKKFFCKKCOOOCCFKKFOOFKOCCKCKKKOOFFOFCFKCOKCKCCCFKFKKOKCFKKFFFKKCOOFOFKKOKOCOOCFCCKFKCOFOKCKFFKOOCOOCOFOFOCCOKCFCCKFFCFKKKOOOCKOCCKKKFFCKFOCCKCOOKFCCCOFOCCCFCFOCOKOFOKOOOOKCKOFCFFKKOKKKOFCOKCOCKCKKOFKOOOOOFKCOCKCFCFKKCCFKKOKCOKOFKFCFKFOFKCKKCFFCCFFCFKCCFKFKCKOOFKCFFFCKFCCCCOCKKFOOCCFKOOCKKKFOFOCFFKOFKOCOFFKFCCOCOOKFKKOKCCKFKOKOFKOOFCOKOKFFKOFKOCKOFCKFFOKKOCOKCFCCCFFCCFFFKCFFOKCFKCFFKFFCFOCOCCCKCFFCFOKCFCCOOKFCKKKKCFOKKCCKFCOKCKKCOOOFFFCOFCKOOCFOOFCKKKOOCKFCFOCKKFFOKKOCCOFOFFKFCFCFOKKFFKKFFOKOFCFFFKCCFCOOCCCFOOOFCOCKOFCOKOFKOFCOCKFOFOOOCOOOCKFFFOOKOCCCCCFOOCFOCKCFOOCFFCOFFOKFKKCOFOFFOFOKOOOCKFOOFFFKKOCKKCKCFKCKKFOOKOKCCCKOCKCFOKOCOKCOCOKCFCKOOOFKKCKOCFKOCCKKFKKFFFFKFCFCKKCFFFKCKFOFKCOCOFCCCOCCOKKOOCCFOCFKCFFCCCCCOOCFFKCKKOCKFCOOCKOCFKCCOKCOCKFOKKOCOCFCCOFOOKOCCOKOOCOCKKFOFCKOOOCOCOKOFCCFOFCOCKCCKKCCOKOCFCCKFCOFKCOOCFCKFFOKOFCOKOKOKKKOKOFFKOCOOFKFOCOFFFFFFCFOFFCOFOKCCFOCCKOCCCKKFKFFKKKCFFKFKFFKKOOCFOOKCKFFKKFFFFFFKCCFKKOCKCCKOKOFKFOKCCFFCCCKCCOFOFOFKKKFKKCCKCFCCOKCCFCFFOFKKCCCKKKOFFOFFKFOKKOKCCOFKCCFKKOOCOCOOOFFKFFFCKKOFFCOCKKKCCCCFFFKCFCCFCCFFOKOKOOKKKCFFCFCKOCKKKOFOCOKOOFKFOKOKFCOCCOCOKKOCKFKOOFOCCOCFKOFCKKFKKKOKFCOKOOOOKFCFCCOKKFCFKKOOFKCKKFFOCCKFFKCKCCCKFFCOKOCFCKOKCOCKKCKOOOCFCCOOFFCFKCFFFCFKOFCCOOKOOFCKKOCCFOOCKKOCFKCFOCOKKKFCKOFOCFCCKOKKFCKCCOKFOFCFKFCOCKFFOOCKFFCOFKOFKOOCFFOOOOOOOFKCFCCCOOOFCFCKFKKOFCFCCOKOCOOOOFKFKFKFOKOFFKCFFCKKKKFFCKKOCKCFFFCKOKFCOFCOFOFOFCKOOFCKFKFOFKOOFFFKFOKCFOKOFKCOOOKCCKCFKFFKFKOOOCKCCFKFFCCCCKKOCCFCKCFKCOOCOKFFOCKKOFCOKKOFCKFCOKFOOOKOCCCCOCCFCKKFOOFCCKFFCKFCKKFOOOFFCCKOKOOFOFFFFFOFCKCKKOCOCOFCKKCKKCFOFFOCFFFKCOFOKFOCCKOCOKOFOKFKFOCKCFCKKFFCFOCCKCKCKFCCFKCCOKFCFCCFOOFFOCFKCKKFFOOCFCKKFOKFKCOFCCFCKCFFFFOFCCCOKKFOOKOFOKFOKKCFOFOFOFKKOFFKKOCFOCKOOFKOOKFCKCCKCCCFKCCCKCFFFFOOKKOCFCOFCKOKKCKKKOFKKKCKFKKFCKKCCFKOKFCOFKOCKCOFCOOKKCKKCKKOCKKFFCOKKKFCFFKOKCKCCCOKFCOKCKKKFOKKKKOKOCCKCKOFCFCCKCFOCFFFKFKCKFCKKOKKKFKKKCOKFOFKFKKOOKFKCFKKOKCOCKFFKOFKKCCKOCCFFCOKOOOOCFKKFKKCCFCOKCKKOCCKCCFCKCOCKKKFCFCCCFKKCOOKFOOFOFOKKFOCFCKKKFFKOOFKCOOFOKCCFOCFOFFKFKFKFKKKCOFKKOKKFCOFOOCCOKFOFCKCOFKFCOCOKKOFOKCOOOKOFFFKFFKOKOCCFFFOFKCFFCKFFCFKCOKFCKFOOCKFOOOOCCCFOKKCCFOCOOKKKOCKKFFKCOKKFOKOKOCFCFCFCKFOKOKFOOFOCFOKOCFOCFKFKFOOCFCKKKCCFCKFKKFCKKOOOOFCFOFCFFFCOKFKFOFKFCFOOCFCCKKFFOCOCOOFCCKOCFFFKOFOKOFCOKFKKCFKCFCOFOCKFCCCKKFKFCOFOOOFCFCKKOFCCOOOFKCKKKKFOCOCFOCCFFOFFCFKCKKFKOCKCFKFOFKOFCOCCFOCFKFCFOCFCFKFKOOFFOCCKCOFOFKKOOFFCCOCOFOCFCCKFFOFOCOOFOKFOOKKCOFFFKFKCKOOFCCKFOFKCFOKKCFKOOCFCKFCFCKCCFFOCCKFCCCCCCFCCFFKCCCFOKOKOFFFCOOKCOOFOFCFCOFFFOOFOKCCKKKCCOOKKKOFOFOOOKKKCKCCOFOFFKKCKFOFFOOKOOFOCOFOCCOOFOOFCOCOOKFFFOKFKCKOCKKOCKCKFOKCOOCFKOKFKKKOOKFCCCCOFKOCOCKOCOOCKCOOCKKOOOCCOCCOFOOOKFOOKFKOFCOOCCKCKOFFCKFOFCKKKKOFOOCKOCKOOCKFKOCFFKCKCOCCFFKFCKCFCCKFFFCCOFKCOOCFCCOCKOKOFCOOOCKKCFKOCOFCOOOKKFFOFFKKOFOKKCKOFCFKOKKKOFCKFCOOFFKKKKKCCKFCFFKKKOOKCCFOCOKCFCCKFOKCKCOFOKKFOKKFKFFOOFFKOKOKFFOCFCKOFOOFOCFCFCOOCKFCKCCKCCOCCCFCKOKCCCFCKKFKOOFFKCKCCOFKKFFCCOKOCFKFCFKFOOKOOCOOFFOCCCCCFCFCOOKFKFOOCFCCCCKOOFKKFCOKCKKOOCOOOCOFFCFKFFOOCCKCKOKOKFOCFOKCFFKFCOOCKKKOKFOKOOCKKFCOFKCFKCOFOFFOOCKFFKFFKFKFCFFFOFFCOOCCFOFOCOCOOFFFCKOCOKFOCFKCCFOKCCOCCKOOOCCFFOOOKKFKCFFFCKFCFOCOFKFCFFOKOFCCKFFKOFOKKOOFKFFOCCCFFKCKFCKCKKKCFFFOFKFOFCKCKFOOCFKCOOFOCCKOKKFKFOCOCFCCCFOKKCOCKFCCKCFCFCFOCKCKOFKFFKCCCCCKOKOFKCFCOCOOFOCFKKFFCCKOKFOOFFFFFOKFOKCKCFKCFCOKFOOOFFCCCCCOCOFCFFKKFKKKOKOFKCOKCCOOKKOOKFKKOCFCKCOOFKCCKKOFKCFCKCCCCCOFCOCCOFFFFKKFKCFCKCKKKOCCOKKCKKOCFCFOOOKOFKCFOCCFOFFCOKCKCKCOKOCCCCCCCFFFKOOCKFFFFCOOOCKFCFFKKCFKCCKOOOCKFKCCOFFOKCOKFOCFKFCOCCKKOOOFOKOCOKFCCKFOKOKFKCCFOFCFFCCFFOOKOOCOCFOFOCCCFFKOCKKKCFKKCFOCFOKCCCKFKFOKKFFFOKOOOKCCKCKOOOFKCKOOFKKCFCCCKKFFCCKKOKKFOKOCOKFOFFOCKFCCCCFCOFFFKKFKOKKOFCCKKCFOKCFCOCCKFCCCKOCKOKOFCOFKOKCCKFFCCFKOCOFOOOCCFKCKOFFFFKFKFFOCCCCFOFFCCFKCOCOFFFCKFCCOCCKKCFFOFKCKKKFCOKOCCFCKCKFOOFOOKOFOFOCFKOKFFOCFFFKCOKFCFCKFFOCKF\nCKOF", "expectedOutput": "Yes", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\nCCFFFOKKOKFCKCOKKFCCOCOOKCKKFOKKFKFFCOFOFKFOFFCKOFOFOOFFKFCCCKFOFCFCCCKKKKCOFOKCKCCOOFKCKCKOCOOKKCCKCKCCFFOOFCKFOCOOKCOFFFOFOOOCKOCCOFOCFKFOOOCCFFFCKCOFKKKFCFFKCFOCFOCKCOOKFOKCKKKOFCFOOKKFFFKOFOOCKKOFKOKKFFCOCCKFFCKKFKCCFOOKOCOOOOOCCCKOFKOKOFCOCCKFCKCFFFFOOOKKKCFOCOKOOFOCOFOFKKOKCKCKFCFFCKFCCCOKFOOOOOCFOFOFCOFCOOFFKFFOKKOFFFFCCCCOFOCFCKKFOFKKKKOCOOOKFOKFKOFOKKKOKKFOOKKFOOKCCKCFCFKFCKFCCFFCCFKFOCCOOKFKOFCFFKCOOCKOOFOFFFFKFKCOKKCKOCCFCFFKFCFCFFKKKFOKKFCKKKKCOCOFFCOCOCCKCCKCOCCCCCOKKFFOFOCFCFFCFOCOCKOCKFCKCCFCCKFKCKKFCOKCFOKCFCCOCKOCOCKOOCFOFOCKCKKCFOOOCKCCFKKFCKOFFOCOCFKFCCOOCOOKFFCFCFKKKCOKCKOOCCOCOKFCKFFKKOFKFFFOCCFOOKFOCCOKFKKCCCCOKFCCKOKKCCKOOKOKFCFOKOFFOCKCKKCCKFKOKOOKCCFOKKKFFOFKFOKKCFOFFKOCCCCCKFOFOCFFCOCOFKCOKFOFCFCFCCKOKOFKCFKOOCCFCCFOFKOFOKCKOOOFKOKKOOFCOCFFKKCOOKCOCKFOFCOOKKOKOKKOOCCKFOOFFCFKOFCFFKKCCOKKFKFCOKCFCFOOCOCFCKKFFOFFFCKFOCOFCCFKCOOOKCOKKKOFOCFFOFKKOKKFKOFCOOCFFKOCFKFFCOFKCKOCFKCKFCFOKCKKCFCCKOCKFCFOOCFCOFFOCKOKKOKFOKKKOOKFFKKOF\nCOFOOOKKCFCOOCCCKOKCOOKFOKCOOOCCKCCOFCKKFOOCKCKCOOCKOOOKOFFKFCFKOFOOCFFOOOKCOOFFFKOCCKOCKCKKOOFKKKKOFKFKKOKOOCKOFOKCCOOKCOCOOCOCFFOCOFFFOOOFOCOCKKKOCFFOCOFFKCOCCFCKOCFFOFKKKFOFOCCFKOCKKFCFFKCKCFKKOCKKOKCCKFKFFKFFCKOOKKKKKKKOKFKCCCFKOFOCOFKCFCKCCFOCFFFCKOOKFOKFKFFFCFKKFFCKCFKCKOOOFCKKFFCFCCOFOFFCCFOKFCCFFCFFOFFFFFCCFCKCCCFKOKFCOCOKKCCKCKKOFOCF", "expectedOutput": "No", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "ORDER", "objective": "Chef 1 and 2 work in a restaurant together. They both have decided to take part in the CookOff 7.0. Before they can leave, they need to finish K pending orders. Each order has N items which takes different amount of times(T1,T2....Tn) to prepare. Both of them decide to split each order in such a way that the difference between each other's time is minimised. Only after one of them is done with their share of the work, they can move to the next order. This way, both of them try to get the work done as close together as possible. Help them in splitting their works accordingly", "inputFormat": ["-Line 1 contains number of testcases, T -For each testcase, Line 1 contains two integer K, N representing the number of orders and number of items in each order -Next K lines contain N space separated integers representing the preparation time for each item"], "outputFormat": ["Output an integer, Tmin representing the minimum time difference between when both of them finish their work"], "constraints": ["1"], "round": 1, "sampleTestInput": ["1\n2 2\n1 2\n3 4", "1\n3 3\n1 2 3\n4 2 6\n7 6 14"], "samepleTestOutput": ["0", "1"], "explanation": ["Chef 1 can take order (0,0) and (1,1) and finish his work in 5 mins. Similarly Chef 2 can take order (0,1) and (1,0) and finish the work in 5 mins as well. Hence the difference is 5 - 5 = 0", "Chef 1 can take order (0,0), (0,1), (1.0), (1,1), (2,0) and (2,1) and finish his work in 22 mins. Similarly Chef 2 can take order (0,2), (1,2) and (2,2) and finish the work in 23 mins. Hence the difference is 23 - 22 = 1"], "testCases": [{"input": "1\n2 4\n4 2 4 5\n5 2 6 1", "expectedOutput": "1", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n3 3\n4 2 4\n2 4 3\n2 4 1", "expectedOutput": "0", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n7 7\n1 3 2 5 4 6 3\n2 7 4 9 3 8 6\n13 23 1 5 33 6 7\n2 6 2 6 3 11 5\n6 4 3 5 3 25 5\n6 43 5 3 5 3 5\n3 5 3 5 3 5 7", "expectedOutput": "12", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10 10\n785 138 177 439 591 955 950 30 220 236\n421 914 56 311 357 931 512 529 818 896\n422 913 191 232 586 979 243 163 916 201\n974 511 64 287 624 948 822 839 551 855\n576 251 712 594 734 891 318 410 67 54\n868 95 42 288 862 709 558 297 119 395\n331 316 341 237 831 995 713 334 91 312\n646 339 763 726 477 665 378 952 372 733\n389 600 504 515 982 789 852 990 698 524\n852 238 286 454 802 565 216 477 14 585", "expectedOutput": "1", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n20 20\n269 950 540 688 782 907 920 206 503 405 318 383 833 251 266 479 117 827 509 630\n224 212 159 380 703 777 152 840 320 48 375 323 287 776 364 927 641 628 63 542\n67 533 940 507 39 104 994 216 607 388 642 686 574 262 804 582 856 764 707 15\n627 906 720 41 686 549 177 806 493 597 866 490 674 479 47 879 742 91 338 764\n148 576 784 823 415 726 653 971 512 46 613 95 374 657 392 133 770 739 399 274\n120 3 464 756 244 145 504 735 131 188 603 870 925 323 338 160 554 885 431 455\n978 803 60 675 94 624 387 166 833 704 171 694 312 639 36 486 770 377 761 495\n333 590 528 842 643 439 931 59 527 606 694 239 207 149 446 790 12 37 825 963\n362 678 553 226 551 953 360 800 142 891 633 445 707 952 403 976 390 243 890 441\n777 557 568 288 406 716 237 911 675 571 246 23 153 9 531 273 434 640 174 951\n830 321 324 250 706 711 988 961 82 561 318 527 655 214 578 794 925 867 987 659\n882 735 325 879 235 667 644 161 685 576 529 324 640 973 986 756 976 231 607 609\n782 893 678 893 988 3 808 283 414 395 766 846 297 828 190 632 549 630 620 343\n66 865 642 267 660 97 757 668 421 186 689 441 954 124 132 553 332 413 464 315\n493 821 657 661 672 112 29 136 838 77 426 126 620 302 119 197 150 347 348 817\n286 511 110 872 807 432 287 122 816 232 786 39 522 254 32 142 601 710 619 550\n21 757 250 92 491 684 982 888 131 608 883 579 496 209 592 38 379 629 308 374\n258 651 329 209 214 700 528 177 300 211 772 982 228 169 979 742 693 70 682 498\n462 424 102 794 986 839 102 342 966 248 915 343 787 681 121 324 916 712 610 602\n547 775 18 418 143 943 138 781 345 84 990 86 122 33 49 258 644 809 217 765", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n30 30\n87 51 66 33 38 64 22 97 36 65 47 68 97 5 28 29 94 89 87 81 33 28 69 43 43 58 2 23 44 57\n77 52 82 78 72 81 68 67 21 91 62 66 41 1 53 58 95 21 76 57 86 20 67 73 47 42 27 24 72 98\n72 48 77 53 16 47 50 29 47 30 58 77 23 58 12 23 31 97 49 72 90 19 32 42 74 14 99 68 79 57\n25 66 38 26 42 83 91 15 28 39 76 98 21 62 8 43 2 89 81 9 10 42 74 10 40 34 38 50 54 79\n26 9 4 65 55 75 31 36 47 22 42 3 34 62 39 17 1 50 1 8 3 71 88 44 12 29 21 83 90 84\n69 79 53 57 38 52 84 70 80 65 77 28 99 92 39 89 93 38 18 58 95 12 51 57 15 10 7 16 77 48\n95 93 85 70 16 39 82 31 45 77 37 34 13 57 13 72 48 70 56 18 4 3 11 79 89 38 48 85 1 4\n32 55 54 21 2 10 64 45 63 39 38 16 51 100 57 40 95 6 49 58 34 1 69 99 32 22 56 85 18 50\n20 28 11 7 64 33 17 56 72 31 22 1 3 90 80 19 87 43 79 11 16 38 43 89 27 29 90 91 4 1\n35 38 92 20 73 89 31 49 95 60 8 83 6 6 29 12 32 65 43 99 99 22 28 26 71 19 47 98 48 92\n33 65 75 1 7 49 34 24 33 72 2 61 75 23 21 76 27 65 71 7 72 65 42 56 44 100 13 44 58 60\n10 33 28 49 89 61 67 9 80 55 19 57 28 53 70 40 46 97 98 64 50 62 21 57 13 98 59 14 18 49\n2 17 86 62 10 74 93 72 51 68 87 21 57 28 78 1 27 45 67 24 93 87 89 9 43 68 39 75 13 100\n3 71 94 84 9 2 4 82 23 9 10 58 66 65 50 77 28 29 80 12 87 13 20 48 74 73 21 18 27 31\n99 19 86 17 9 96 96 14 83 62 53 46 10 56 100 94 19 55 3 67 3 27 22 82 61 94 64 98 12 2\n37 21 100 38 96 19 14 2 34 42 29 8 62 81 24 20 26 3 74 48 82 2 21 96 30 94 6 34 69 49\n35 85 30 44 93 67 99 4 65 46 83 3 84 43 92 31 63 17 23 15 30 15 15 65 81 91 92 47 55 12\n50 68 44 18 56 61 43 77 44 74 81 23 13 28 18 48 61 25 11 11 66 28 20 84 72 86 40 44 43 65\n76 50 74 18 46 57 76 1 29 43 45 48 60 76 81 95 55 12 62 44 20 94 30 35 32 76 32 57 8 19\n68 67 32 39 82 57 43 34 97 6 78 59 93 86 48 55 1 63 87 59 2 78 81 62 8 73 68 35 36 57\n6 84 39 80 86 13 10 19 99 36 53 79 60 39 95 86 52 90 100 3 52 89 4 87 17 50 78 66 21 78\n41 18 89 34 13 100 40 81 80 91 85 63 80 13 100 81 81 70 87 98 97 31 97 75 38 39 27 97 48 71\n13 1 74 74 65 31 26 41 78 76 56 95 95 13 99 55 92 82 55 9 32 2 20 97 96 4 99 6 3 73\n79 78 80 52 37 27 42 68 2 24 12 77 72 93 39 55 96 45 75 28 93 5 74 11 54 2 78 60 16 9\n3 62 87 29 8 77 34 30 25 60 66 86 30 6 45 17 21 95 63 5 11 26 95 74 29 5 20 96 31 78\n63 3 30 77 41 80 90 98 29 19 1 19 60 56 97 20 31 1 50 13 44 50 53 55 31 35 92 45 30 5\n83 28 47 51 16 9 41 60 98 41 66 6 27 8 43 63 41 96 25 15 95 92 85 58 55 27 27 18 36 59\n89 2 73 12 65 50 18 30 47 17 24 12 67 79 34 79 11 67 16 28 66 91 60 6 47 57 25 25 55 12\n13 18 61 31 79 17 82 47 36 64 51 98 20 39 46 98 77 30 67 88 53 95 29 16 59 68 61 48 41 72\n70 24 57 10 11 75 87 52 42 85 80 59 81 34 39 24 65 95 27 22 25 46 55 72 11 89 21 94 78 70", "expectedOutput": "0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n50 50\n100 92 89 100 58 62 1 49 68 23 41 70 88 95 86 26 81 62 97 35 52 28 72 19 28 36 64 23 68 72 38 23 53 98 90 26 20 14 6 48 70 55 58 62 80 34 87 84 41 7\n4 62 89 98 37 38 39 78 74 90 44 81 5 36 47 4 13 21 16 63 31 11 22 20 39 28 10 25 6 2 78 83 81 8 59 5 51 51 8 80 28 44 95 40 10 33 79 17 90 92\n45 23 2 96 75 17 54 3 18 2 7 93 61 72 93 71 98 48 12 44 61 99 74 14 7 22 9 60 96 98 89 77 99 28 76 87 28 47 3 25 55 67 58 63 79 16 58 72 57 58\n88 46 44 19 55 89 77 29 45 7 84 56 56 26 55 100 55 72 95 57 42 6 11 22 2 95 60 26 17 91 62 100 65 17 70 76 9 6 7 19 57 18 95 58 39 8 90 3 98 32\n54 6 100 46 1 48 14 18 24 66 11 36 97 11 26 50 95 63 29 17 39 95 28 87 88 54 15 82 84 38 25 98 8 90 24 27 85 32 58 49 53 17 73 91 28 91 9 45 55 63\n7 61 25 21 96 13 33 28 20 99 99 40 92 79 33 70 70 97 34 77 21 21 26 46 8 71 54 48 95 84 66 72 74 96 78 2 80 73 64 15 20 5 25 49 80 16 98 49 68 64\n97 99 82 78 3 28 36 9 94 63 33 94 18 46 17 43 48 86 49 70 88 48 31 90 15 100 30 7 80 30 35 28 30 92 89 74 6 93 20 14 13 22 12 63 92 49 37 31 77 3\n20 84 42 96 23 77 62 26 73 34 94 7 94 37 26 4 46 69 71 58 54 80 50 49 97 2 7 49 70 19 23 18 78 72 3 28 49 72 37 63 2 45 66 74 88 31 71 39 6 99\n28 64 60 14 11 93 16 75 8 6 85 79 41 71 28 8 45 73 44 100 63 69 2 53 31 43 76 65 82 77 94 34 51 82 74 16 31 96 42 8 18 36 70 36 46 52 81 48 99 80\n13 75 37 90 89 4 55 97 66 98 42 61 78 49 55 56 91 12 33 36 75 81 4 94 49 65 21 19 64 24 20 53 49 44 11 19 5 43 39 46 32 59 66 35 94 15 82 4 49 61\n39 68 37 45 99 65 72 40 48 55 48 50 42 42 90 5 62 8 4 84 61 90 57 69 3 56 27 76 47 59 9 12 61 4 46 73 1 73 4 71 29 13 78 35 88 81 34 47 34 13\n41 28 56 46 47 12 89 92 73 3 53 44 12 60 33 70 64 66 62 88 51 30 60 64 37 64 18 50 53 63 48 42 67 79 17 79 97 40 5 70 22 31 33 7 53 85 47 20 62 63\n94 52 73 62 96 42 35 57 53 54 9 42 56 80 89 74 37 96 19 77 11 80 93 23 65 97 38 45 95 69 45 31 42 83 67 7 82 2 43 60 66 44 70 47 88 87 89 44 46 33\n65 69 52 34 79 16 89 54 91 65 100 26 87 99 26 35 19 89 15 32 43 100 95 2 20 24 97 97 98 77 7 28 24 12 33 46 37 24 89 29 97 39 66 26 17 43 95 18 9 11\n72 61 8 84 99 22 77 36 16 91 33 20 25 54 17 9 9 74 83 19 57 42 87 41 72 67 30 12 21 31 44 56 62 94 82 76 13 17 81 7 50 67 59 26 42 6 62 89 43 16\n56 27 89 34 27 25 11 22 24 54 18 77 7 100 11 16 62 14 41 74 23 25 99 46 12 37 28 92 69 71 53 76 77 8 75 78 53 97 96 85 79 50 84 76 28 45 12 93 8 38\n77 87 67 50 46 77 66 56 4 90 50 23 94 15 62 56 96 12 15 98 35 70 12 13 56 47 55 57 58 68 91 84 67 76 73 79 89 95 63 34 10 12 7 3 89 22 10 24 32 56\n37 25 70 18 2 15 65 90 90 9 72 73 43 16 81 57 97 7 95 94 62 77 75 38 97 68 11 41 88 50 94 77 16 84 24 30 18 32 28 65 59 10 22 12 81 83 19 29 77 35\n82 3 33 69 15 16 18 81 36 93 15 99 70 4 62 10 39 47 13 61 6 3 99 16 88 11 45 74 39 48 75 62 22 13 69 96 66 78 87 14 2 41 86 38 97 7 61 55 94 51\n75 74 78 23 94 94 83 100 45 90 100 8 33 91 15 97 68 52 64 76 3 51 83 21 31 21 21 53 86 18 74 43 33 88 82 13 98 99 95 10 3 40 45 29 24 4 75 19 41 21\n9 61 69 46 74 9 29 84 82 50 33 17 24 63 12 14 69 24 43 72 54 66 71 64 75 88 27 8 39 96 3 4 37 57 31 73 27 23 78 18 92 6 88 7 74 82 89 10 73 36\n64 94 27 55 73 5 56 33 1 34 41 85 63 3 59 64 5 55 44 43 10 79 14 88 95 64 14 90 12 21 96 48 26 28 57 4 43 39 14 76 58 8 62 44 59 19 88 42 32 51\n59 15 8 14 33 31 48 22 42 40 5 87 80 30 82 54 55 4 33 87 7 9 7 2 17 79 54 19 4 30 14 52 98 94 71 76 63 40 75 6 55 81 49 26 95 35 31 22 50 53\n54 75 72 39 74 53 33 1 21 65 5 59 44 87 60 68 98 37 95 53 35 20 83 95 94 26 20 87 54 94 11 83 64 24 47 53 87 20 92 2 38 37 19 46 10 7 90 78 99 96\n15 24 95 75 21 65 82 84 85 99 10 69 5 53 93 85 89 32 3 55 42 73 86 40 56 100 72 69 34 89 89 8 48 64 33 37 19 47 4 6 74 84 24 50 49 7 16 50 51 31\n35 67 41 96 71 76 21 97 83 19 53 36 20 14 33 47 95 1 6 70 52 87 40 95 48 81 90 63 88 31 90 24 46 35 23 24 95 16 77 15 55 85 81 81 68 88 91 10 13 56\n61 94 26 83 58 27 36 83 63 59 55 78 80 87 69 29 8 2 37 16 46 11 12 98 74 64 50 29 65 3 74 7 61 100 11 49 57 44 70 98 38 58 23 90 24 99 17 29 75 97\n6 53 83 47 58 59 88 92 21 93 66 37 38 99 61 22 71 19 92 59 25 25 12 94 58 25 5 39 63 93 86 85 17 14 11 72 5 20 17 99 7 4 58 31 25 27 50 33 79 97\n76 44 13 12 13 94 26 87 88 77 19 16 3 18 50 12 49 39 10 5 24 2 44 96 79 24 29 13 40 43 5 88 57 19 98 62 35 35 95 90 20 98 93 32 8 79 96 91 70 63\n97 85 1 47 78 71 95 72 91 88 39 44 26 21 40 61 42 49 60 33 81 35 30 81 3 79 32 24 50 46 5 29 89 58 76 54 7 16 75 79 95 57 98 100 50 25 37 26 39 92\n28 8 63 76 24 60 89 95 40 9 3 59 41 96 76 93 63 50 13 27 90 55 77 43 88 73 77 69 92 36 89 3 17 89 37 12 54 25 95 93 30 53 38 77 41 7 73 15 36 43\n38 31 40 51 53 1 18 97 33 49 5 76 69 1 21 35 39 40 49 52 15 54 41 69 22 82 74 99 25 43 93 18 36 62 72 86 90 18 13 36 23 76 86 45 38 97 84 3 82 62\n71 78 45 47 56 25 62 54 17 53 45 29 65 22 66 44 26 20 30 64 27 74 58 56 62 75 52 47 49 89 81 27 1 6 75 33 21 76 41 83 61 80 41 12 52 4 77 30 54 98\n93 40 74 87 82 90 81 86 18 51 32 48 9 24 44 31 62 15 15 13 18 54 6 21 37 82 60 89 14 77 58 78 57 35 44 37 64 39 2 61 74 62 78 75 93 6 18 48 53 26\n34 62 12 34 75 61 9 75 74 33 78 79 62 33 10 67 58 21 39 85 15 3 52 20 90 56 60 64 81 49 96 75 74 49 85 42 31 48 99 97 18 37 81 73 96 34 44 67 32 64\n78 66 36 80 14 53 73 87 27 62 25 92 98 40 64 6 9 89 64 8 96 28 86 76 46 94 93 90 94 39 29 57 12 59 78 86 40 22 93 19 99 59 42 18 46 2 9 35 8 86\n5 14 75 2 49 38 88 78 18 42 67 21 32 26 8 99 45 62 77 64 5 97 80 65 45 44 38 57 22 37 60 10 97 29 10 65 89 90 9 44 14 94 6 50 65 3 67 1 40 68\n5 74 92 90 5 76 30 63 27 74 69 47 82 52 53 23 38 22 34 31 63 72 77 92 24 46 55 17 23 1 26 1 45 52 22 31 59 68 49 78 28 33 47 28 73 93 1 10 15 79\n50 63 5 43 16 3 57 21 49 22 71 28 80 68 100 72 13 23 84 20 89 67 51 42 100 4 4 92 11 68 21 89 53 72 77 73 13 23 23 36 33 80 74 69 51 48 27 46 33 40\n46 23 7 24 99 39 57 95 32 13 10 88 96 68 27 38 52 98 56 60 47 75 23 35 57 90 86 94 47 15 39 95 69 2 68 19 72 30 82 60 37 83 43 66 32 33 88 62 82 14\n56 39 91 99 28 36 96 74 91 96 19 53 46 49 32 59 86 94 21 57 13 19 8 77 49 53 93 18 44 89 34 29 19 15 49 65 40 95 34 67 71 23 58 31 23 62 20 46 80 8\n14 88 25 36 31 57 21 55 27 69 44 28 84 61 18 90 17 49 64 28 82 55 24 85 88 6 75 19 97 76 5 97 86 71 81 90 70 48 21 96 10 45 34 77 39 42 89 87 66 9\n33 100 18 9 66 41 24 15 65 89 92 20 13 46 25 57 50 41 75 19 96 98 84 76 96 77 16 84 38 55 94 80 59 39 48 54 18 17 40 43 18 28 16 86 31 43 3 98 2 54\n83 48 73 46 7 40 98 21 75 3 66 48 20 87 63 19 56 19 55 93 79 3 12 78 3 81 10 69 69 11 43 71 82 28 70 59 63 75 37 14 96 34 96 60 49 78 39 35 59 9\n78 72 92 9 36 57 9 57 65 50 46 6 7 20 31 21 89 5 75 68 57 45 72 44 34 77 62 47 98 59 86 36 61 56 56 39 92 72 87 39 15 49 56 9 75 46 61 68 2 69\n25 79 39 33 76 42 39 28 24 10 99 43 51 98 18 56 91 54 100 29 77 50 50 58 63 90 52 94 13 92 84 81 27 8 38 84 5 52 15 63 13 100 7 25 92 43 43 26 11 66\n64 79 98 61 65 38 62 19 2 39 92 34 65 12 62 59 2 62 87 51 97 43 35 48 46 23 81 18 100 54 39 66 23 42 5 22 61 36 45 45 69 50 75 55 65 58 3 68 16 16\n38 94 65 61 84 26 74 86 7 1 12 30 8 88 18 5 58 53 63 52 77 69 79 58 51 93 65 92 8 40 89 68 63 38 92 85 44 55 54 49 93 81 47 56 4 83 77 11 80 92\n31 74 51 65 90 99 95 69 57 95 43 27 30 52 85 82 45 80 35 15 86 90 49 74 14 19 39 23 74 17 96 95 76 90 21 50 9 1 29 21 66 4 88 27 78 12 51 60 1 13\n76 63 47 25 67 15 5 91 93 7 19 44 6250 13 4 45 90 96 84 37 84 11 31 48 99 10 17 7 15 100 18 63 42 74 17 27 57 19 99 62 45 26 70 89 67 99 47 25 95 13", "expectedOutput": "3830", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "SWTSLLR", "objective": "Chef knows how to prepare two types of sweets S1 and S2. Chef has machines which make N1 amount of S1 and N2 amount of S2 respectively. In order to finish a batch,he needs equal amount of S1 and S2. Let K1 be the minimum amount of sweet required for each type to complete a batch. Also, he needs to order boxes such that he can pack N1 amount of S1 and N2 amount of S2 in same boxes without wasting any space. Let the maximum size of the box required be K2.\nIn order to maximise his profits, he follows the following formula\nN1\u00b3+N2K1K2+N1\u00b3N2\u00b2(1/K1\u00b2+1/K2\u00b2)=NN1\nGiven an input, N , find the number of pairs 1 <= N1,N2 <= N that satisfies the above equation", "inputFormat": ["-Line 1 contains an integer, T denoting the number of testcases -For each testcase, Line 1 contains an integer, N as per the given formula"], "outputFormat": ["Output an integer, A representing the amount of such possible pairs"], "constraints": ["1 < N < 10^9"], "round": 2, "sampleTestInput": ["1\n3", "1\n50"], "sampleTestOutput": ["0", "2"], "explanation": ["No such possible pairs exist", "2 such pairs exists- (2,3) and (3,2)"], "testCases": [{"input": "1\n4", "expectedOutput": "1", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10", "expectedOutput": "2", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n20", "expectedOutput": "2", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n100000000", "expectedOutput": "3", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2367737347", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2452324", "expectedOutput": "0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2452324453", "expectedOutput": "0", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "TGHTROPE", "objective": "There is a tightrope Walker and they have r ropes to cross. There are joints on a rope and there are only specific joints the tightrope walker can stand on. These joints are determined by the second integer which is t. The tightrope Walker can only step on joints which are multiples of t for the 1st step, multiples of t+1 for the second step, and multiples of t+3 for the third step that is the difference between the first two numbers should be divisible by t for the next two t+1 and so on. You have to output the number of paths possible for each rope. For example: 4 1 4 = number of ropes 1 = value of t output: 1 1 2 2 Answer: Ways to reach point 1: [0,1]\nWays to reach point 2: [0,2]\nWays to reach point 3: [0,1,3], [0,3]\nWays to reach point 4: [0,2,4], [0,4]", "inputFormat": ["-The first line contains two integers n and t :n represents the number of ropes"], "outputFormat": ["-Output contains the number of possible paths for each rope"], "constraints": ["1\u2264n\u2264t\u22642\u22c510^5"], "round": 0, "sampleTestInput": ["8 1"], "sampleTestOutput": ["1 1 2 2 3 4 5 6"], "explanation": ["Ways to cross rope 1: [0,1];\nWays to cross rope 2: [0,2];\nWays to cross the rope 3: [0,1,3], [0,3];\nWays to cross the rope 4: [0,2,4], [0,4];\nWays to cross the rope 5: [0,1,5], [0,3,5], [0,5];\nWays to cross rope 6: [0,1,3,6], [0,2,6], [0,4,6], [0,6];\nWays to cross rope 7: [0,2,4,7], [0,1,7], [0,3,7], [0,5,7], [0,7];\nWays to cross rope 8: [0,3,5,8], [0,1,5,8], [0,2,8], [0,4,8], [0,6,8], [0,8]."], "testCases": [{"input": "1\n236 42", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1268 32", "expectedOutput": "0 0 0 0 0 0 0 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 0 0 0 0 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 1 0 0 0 0 0 0 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 1 1 1 0 0 0 0 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 1 1 2 1 1 1 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 3 2 2 1 1 1 0 0 0 1 1 1 2 2 3 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 11 10 9 8 7 6 5 4 3 3 3 2 3 3 3 4 5 6 8 9 10 12 13 15 17 18 19 21 21 22 23 23 23 23 22 21 21 19 18 17 15 14 13 11 11 10 9 9 9 9 10 12 12 14 16 17 20 22 24 27 29 31 33 35 36 38 39 39 40 40 39 39 38 37 36 34 33 31 30 28 27 26 25 25 25 25 26 27 28 30 32 35 37 41 44 47 50 53 56 59 62 64 66 68 69 70 71 70 71 70 69 68 67 65 64 63 61 61 60 59 59 59 59 61 62 64 67 70 73 77 80 84 89 93 97 102 106 110 115 117 120 123 125 127 129 129 130 131 130 130 131 129 129 129 127 128 128 128 129 131 132 135 138 140 144 149 152 158 164 169 176 182 188 194 200 205 212 217 222 227 232 235 240 244 245 248 250 252 254 256 257 259 261 263 265 268 270 274 277 281 286 292 298 304 312 319 327 335 344 352 362 371 380 390 400 409 419 427 435 444 451 459 467 474 480 488 494 500 507 513 518 525 531 538 546 553 561 570 579 588 599 609 620 633 645 657 673 686 701 717 731 747 763 778 794 811 826 842 859 874 890 907 920 936 952 966 981 997 1011 1027 1043 1058 1074 1091 1107 1124 1143 1159 1180 1200 1219 1241 1264 1285 1309 1334 1357 1383 1410 1435 1463 1492 1519 1549 1578 1606 1637 1668 1697 1728 1759 1789 1820 1853 1883 1915 1948 1979 2012 2045 2078 2112 2147 2181 2217 2254 2290 2328 2368 2406 2447 2489 2530 2574 2620 2665 2711 2760 2808 2858 2910 2961 3014 3069 3122 3178 3235 3292 3350 3410 3469 3529 3592 3653 3715 3780 3844 3909 3977 4042 4110 4180 4249 4320 4393 4465 4539 4617 4693 4771 4853 4933 5017 5103 5188 5276 5368 5458 5551 5648 5743 5842 5944 6046 6150 6258 6364 6474 6587 6699 6815 6934 7051 7172 7296 7418 7545 7675 7803 7935 8071 8205 8344 8486 8626 8772 8921 9068 9221 9377 9532 9692 9856 10019 10187 10360 10532 10710 10892 11073 11260 11452 11643 11841 12043 12244 12452 12664 12876 13094 13317 13540 13769 14004 14238 14479 14725 14970 15224 15481 15739 16004 16275 16545 16823 17106 17389 17680 17977 18275 18580 18892 19204 19525 19852 20181 20518 20862 21207 21561 21922 22285 22656 23036 23417 23807 24207 24608 25019 25438 25860 26292 26732 27176 27629 28092 28558 29034 29520 30008 30507 31017 31530 32054 32589 33127 33677 34238 34804 35381 35970 36563 37168 37786 38408 39043 39691 40343 41010 41690 42375 43075 43788 44508 45243 45992 46748 47519 48307 49100 49910 50736 51569 52419 53285 54160 55052 55962 56880 57817 58772 59736 60720 61723 62734 63766 64818 65879 66962 68065 69178 70314 71471 72640 73831 75044 76270 77520 78793 80079 81391 82727 84076 85453 86853 88269 89712 91181 92666 94180 95721 97279 98868 100485 102120 103787 105484 107199 108949 110728 112528 114363 116230 118118 120042 122000 123982 126000 128054 130131 132248 134402 136582 138803 141062 143349 145678 148047 150446 152887 155371 157886 160446 163051 165687 168373 171104 173870 176686 179550 182450 185402 188405 191447 194543 197692 200881 204127 207429 210773 214177 217638 221144 224714 228342 232019 235761 239567 243423 247346 251336 255379 259492 263675 267913 272225 276609 281053 285573 290169 294828 299567 304386 309269 314236 319286 324405 329612 334907 340272 345730 351279 356904 362624 368439 374334 380330 386424 392604 398887 405275 411752 418338 425033 431821 438723 445739 452853 460087 467439 474894 482475 490180 497994 505938 514013 522201 530526 538987 547567 556291 565157 574148 583290 592580 602002 611581 621314 631186 641222 651420 661765 672279 682966 693803 704820 716015 727371 738913 750641 762538 774630 786916 799380 812047 824919 837976 851247 864732 878409 892311 906436 920765 935328 950124 965133 980388 995886 1011611 1027589 1043822 1060291 1077028 1094031 1111282 1128812 1146622 1164690 1183052 1201704 1220629 1239860 1259395 1279217 1299357 1319816 1340575 1361667 1383094 1404834 1426924 1449363 1472130 1495263 1518760 1542603 1566828 1591434 1616402 1641769 1667536 1693682 1720244 1747225 1774602 1802415 1830666 1859333 1888456 1918036 1948052 1978546 2009516 2040947 2072871 2105298 2138205 2171632 2205582 2240034 2275030 2310574 2346643 2383283 2420493 2458255 2496612 2535567 2575100 2615254 2656035 2697420 2739456 2782147 2825471 2869474 2914162 2959512 3005576 3052352 3099825 3148040 3197004 3246695 3297163 3348414 3400427 3453250 3506894 3561334 3616623 3672769 3729749 3787618 3846381 3906018 3966583 4028084 4090501 4153885 4218250 4283571 4349908 4417268 4485629 4555051 4625544 4697086 4769736 4843504 4918370 4994396 5071591 5149936 5229491 5310270 5392251 5475499 5560025 5645810 5732917 5821363 5911124 6002271 6094812 6188734 6284102 6380931 6479202 6578985 6680295 6783114 6887512 6993509 7101081 7210308 7321203 7433749 7548023 7664040 7781786 7901336 8022710 8145891 8270959 8397932 8526797 8657633 8790464 8925269 9062137 9201088 9342107 9485279 9630629 9778142 9927907 10079946 10234250 10390904 10549938 10711340 10875199 11041546 11210365 11381755 11555744 11732319 11911583 12093559 12278244 12465734 12656065 12849224 13045315 13244373 13446391 13651473 13859656 14070932 14285411 14503130 14724084 14948387 15176073 15407143 15641709 15879814 16121456 16366751 16615743 16868434 17124941 17385316 17649551 17917779 18190044 18466349 18746822 19031515 19320430 19613703 19911382 20213479 20520124 20831378 21147246 21467868 21793304 22123562 22458790 22799046 23144344 23494832 23850574 24211585 24578019 24949943 25327376 25710470 26099302 26493891 26894396 27300894 27713407 28132102 28557059 28988301 29426004 29870244 30321054 30778611 31243000 31714255 32192556 32677995 33170609 33670582 34178016 34692941 35215558 35745962 36284201 36830471 37384876 37947466 38518447 39097925 39685955 40282746 40888416 41503019 42126774 42759804 43402166 44054088 44715696 45387054 46068397 46759856 47461502 48173578 48896217 49629501 50373671 51128880 51895204 52672904 53462129 54262966 55075681 55900436 56737318 57586609 58448467 59322998 60210483 61111097 ", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n46 8", "expectedOutput": "0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 2 1 1 1 0 1 1 1 2 2 2 2 ", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n56 10", "expectedOutput": "0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 1 1 1 2 2 2 2 ", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1250 50", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 0 0 0 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 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 11 10 9 8 7 6 5 4 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 4 5 6 8 9 10 12 13 15 17 18 19 21 21 22 23 23 23 23 22 21 21 19 18 17 15 13 12 10 9 8 6 5 4 3 2 2 1 1 1 0 0 0 0 1 1 1 2 2 3 4 5 6 8 10 11 13 15 17 20 22 24 27 29 31 33 35 36 38 39 39 40 40 39 39 38 36 35 33 31 29 27 24 22 20 17 15 13 11 10 8 6 5 4 4 3 3 3 3 4 4 5 6 8 10 12 14 16 19 22 25 28 32 35 39 43 46 49 53 56 59 62 64 66 68 69 69 70 69 69 68 66 64 62 59 56 53 49 46 43 39 35 32 28 26 23 20 18 16 15 14 13 12 13 14 15 17 19 21 25 28 31 36 40 45 51 56 61 67 72 78 84 89 94 100 104 108 113 115 118 121 122 123 124 123 122 121 118 115 113 108 104 100 94 90 85 79 74 69 64 60 56 51 48 46 43 42 42 41 42 44 45 49 52 56 62 68 74 81 89 96 105 114 121 131 140 148 158 166 174 182 189 195 202 207 211 215 218 219 221 221 219 218 215 212 208 203 197 191 185 178 171 164 156 150 143 136 131 126 121 117 114 112 111 111 112 114 118 122 128 135 143 152 161 172 183 195 208 221 235 249 262 276 290 303 316 328 339 350 361 369 377 384 389 394 397 398 399 398 396 393 389 383 377 371 362 354 346 337 329 320 310 303 295 288 282 277 272 270 269 268 271 274 278 285 292 301 313 325 339 355 371 388 408 427 447 468 488 508 531 550 570 591 609 628 645 660 674 688 699 708 717 722 727 732 731 731 730 726 722 717 708 701 693 683 674 665 654 645 638 628 622 617 611 609 608 606 609 614 619 628 639 650 666 684 702 724 747 770 798 825 852 883 914 945 977 1009 1039 1071 1103 1131 1160 1187 1212 1238 1260 1279 1299 1316 1330 1343 1353 1360 1366 1371 1371 1372 1370 1366 1363 1358 1351 1345 1338 1331 1325 1318 1312 1308 1305 1303 1303 1305 1309 1316 1326 1337 1352 1369 1390 1412 1438 1466 1497 1532 1568 1606 1647 1689 1734 1780 1826 1873 1921 1970 2017 2065 2112 2158 2204 2248 2289 2331 2368 2404 2438 2469 2496 2522 2546 2566 2585 2601 2613 2626 2636 2642 2650 2654 2658 2662 2664 2666 2670 2674 2678 2685 2693 2701 2715 2728 2744 2765 2787 2813 2844 2876 2912 2953 2997 3044 3096 3150 3206 3269 3331 3396 3466 3535 3607 3682 3755 3831 3908 3983 4058 4135 4207 4279 4352 4420 4487 4554 4614 4675 4734 4786 4839 4889 4934 4978 5020 5056 5092 5128 5158 5189 5221 5247 5277 5306 5332 5362 5393 5423 5457 5493 5529 5569 5615 5659 5711 5767 5823 5888 5956 6025 6103 6185 6268 6359 6453 6550 6653 6761 6867 6981 7097 7212 7334 7457 7577 7703 7828 7952 8078 8203 8325 8449 8572 8689 8808 8924 9035 9147 9255 9358 9462 9562 9659 9754 9847 9936 10026 10114 10198 10283 10369 10450 10536 10620 10704 10791 10880 10971 11064 11161 11260 11365 11474 11585 11702 11826 11952 12087 12226 12369 12518 12675 12836 13003 13176 13353 13535 13725 13916 14112 14314 14518 14726 14937 15149 15364 15582 15800 16018 16238 16457 16675 16897 17113 17329 17546 17760 17973 18185 18393 18600 18807 19012 19212 19415 19613 19811 20012 20208 20404 20604 20802 21002 21205 21407 21613 21824 22037 22252 22476 22699 22929 23169 23410 23657 23915 24175 24445 24723 25005 25296 25598 25904 26217 26541 26868 27204 27551 27898 28254 28619 28985 29360 29741 30122 30510 30905 31300 31699 32103 32506 32912 33326 33732 34144 34558 34969 35384 35801 36212 36628 37046 37460 37877 38296 38712 39132 39557 39976 40402 40831 41257 41692 42132 42568 43015 43467 43921 44384 44855 45327 45812 46307 46803 47313 47834 48357 48898 49447 50001 50571 51152 51740 52342 52955 53574 54209 54857 ", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n345 64", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n675 23", "expectedOutput": "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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 1 1 0 1 1 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 5 5 4 4 3 3 3 3 4 4 5 6 7 8 9 10 11 12 13 13 13 14 13 13 13 12 12 11 10 10 9 9 9 9 9 10 11 11 13 14 15 17 18 19 21 21 22 23 23 24 24 23 23 23 22 22 22 21 21 22 21 22 23 23 25 26 27 29 31 32 34 36 37 39 40 41 42 43 43 44 44 44 45 45 45 45 46 46 47 48 49 50 52 54 56 58 60 62 65 67 69 72 74 76 78 80 81 84 85 86 88 89 90 92 93 94 97 99 101 103 105 108 111 114 117 121 124 128 133 135 139 144 147 151 155 158 162 166 169 172 177 180 184 188 191 195 200 203 208 213 217 224 229 234 240 247 252 259 266 272 279 287 293 301 309 315 323 331 338 346 354 361 369 378 386 394 404 412 422 432 441 451 462 472 483 495 507 519 532 544 557 571 584 598 613 626 641 657 671 687 703 719 735 753 769 786 805 822 840 861 879 899 920 941 962 985 1007 1030 1055 1078 1103 1129 1154 1181 1210 1236 1265 1295 1324 1354 1386 1416 1450 1483 1515 1549 1586 1620 1657 1696 1732 1772 1813 1853 1894 1938 1980 2025 2072 2117 2165 2216 2264 2316 2369 2422 2477 2534 2589 2648 2708 2768 2831 2896 2959 3026 3096 3163 3235 3308 3380 3456 3534 3611 3692 3775 3858 3944 4035 4122 4214 4309 4404 4501 4603 4703 4808 4916 5024 5136 5251 5367 5486 5610 5732 5859 5990 6121 6256 6396 6535 6681 6830 6979 7132 7292 7450 7615 7784 7953 8127 8308 8488 8675 8867 9059 9259 9464 9670 9881 10100 10318 10544 10777 11011 11251 11500 11748 12006 12269 12535 12809 13091 13373 13665 13964 14266 14576 14895 15216 15547 15888 16229 16583 16944 17308 17684 18070 18458 18858 19267 19682 20107 20545 20985 21439 21904 22374 22857 23353 23852 24367 24894 25427 25974 26535 27103 27686 28284 28888 29509 30145 30788 31448 32126 32809 33514 34233 34963 35710 36477 37253 38050 38865 39691 40538 41407 42285 43187 44110 45045 46005 46987 47984 49005 50049 51108 52195 53306 54434 55588 56772 57970 59200 60457 61733 63040 64378 65735 67126 68547 69992 71470 72983 74518 76090 77699 79333 81005 82714 84451 86229 88047 89894 91785 93716 95681 97690 99746 101832 103969 106153 108374 110644 112966 115325 117740 120207 122716 125282 127905 130571 133298 136086 138919 141817 144779 147791 150871 154018 157218 160492 163835 167237 170713 174266 177880 181575 185349 189189 193113 197124 201203 205375 209632 213966 218397 222921 227525 232230 237034 241925 ", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n8 1", "expectedOutput": "1 1 2 2 3 4 5 6", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10 2", "expectedOutput": "0 1 0 1 1 1 1 2 2 2", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n800 20", "expectedOutput": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 2 2 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 2 2 3 3 3 3 3 3 2 2 1 1 1 0 0 0 0 1 1 1 2 2 3 4 4 4 5 5 5 5 4 4 4 3 2 2 1 2 2 1 2 2 3 4 5 5 6 7 7 8 8 8 8 8 7 7 6 6 6 5 5 4 5 5 6 7 7 8 9 10 11 12 13 13 13 14 13 14 14 13 13 12 12 12 12 12 13 13 13 14 15 16 18 19 19 21 21 23 24 24 25 25 25 25 26 25 26 27 26 26 27 27 29 30 30 32 33 35 36 38 39 41 43 43 45 46 47 49 50 50 51 52 53 54 55 56 57 60 61 62 64 66 69 71 73 75 78 81 83 86 88 90 94 95 97 100 102 105 108 110 112 115 118 121 124 127 130 135 138 142 147 150 155 160 163 168 173 178 183 188 193 197 204 208 213 219 223 230 236 241 248 255 261 268 275 281 289 298 305 313 323 330 340 350 358 368 377 387 397 408 418 429 442 452 463 476 486 500 513 525 539 553 568 582 598 613 629 646 661 678 697 714 734 754 772 792 813 834 855 877 899 921 947 970 994 1021 1046 1074 1101 1127 1155 1186 1216 1247 1280 1311 1344 1381 1414 1450 1488 1524 1564 1604 1643 1685 1729 1773 1818 1864 1909 1957 2009 2057 2109 2164 2216 2273 2331 2387 2448 2510 2573 2636 2703 2769 2838 2912 2983 3058 3135 3211 3293 3376 3457 3545 3634 3724 3816 3912 4007 4107 4212 4314 4420 4531 4641 4757 4876 4994 5118 5245 5374 5506 5643 5780 5922 6072 6218 6370 6529 6686 6853 7022 7192 7368 7550 7734 7923 8118 8315 8518 8729 8939 9157 9383 9608 9845 10086 10328 10579 10838 11100 11370 11647 11928 12216 12516 12816 13125 13446 13768 14103 14445 14790 15148 15515 15889 16272 16666 17064 17474 17899 18325 18766 19219 19677 20151 20637 21127 21634 22154 22684 23226 23783 24348 24930 25530 26135 26759 27401 28049 28719 29406 30100 30818 31552 32301 33067 33855 34655 35476 36323 37179 38060 38964 39881 40828 41795 42778 43790 44827 45882 46964 48073 49202 50361 51552 52760 54000 55274 56567 57899 59260 60646 62069 63527 65013 66536 68096 69686 71316 72991 74690 76433 78222 80041 81912 83824 85772 87770 89817 91905 94042 96232 98464 100751 103097 105483 107930 110437 112991 115613 118295 121025 123826 126693 129618 132612 135679 138805 142007 145290 148632 152056 155564 159139 162805 166553 170374 174292 178299 182391 186577 190863 195232 199707 204291 208961 213744 218640 223633 228749 233980 239316 244781 250372 256080 261919 267892 273988 280227 286615 293128 299795 306618 313575 320702 327988 335422 343032 350815 358761 366888 375200 383686 392366 401251 410312 419584 429068 438745 448652 458778 469114 479690 490505 501545 512835 524381 536167 548222 560554 573135 586003 599164 612595 626338 640386 654724 669392 684384 699695 715347 731350 747688 764395 781480 798913 816741 834969 853574 872605 892053 911906 932207 952955 974145 995802 1017940 1040543 1063650 1087272 1111383 1136032 1161228 1186949 1213249 1240123 1267557 1295604 1324267 1353535 1383447 1414015 1445227 1477124 1509728 1543009 1577024 1611787 1647276 1683554 1720616 1758457 1797132 1836649 1877001 1918233 1960362 2003376 2047330 2092249 2138100 2184956 2232832 2281709 2331658 2382684 2434779 2488011 2542395 2597924 2654655 2712611 2771784 2832240 2894009 2957064 3021487 3087301 3154488 3223139 3293260 3364848 3437988 3512696 3588976 3666892 3746481 3827738 3910742 3995532 4082089 4170507 4260819 4353016 4447202 4543391 4641592 4741902 4844349 4948942 5055766 5164869 5276251 5390013 5506204 5624812 5745949 5869666 5995960 6124953 6256676 6391145 6528480 6668721 6811893 6958099 7107400 7259815 7415460 7574406 7736647 7902327 8071511 8244209 8420572 8600646 8784462 8972165 9163820 9359465 9559228 9763196 9971400 10183989 10401054 10622610 10848832 11079805 11315562 11556284 11802044 12052889 12309006 12570483 12837379 13109864 13388047 13671986 13961866 14257813 14559865 14868233 15183041 15504344 15832370 16167218 16508977 16857870 17214021 17577526 17948594 18327377 18713964 19108594 19511429 ", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "BTTLSGMT", "objective": "There are n disarranged bottles in a rack, but chef likes everything organized so they want bottles of the same colour to be together. So what they do is choose any one colour such that bottles of only that colour remain. for this, they will have to delete any other coloured bottles that are in between them. Help chef select a colour such that bottles of only that colour remain and the segments that they delete are minimum. Example: For B G R B chef will have to delete 1 segment that is G R so only blue bottles remain and the segment is minimum.", "inputFormat": ["-The first line contains the number of test cases(t). -The second line contains the value 'n' which is the size of the array. -The third line contains the array values."], "outputFormat": ["A single integer representing the number of segments"], "constraints": ["1\u2264t\u22642\u22c510^4 1\u2264n\u22642\u22c510^5 1\u2264ai\u2264n"], "round": 1, "sampleTestInput": ["4\n1\n5\n3\n1 1 1\n5\n1 2 3 4 5\n5\n1 2 3 2 1"], "sampleTestOutput": ["0\n0\n1\n1"], "explanation": ["Here every number represents a different colour. 1 2 3 1 2 3 1 for example, if you remove segment 2 3 twice you will get 1 1 1 1 2 3 1 2 3 1-> 1 1 2 3 1-> 1 1 1"], "testCases": [{"input": "5\n3\n1 1 1\n5\n1 2 3 4 5\n5\n1 2 3 2 1\n7\n1 2 3 1 2 3 1\n11\n2 2 1 2 3 2 1 2 3 1 2", "expectedOutput": "0\n1\n1\n2\n3", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "4\n1\n1\n2\n1 1\n2\n1 2\n2\n2 2", "expectedOutput": "0\n0\n1\n0", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n13\n12 12 12 12 12 12 12 12 12 12 12 12 13", "expectedOutput": "1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n13\n12 12 12 12 12 12 12 12 12 12 12 12 13", "expectedOutput": "1", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n3\n1 1 1\n5\n1 2 3 4 5", "expectedOutput": "0\n1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n7\n1 2 3 1 2 3 1\n11\n2 2 1 2 3 2 1 2 3 1 2", "expectedOutput": "2\n3", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "STAIRCASE", "objective": "Chef wants to build a staircase. He has ordered blocks of different sizes in order to construct it.\nHe was delivered the stairs separately in a jumbled order. He makes trips using a crane to pick up blocks on the way and stack it. He gets two groups of stairs such that, when placed one after another, a full staircase is made. Order of the sizes of blocks is given in an array. Chef has fuel for maximum two trips. Print whether he can make the staircase or not", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, Line 1 contains an integer, N denoting the height of the staircase", "Next line contains N space separated integers each denoting the height of the blocks"], "outputFormat": ["Print \"Yes\" if it is possible to make the staircase in 2 trips. \"No\" otherwise"], "constraints": ["1<= N <= 10^5"], "round": 2, "sampleTestInput": ["3\n1 3 2", "4\n1 4 3 2"], "sampleTestOutput": ["Yes", "No"], "explanation": ["Chef can pick blocks 1,2 in his first trip and blocks 3 in his second trip. He can join them together to get staircase 1,2,3.", "Chef can pick staircase 1,2 in his first trip and block 3 in his second trip. He is left without block 4 and hence cannot construct the staircase"], "testCases": [{"input": "1\n6\n4 5 6 1 2 3", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n5\n1 3 5 2 4", "expectedOutput": "No", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10\n9 4 3 5 1 2 8 7 6 10", "expectedOutput": "No", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10000\n3718 2987 4086 9948 5618 959 7191 8400 808 4584 7840 3977 8464 7716 6890 3547 3418 9094 7869 2808 6645 4153 8262 704 1609 988 8202 4673 549 2380 9807 9221 7435 7223 9307 9721 9841 7896 1999 1963 4366 367 360 3252 8681 3131 2810 4488 8636 1814 179 7184 3467 5995 7640 2065 9447 1468 5549 7658 3213 9106 6118 5323 3984 833 9862 4712 6530 1136 305 2466 1366 4434 1518 511 3596 7774 9132 2185 4853 3488 4133 1256 2110 3097 7312 7408 7564 682 3314 7828 6156 803 1310 5244 8303 5519 8973 4869 2695 7338 1522 687 9265 9048 7152 5848 8612 1998 2536 6532 7799 7974 8559 3207 9955 6463 193 2019 705 1931 5050 6703 9913 9147 869 1070 5464 7742 9286 7901 6491 7740 1264 3391 7109 857 3182 368 6782 4737 4588 5450 6730 8778 661 9564 9197 8409 479 6083 5172 9890 4656 9465 8933 3311 4109 5509 2073 3732 2855 467 9855 1227 2597 6447 6835 6813 7902 320 8226 3797 4524 3309 2697 4906 1388 2420 7438 2131 9645 1149 9035 7713 5416 3384 2944 3829 6585 2455 3402 9210 1548 4957 280 9901 6985 136 987 1304 2822 9243 4717 5570 506 1182 868 1704 9971 5277 7601 860 9269 4549 2189 7721 8677 1132 3852 9519 7415 2952 9793 3307 3993 7653 4739 4121 6629 7935 8968 8742 4909 3907 9702 1350 7510 1876 8757 7669 9542 9836 4699 4953 8427 5697 6458 5809 7481 9976 379 1850 2421 1205 8929 8038 3770 4865 2433 9835 8073 3456 1806 3335 5984 2946 6939 373 7138 4442 9883 5405 4170 8239 8115 405 9054 265 4972 9220 43 2734 7798 44 9273 8452 7467 932 7196 7562 2761 6108 8736 2270 8059 4596 4793 9007 1102 8333 2355 2947 2654 4783 9644 9392 4494 2783 1462 7715 6177 6011 9330 9389 4209 374 9608 7418 2495 9612 1558 4701 4075 7683 5430 8689 4489 8793 9885 5473 173 8554 7541 2804 4353 2208 6259 9488 3348 2319 9490 1177 9218 5009 891 204 2534 4786 1820 4096 35 7816 5724 4563 9828 2213 5783 9075 2899 5358 6736 536 3974 6504 5515 6162 352 4555 1500 2870 6012 4082 7944 1940 640 5291 2416 8927 2938 1531 5055 2838 6959 8320 5384 7707 4747 6855 4478 7847 4185 6405 2782 503 3671 9740 9653 6681 6063 9609 4843 7505 7729 4013 6989 427 5336 943 2864 7451 3381 6763 7576 6103 1415 6734 9998 6397 6829 7135 5890 1549 1622 6290 9158 6562 259 5045 2291 910 9104 9255 8749 4386 1253 4277 8906 2222 5130 215 3199 7389 1229 1447 5227 972 4054 9980 7737 8769 1372 9541 1627 3166 2350 68 1051 7469 2320 2405 8042 6453 701 2373 249 3480 7490 5555 493 6901 9083 1774 7686 5855 8666 9745 7549 296 7751 7028 1993 7220 2078 9891 8572 693 5876 4330 1021 8040 3967 8196 3552 5975 7311 9082 7818 5149 5288 1059 804 8250 7763 257 9099 317 6029 4420 3031 2612 8057 5704 7486 7743 4025 8946 2871 409 2050 9763 3971 7283 9060 2286 8394 341 9310 958 2195 3489 2996 7322 6513 5213 9295 6488 3693 1497 9520 488 267 8284 7476 6809 5054 109 3372 4378 5312 708 8328 9308 2088 3848 9988 164 7546 2526 162 9613 7319 284 8444 7234 7777 3114 1917 2194 1212 3592 628 9362 8569 8376 5151 3512 123 105 2705 7693 9867 9658 4777 8161 3144 8122 7674 6884 1066 3608 1015 7800 9587 9402 8307 9947 3027 5344 6134 8508 1737 8114 1133 1515 616 4390 5387 1419 7911 6910 8447 8129 7873 2499 2824 2717 6242 2722 9938 931 3837 8540 7009 844 1079 39 6367 2087 1402 1370 3510 5674 2475 5813 1353 5253 5997 2394 6851 1110 1199 7050 3413 2196 1902 8459 3577 437 9224 7937 1294 5722 96 5064 8884 1719 16 9741 9318 760 7973 3363 6622 6900 1972 1550 5270 50 2367 5158 8180 3181 6863 8381 8456 5911 6392 6648 1995 9453 2535 8766 7259 6980 8100 2383 1175 1281 8154 1058 1178 436 5441 4216 9924 1773 6365 9779 7638 4066 2527 3690 1701 3840 9361 666 5529 5391 6075 5510 5229 3685 8865 5947 912 8613 1194 1394 6778 4782 3130 7362 4579 3761 329 9199 2906 7586 6496 6046 2230 1262 6988 6325 7783 6838 633 4904 7750 4566 3264 6555 9368 4401 7359 4475 7664 9796 7 6192 874 5164 3124 4663 3684 2337 7963 6769 7250 2807 830 7482 6015 1354 4876 1130 8977 3292 933 4846 979 4940 4744 8631 404 9433 8974 2922 7175 5101 8041 89 7036 1302 1239 7504 3904 1991 8606 2409 8932 8199 9165 1888 7514 5481 4886 3780 9729 5715 2834 6475 476 595 9737 9141 3969 5422 6982 4301 1686 8050 1697 1640 9235 4079 7708 6229 614 6972 2142 6537 263 2622 2940 2977 2948 8355 6818 8984 2516 6386 929 3566 7263 627 919 2787 8627 4042 2000 1648 3229 8571 7111 3439 2315 4544 1012 6670 458 9759 203 5445 7125 5878 9109 6889 7958 5005 2302 2332 9585 275 3069 8614 3888 612 5676 8171 3475 6667 428 4880 4980 2806 8745 4283 5296 4182 5347 6459 5200 5582 2267 6870 6033 875 6684 3195 6923 5561 9646 3783 4542 8794 7034 5898 133 1903 6243 487 4643 1343 6705 9589 6117 7098 6548 1665 4394 7588 2221 1490 702 8728 3138 6933 6126 1628 8374 3513 6856 4376 5524 6840 3431 977 7637 7129 8477 8087 1375 4002 3303 4977 8761 5394 3315 7986 8274 5959 6967 9288 3742 6772 1397 7052 4611 1485 1968 2604 1915 4331 8845 1629 4668 3426 3034 2852 5309 4427 4168 8960 5143 9268 5470 7215 3527 6233 5716 2395 6529 5717 4210 6133 9259 29 3901 3957 8223 1945 4437 4808 7361 8899 9496 6342 3830 3030 6495 6927 8305 5617 6783 8672 3393 4402 4038 9532 8484 4180 4873 1422 6319 4143 1642 5190 7258 4662 3093 5373 945 6600 1032 9560 8782 1994 8224 3119 3667 8338 1268 7328 4936 1930 1976 254 725 9610 3472 6541 3741 1745 6109 383 7998 4286 8856 7789 9167 2035 2920 1539 5239 7292 2111 7403 7747 5298 9038 1870 3863 5943 2997 1986 1939 6281 8883 4322 1947 6157 563 2766 9336 1574 7139 631 1426 1911 9577 3624 7429 9591 3174 9940 9348 8220 1781 8945 5131 7512 4921 7376 8520 709 2939 3898 6789 1508 4608 6906 8912 8322 8315 6672 8370 7209 8498 4560 7702 1228 2980 6297 6385 2393 8045 2704 7065 2595 9049 1225 7284 5153 2522 5226 4856 1758 1505 8133 151 2632 3448 1275 8416 8235 4849 5502 3056 6665 3818 6874 1061 1967 4842 737 8324 2441 4766 1519 456 1877 2076 4361 5189 8969 3405 229 9112 1064 8064 2069 3386 2746 7793 2299 5370 3227 2163 51 2459 400 4790 4695 1338 6940 7360 7519 7746 2973 5170 4282 5659 7419 3208 4902 7146 5150 5774 8893 8776 1453 7807 495 9714 4047 5712 6409 7521 6675 5951 8158 6560 5822 8372 9388 6614 3620 6608 8152 8256 37 8735 7401 5955 1347 5702 5921 6398 1513 3424 5214 3910 2150 8408 4812 5763 707 5689 2793 8658 9156 1100 5466 6544 9185 5372 4597 4851 630 3136 9593 8949 6588 4637 6566 1551 4071 9411 9257 3160 8407 9789 1532 1379 655 238 9500 5856 2278 3318 1584 7528 1924 6942 1718 9578 9378 1020 4961 1812 7059 2628 7181 974 83 6215 2821 5245 8194 685 2657 8352 9107 1464 7632 3883 5641 5613 1647 2809 4348 8065 8619 9617 7126 1565 9850 5698 5945 629 1786 2681 6639 8028 2501 2180 5887 7753 246 9175 5302 7391 5636 8870 2106 4867 8363 1140 8096 1341 4604 1414 924 5879 2321 8754 5013 7690 9832 8829 2201 5902 6239 7194 572 5167 5869 2051 6646 3410 8985 3083 3508 2345 5639 904 2430 6506 6607 6053 762 4995 4885 7947 1846 9869 88 9154 7764 1427 8039 9784 521 7651 7216 4903 393 8478 9518 2326 499 5303 38 412 4506 6918 9987 6260 8979 3038 2543 8779 4370 8463 2932 2203 3173 2147 7211 6466 9650 9480 2540 7410 9292 1078 5182 3700 1808 4553 947 7668 6328 6079 5625 3755 6542 9590 3550 9133 9736 2398 6210 6995 5662 3049 2437 93 394 1474 3536 3648 8290 9786 542 7461 1530 6090 3256 649 1198 5004 2043 8917 9249 1953 7373 3126 113 6824 2990 7057 8799 4136 6360 4559 660 748 8919 3670 6873 3537 953 1308 8784 2399 8882 8008 1839 7041 3900 6172 3216 6802 6196 2273 575 2750 5308 4758 3515 9025 5846 6573 794 9231 1114 5979 3563 9251 6766 8430 7213 5123 5986 7535 603 8265 3519 2436 1241 6321 3919 9902 821 4828 4647 8227 8295 232 9241 7101 894 555 1528 2254 2702 7852 5762 3796 148 2656 634 8814 9677 9727 160 6274 9136 2648 7503 9032 5171 2060 3010 453 2639 6363 1292 3352 3146 8086 2276 7027 9207 9198 1506 8437 9959 146 8744 5634 819 4471 9760 6965 6041 2725 7543 8439 7392 9481 3812 3012 2910 4318 5014 3400 723 8633 3930 4655 28 5963 7202 813 547 1300 2739 1559 5068 6283 3089 8174 9353 3764 3798 1527 7892 472 4897 5295 3332 5710 8699 3271 2508 2092 1598 452 5369 8121 4028 4163 2334 80 3944 8663 7629 6116 9586 4968 1975 1830 4030 3640 1322 903 1897 6881 4450 3786 4145 9486 8182 1889 8513 8033 9184 3217 1172 4403 785 8820 7008 4838 6050 2048 6714 7616 9934 5145 1088 592 5826 3022 5036 4800 853 6758 210 8706 4491 2620 7436 1090 4810 797 8682 7886 6194 1041 8230 6917 4014 9436 3885 3723 7022 4384 4184 2169 6025 6470 8271 7222 1280 1378 63 2993 2155 9895 1028 7073 8418 8497 4451 189 4347 1408 4156 2575 5254 513 783 7015 7282 1437 1190 6792 5893 9338 353 8237 5703 6707 8027 9245 8247 2818 5543 7457 676 3295 8173 3749 5807 3257 602 596 3302 8623 2187 1841 4364 6557 2730 3954 9067 4791 2022 5084 1743 1185 8241 1147 5530 5324 240 5066 7444 2365 4894 3862 2549 9344 887 8786 6284 703 539 4907 6733 4631 6477 4920 2585 9178 5563 4513 1180 3613 610 125 7321 913 5793 9566 7460 7607 9021 3359 2506 948 6184 3502 8711 9240 2172 7337 5534 5575 3251 9394 7844 6036 624 4765 8765 3408 1403 7797 4194 2728 5098 9813 9023 4259 8593 7039 3420 1363 1833 4445 5816 8691 8141 7706 7517 873 3597 291 4169 82 8987 20 9537 7868 6752 186 9780 7478 9149 9073 8384 3828 3374 2819 7884 2590 4692 7269 4193 2193 7063 7832 4748 1094 810 5615 5382 1842 6807 2310 4474 6915 4884 9095 7005 36 1725 8701 1381 8780 6812 820 8391 9366 4004 4965 621 1170 3706 1672 3484 2941 4227 583 3073 4132 2287 4388 824 256 5429 1678 2116 671 5579 7060 7042 2285 6272 2649 2192 9814 1602 3589 4154 4303 1782 153 7907 5265 765 8287 406 414 9008 9317 9350 9549 4015 6977 4321 1039 759 7002 8661 1721 4501 5051 2166 9515 9358 6111 2962 206 8767 4967 4639 8283 9042 283 3559 7605 9192 4324 7877 3792 6723 6482 6969 8543 9698 6711 4431 1957 1577 4076 6388 8507 6042 8198 6251 9105 5917 5589 3037 609 7870 5790 7978 4165 570 504 3057 5835 1974 3531 799 3326 2492 3290 5851 1611 9417 3452 4352 619 9951 7383 6569 8988 5395 1101 9263 9103 9626 2157 2054 4100 356 5584 1741 662 9561 8942 7879 7697 9993 827 816 4982 5927 1525 1707 177 5940 3358 7417 9078 2207 4847 1699 1168 5138 2329 7289 8467 4228 3976 501 2979 1673 8063 4267 5019 9696 2290 1942 9033 4476 237 3864 1510 5923 1893 115 4556 4173 4299 9420 6747 5328 5928 6171 9872 1399 2327 386 839 3627 9485 6441 4976 6276 2658 884 7711 8323 3236 9302 7585 6632 9432 1878 183 6455 4938 8990 5425 5545 7010 4887 9246 480 8475 9379 615 5292 1258 2362 2080 1115 6720 8325 4356 928 7241 1458 5012 8120 9756 9055 7560 6832 1250 7587 4962 5535 7425 7422 5894 7413 3644 2583 4436 7531 2823 571 1038 326 8317 2153 7965 6195 8787 9615 1670 6849 9958 7663 5222 5283 3849 1653 1274 4373 9638 1442 8387 8809 131 8188 5197 5796 5389 6120 5297 753 98 8832 416 4341 6651 1467 5773 1914 7077 1716 3875 138 4453 4984 2041 7150 5113 7860 382 3 8838 9120 202 4064 3565 8948 6225 3603 6287 2488 9294 1909 3839 4660 3468 484 4671 2984 5983 184 4385 6960 3399 7116 905 4200 613 6317 5023 8486 6759 954 334 4251 6424 6895 7051 5446 6957 9475 5539 3299 9748 5140 2797 9904 6040 1935 2067 2737 1529 5723 2772 4514 8072 8225 1789 6186 8657 4099 6819 3158 2524 8599 7086 1934 4760 4138 4587 4007 1650 7940 9665 3432 1836 3171 573 7782 7968 1561 9723 9393 325 2609 66 1359 2665 7320 3192 7032 5449 7880 736 5622 6640 5918 4615 6208 4512 6935 3020 3170 6508 8222 1922 5695 6439 8901 2586 3874 1472 1377 7256 1224 6422 6627 6295 47 9206 7398 2558 7836 8825 6745 8683 23 3087 359 4332 7790 5037 2253 3090 4334 731 3825 5808 5667 4381 6847 1636 756 6580 6944 650 8505 2670 8560 7314 5249 2072 3663 7850 7980 3084 1706 4389 137 2789 4261 3629 4485 6147 9952 7769 224 2671 1759 2381 5501 3538 877 6958 9122 6816 7772 5672 2866 7687 2912 8422 2577 3719 4572 4521 5611 347 8660 8966 2198 2200 3443 8690 5287 1840 2026 651 9171 7474 4118 9794 7785 2284 2359 8788 944 3284 1943 1623 7169 6563 1969 5939 9289 6159 3962 1154 9011 1859 377 4011 2801 4461 2095 1160 865 7156 6931 9859 6267 6924 2259 1455 4978 15 8575 5925 2888 6737 9491 6257 812 1944 970 3454 1792 9743 8703 2070 5978 3676 6663 1588 8713 9887 749 7550 5748 4006 2404 7426 8796 6318 9765 2539 761 7602 9202 1463 940 3201 7727 4599 5891 6522 4226 5550 3244 6909 7811 2423 7583 3403 2896 5652 156 3704 9790 9045 3305 7667 3540 1576 9716 2588 1018 2893 2680 8366 1568 2126 3369 8885 2626 7246 2397 2432 8934 6357 3044 2239 216 5237 3327 4616 8216 5599 4067 4174 7037 4290 4093 2757 4017 2450 1044 8645 8310 5583 8517 7000 6787 2483 9874 3567 9877 4349 7380 7281 5795 145 3784 2168 7581 9375 1566 3098 440 6310 8103 5278 9551 6914 3715 2236 5110 3922 7434 2309 1803 6037 2600 8822 2610 7985 2587 5627 3053 4719 2241 561 3196 6009 8686 8823 7830 9430 2482 3401 7045 7249 4580 4365 9364 7055 9070 985 3342 8294 7416 721 3539 2008 5593 1134 5255 1011 2573 6047 6334 7019 2615 9454 7876 9671 4666 1435 6349 7970 9382 8399 6078 1116 3881 2144 670 1048 9135 2071 7186 3813 222 8167 6400 5362 3258 9264 3291 5711 5349 7887 9703 2966 9669 6693 7349 5476 3763 3999 7633 5106 4060 6578 1601 8950 5078 1811 2745 1950 2400 8068 9712 5074 388 6561 1583 1661 8017 4379 3409 8030 2237 5520 2868 2694 4811 5480 3525 5096 6951 3767 7291 1971 2780 8019 2716 6740 3744 4817 8712 1959 8441 3396 5201 2440 5313 2117 6945 3062 5039 8714 2119 5166 3666 231 6445 335 2388 5420 6390 3234 4601 6481 8753 7885 7351 2817 7726 7197 1054 8210 3505 5334 3434 5713 6683 9652 6598 8177 2280 3604 9196 1062 5102 8385 7966 8124 5797 7553 9058 4369 3686 6793 5771 4992 2623 9640 4768 4834 815 729 92 5128 6916 7745 4490 8029 5377 5431 7345 7618 9897 8869 6324 6005 323 2408 331 4924 8860 6579 2669 1740 8470 5728 892 3856 2268 100 6831 4526 1916 3345 1747 4484 3159 4253 2744 2313 3328 1401 552 4964 4463 8023 861 1452 4350 152 8007 7548 1785 3204 7838 8898 5317 4469 3532 8918 3903 1477 792 9276 6571 653 7919 7681 6330 2173 9886 5731 9508 5904 4078 9111 4533 5860 8268 7157 6866 7916 4855 42 1884 6844 7084 8431 6502 355 7518 6612 8931 6858 921 5623 1946 3168 1029 9412 9816 8707 2881 2968 5352 7773 3692 5177 6992 1449 4458 4654 3961 2894 2234 2605 9177 2720 6689 3948 1900 1254 529 4763 9975 1936 1081 6878 7569 8259 9296 1732 8789 1951 9435 7739 3593 8849 6821 2562 3807 6446 9244 8959 7843 5802 5160 2075 8997 7307 9410 8137 5506 6825 5363 2403 2390 165 5175 5580 4568 6775 4058 1964 6174 899 4372 1289 1123 831 3734 7013 5654 5562 1885 8519 5402 2312 8339 519 9798 2614 7108 6183 2412 7841 4081 7537 4425 3949 3435 4652 3099 3493 1907 4985 6586 4935 7666 7941 7379 4784 4741 3482 9084 8637 9870 8026 7131 1790 3669 1797 7718 9071 9927 1494 2389 9179 375 1049 7957 3025 7230 6034 4455 9949 4698 4439 8922 5954 1248 828 8132 8833 3952 4581 4208 4470 1060 5642 2128 4188 482 8175 8616 8179 9039 4928 9238 9427 9623 2625 7835 9396 8584 4432 606 956 5888 9459 8353 5355 635 3558 4523 2655 5216 8592 3455 3521 9968 2379 2250 5735 7206 9034 3218 7477 4895 6142 5022 5456 7962 7848 491 5467 417 2916 3286 9584 6704 7182 1206 8106 9201 213 262 2826 3440 6080 9096 1904 7087 4095 2890 5655 2446 2566 3765 8570 5799 9043 4176 2006 9939 9550 6245 54 7766 2460 4857 9605 4688 1270 7779 3245 6695 5961 4612 9935 6353 2802 6021 8941 4024 97 2781 5612 6966 9239 6384 9012 1386 9088 1385 2958 4932 9036 4625 1827 4190 7796 3081 6141 3968 3844 272 696 3194 659 350 3379 9687 3731 1219 3707 6010 6370 9018 8936 4919 1862 8670 2969 644 706 3980 8004 5142 7394 6428 4262 1119 294 1511 395 7464 4605 2029 8081 1411 9484 8232 7803 745 1425 8596 3466 5701 2820 6576 9092 3133 4657 9399 415 8170 2490 7615 9137 4942 2914 4650 4459 6857 8345 4371 9768 6661 4648 6362 6203 9030 2086 3366 3610 8552 9150 7462 9081 6505 8185 3622 5376 7765 1610 8421 5337 782 3280 313 6668 6625 6254 5739 4062 6706 9124 5669 5892 3720 5949 269 3354 7236 4052 8891 2330 7936 4742 1124 719 2146 1232 618 1251 4690 429 4315 825 9470 4419 8006 3623 9530 7930 3376 9882 2706 1901 2799 8190 2024 5608 8148 4178 127 3203 300 1980 8896 4270 8583 9600 1141 8011 3285 5393 8975 5544 7590 1713 9041 856 121 1473 6760 4195 4913 2190 9351 2357 3779 290 3187 8343 8466 7589 5638 1664 1265 4989 3643 1961 2314 950 4899 9005 4835 8289 1933 1504 8603 5179 8010 7925 8401 6199 3576 1645 589 6442 6641 4949 728 4103 7755 8091 9744 6235 7748 9967 8454 5204 3313 5269 1705 1798 1729 5547 9545 139 9293 7760 4619 361 989 8879 8971 1674 364 2576 8842 6932 601 2175 6659 2269 8684 2311 5786 6474 6749 632 4010 2486 9333 8245 9367 7719 9281 3769 8848 4131 4468 8648 3520 5181 9928 845 2435 2765 8292 2954 4205 1990 1580 5865 9212 8521 6490 8336 7833 3021 2889 1057 3771 3282 5070 4815 5497 3834 8417 4393 8981 9570 4814 9278 8737 978 9678 3894 8298 6880 8697 4630 9960 3580 9279 1210 4731 3191 6085 4158 4500 8393 971 3385 8473 3429 3395 5680 7303 3688 2732 3833 1858 9462 1035 6511 8052 6484 6644 9303 190 9311 5357 6473 1570 7273 8014 3815 9601 3584 1318 1690 4135 3516 9466 3557 9026 3774 112 3745 2133 3594 8529 4732 7265 8758 9526 2007 4343 2559 8640 4836 6313 2028 9767 1765 9195 7424 8361 8066 658 3296 8721 1659 5472 4860 2713 5 9829 8369 5183 7448 3116 2084 7069 8145 7058 7710 5210 1312 896 3698 8759 8104 6378 418 6086 3702 3912 5746 7530 4898 5841 9979 7016 6161 2951 769 9028 1076 4565 2936 2023 5325 9517 6846 2661 2347 4284 5937 1637 2875 6776 7600 1879 835 2105 4285 7889 5383 752 6081 9705 8738 5438 6726 2103 7804 3517 9755 8110 4726 1307 2719 5903 79 5805 3061 6149 2152 8889 2579 4705 996 4391 7004 3581 1886 4883 5428 6237 1752 9301 2640 9733 475 8907 4063 2456 8952 6908 6713 3611 5457 9123 3066 7239 788 8140 1805 8897 1612 3164 8723 397 2749 1555 4733 3799 9300 4520 9861 1075 4412 8921 6278 211 567 3486 2498 4446 2733 7626 502 3474 2672 5877 9921 5247 3298 8013 8462 6869 6628 6421 1008 6744 5737 3301 4931 6947 4946 8354 6875 7227 8201 9398 3000 4449 8326 9547 303 9932 9922 158 3528 7173 4219 2406 5988 1220 7709 3404 3972 7597 7568 5174 9876 9424 6710 7007 3096 8605 197 9461 2376 6148 1195 306 1958 3851 1221 64 4704 9305 8580 5108 8388 7128 6145 3975 8178 854 5057 6227 2122 8857 6088 1596 5122 4841 6246 9312 3814 6348 2182 446 5427 8783 1201 7855 2520 6293 3140 297 9864 8499 3243 5732 3966 7733 8094 2044 4983 3110 6084 8639 6377 245 1828 8435 1409 2036 1466 9907 8568 6211 7953 1912 5094 2014 6160 1371 141 6238 1173 647 3209 4845 9386 3380 2599 5868 7252 4375 9579 5577 6187 5060 5310 3149 7038 4661 510 3561 9405 6478 6232 6647 6633 7988 1634 8389 9937 9440 4617 330 2491 6786 9004 87 3421 3641 715 8887 3169 7952 3691 8771 3043 7105 8914 8826 9401 2726 12 9795 46 5477 6270 1834 279 8367 8821 3989 6415 1259 363 6345 1332 7268 3773 937 7890 8080 483 6123 1562 7393 6799 9834 1502 7578 6642 8308 5107 7497 5067 4609 5803 3802 5684 8285 8134 1306 3155 7287 679 2617 1516 9142 1593 6026 1142 9878 7677 694 6327 7595 7224 7245 8808 2784 1269 2001 4594 5448 8611 7665 9709 7188 9487 1395 2052 5564 7909 6383 4642 5970 5882 5403 1111 585 4177 1031 6976 7145 8811 1695 9771 9456 617 4220 5028 2013 8090 2976 3574 9525 7649 7001 8547 5761 4600 8679 2227 8601 3065 7165 2328 9817 9844 3806 6811 9256 7918 8940 9749 8533 4479 9588 9266 1534 370 6794 9522 9595 4586 6271 852 5257 5962 500 9732 4570 3011 2004 435 4959 5188 8420 4085 1688 4189 6414 587 3189 6089 527 9489 6099 3823 6356 2431 8867 8515 9093 9556 1590 3853 1481 5029 9574 5915 8510 1483 4218 6590 8036 2205 1137 8279 2636 7619 6803 5508 5780 8082 3653 8558 2130 9649 5458 9535 3373 9252 7732 5284 4557 1003 2505 5604 5159 6898 311 9769 1949 3316 2538 9299 740 174 5223 9977 6144 2758 8938 8471 6520 3681 5880 5069 3929 7784 6217 1499 81 343 7334 3811 6308 3330 8 969 7468 1162 8662 8835 3411 9686 439 6399 3125 1985 3586 2030 6231 3394 5307 7891 5418 7118 9404 199 7598 5760 4115 4896 2796 6268 1784 6464 5439 8986 27 9228 522 9770 2707 5165 8351 5607 8329 914 2504 9200 8487 2753 9614 2148 732 7387 3899 1457 7643 3591 348 2908 5032 2762 8892 3963 2316 470 7068 8460 6694 930 9514 3414 879 2773 7390 2788 10000 3308 8649 4833 5132 5899 468 5938 7881 2971 1152 4819 2252 2950 5901 5994 4001 1329 9121 3360 2913 7513 9533 4527 7025 5463 3876 4293 8610 6114 5341 9647 3007 1819 2675 4298 8240 5198 2149 4113 4530 5637 8335 5537 7557 8801 7767 9283 8214 2238 8644 4083 8044 7999 1495 2999 6154 5857 8725 241 9961 2886 814 2872 2551 3778 6331 3143 7054 3733 8846 3412 7368 2829 2953 8273 9408 485 3942 3014 1287 2964 7533 7006 5126 7954 2469 8602 3730 5342 9047 9053 889 1979 4678 6341 5969 4392 1654 3940 6528 834 4357 7433 4725 1163 5789 8280 9254 1255 3343 957 2210 7304 9219 9463 8731 8362 1243 6963 2457 8396 778 8130 2813 9187 3560 6655 2747", "expectedOutput": "No", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000\n51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000", "expectedOutput": "Yes", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "BALLSPLIT", "objective": "Chef has been given a special kind of ball. Size of the ball at any given time is indicated by an integer, n. Also, a ball of size n can be split into two balls of size n1 and n2 if n=n1+n2. This is done until neither n1 nor n2 can be written as product of legal values of n1 and n2. It is said that balls of size 1 do not exist.\nGiven chef starts with two balls of size a and b, he can split either of the balls in multiple ways such that they cannot be split further. For all the cembinations of such splitting for both the balls, chef notes down the maximum absolute difference between sub balls of the two given balls. What is the minimum value among these noted values", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each test case, First line contains two space separated integer A and B denoting the initial size of the balls"], "outputFormat": ["For each test case, output the minimum noted valu by the chef"], "constraints": ["1 <= A,B <= 10^9"], "round": 0, "sampleTestInput": ["3 4", "6 8"], "sampleTestOutput": ["1", "0"], "explanation": ["Splitting balls as 3 and 2+ 2, The max difference is 1. This is the only possible splitting and hence the output is 1", "6 can be split as 2 + 2 + 2 and 8 can be split as 2 + 2 + 2 + 2 and the max difference is 0. It can be shown that for any other possible splitting, difference cannot be lower than 0. Hence the output is 0"], "testCases": [{"input": "1\n6 9", "expectedOutput": "0", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n7 9", "expectedOutput": "1", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n100 121", "expectedOutput": "1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n248785748973758934758978978768945896745654 3485738975837583758734857348578437584375843785432", "expectedOutput": "0", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n29005460600454830466116280404610937241609159934266884270177622692593903718521525319842155036615799347659710559710559713701749473250785210893164659420827799876 29005460600454830466116280404610937241609159934266884270177622692593903718521525319842155036615799347659710559710559713701749473250785210893164659420827799876", "expectedOutput": "0", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "ZMBAPCLPSE", "objective": "Chef lives in neighbourhood which is made up of small blocks connected via roads. Each block has a specific identifying value such that neighbours of any given node is 2i+1 and 2i+2 where i is the value of the current block. Given chef lives in block 0, a zombie apocalypse starts at a block, Z, Chef needs to get to block, D asap in order to escape the neighbourhood. With each step chef takes, zombies spread to immediate neighbour block from their current blocks. Find if chef can make a safe escape", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each testcase, First line contains an integer, N denoting the number of blocks in the neighbourhood", "Next line contains 2 space separated integers D and Z denoting the destination and starting block of zombies"], "outputFormat": ["Output \"Yes\" if chef can make it alive. \"No\" otherwise"], "constraints": null, "round": 1, "sampleTestInput": ["4\n3 1", "4\n3 2"], "sampleTestOutput": ["No", "Yes"], "explanation": ["No explanation", "No explanation"], "testCases": [{"input": "1\n15\n9 6", "expectedOutput": "Yes", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n20\n3 12", "expectedOutput": "Yes", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1293893\n232 12213", "expectedOutput": "Yes", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n3748374\n7324 7324", "expectedOutput": "No", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n3744\n2332 323", "expectedOutput": "Yes", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n427643\n23 76", "expectedOutput": "Yes", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n384783\n232 343", "expectedOutput": "Yes", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n343\n43 43", "expectedOutput": "No", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10\n2 7", "expectedOutput": "Yes", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n15\n6 9", "expectedOutput": "Yes", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "WTEQLZ", "objective": "A giant Ferris wheel has been put up in basin city and everyone wants to sit on it but there are a few conditions that need to be satisfied before that happens. The town has n people every kth person has a weight w(k)- that is the weight of the 1st person is w1 the 2nd person w2 etc. The conditions are:\nOne capsule of the Ferris wheel can only have two people.\nEvery capsule should have the same weight. That is when we have n people then (person1,partner1), (person2,partner2).........(person n, partner n) person 1 + partner 1 = person 2 + partner 2 = \u2026\u2026\u2026 person n + partner n = capsule_weight\nSince the people of basin city cannot figure out how to achieve this they have called you a magician, as a magician, your task is to select a value of capsule_weight such that maximum number of people can sit on the Ferris wheel. Once you are done with the calculation you have to tell them the maximum number of groups that can sit on the Ferris wheel.\nFor example, there are 6 people: The weights of these 6 people are: 1 3 5 6 2 20 one of the groups that can be are: (5,2) and (6,1) hence the answer is 2", "inputFormat": ["-The first line contains the number of test cases(t) -The second line contains the number of people(n) -The third line contains the weight of each of these n people"], "outputFormat": ["-Output the maximum number of pairs which can sit on the Ferris wheel"], "constraints": ["1\u2264t\u22641000 1\u2264n\u226450 1\u2264w(i)\u2264n"], "round": 2, "sampleTestInput": ["5\n5\n1 2 3 4 5\n8\n6 6 6 6 6 6 8 8\n8\n1 2 2 1 2 1 1 2\n3\n1 3 3\n6\n1 1 3 4 2 2"], "sampleTestOutput": ["2\n3\n4\n1\n2"], "explanation": ["For the 1st test case (5,2) and (3,4) add to 7. 5+2 = 3+4 = 7 hence only two pairs are possible so the answer is 2"], "testCases": [{"input": "5\n5\n1 2 3 4 5\n8\n6 6 6 6 6 6 8 8\n8\n1 2 2 1 2 1 1 2\n3\n1 3 3\n6\n1 1 3 4 2 2", "expectedOutput": "2\n3\n4\n1\n2", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "2\n50\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50\n50\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50", "expectedOutput": "25\n25", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "2\n50\n50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50\n50\n50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50", "expectedOutput": "25\n25", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "3\n50\n17 24 43 25 36 48 4 35 17 42 9 5 3 10 46 7 13 22 5 6 35 37 36 15 43 1 12 2 43 41 28 40 9 4 19 36 17 19 9 47 26 21 12 29 38 11 1 15 12 31\n50\n11 28 48 18 46 3 17 20 46 18 31 28 29 13 10 41 35 4 43 9 40 1 35 46 34 4 19 20 20 7 17 21 27 29 10 3 15 44 47 18 20 48 48 31 33 27 12 10 11 2\n50\n29 25 6 7 43 12 35 1 48 32 34 49 13 49 31 5 4 42 22 46 42 18 16 37 21 49 24 30 29 12 29 50 17 42 2 43 25 7 24 25 23 16 38 3 43 47 13 38 27 30", "expectedOutput": "15\n13\n16", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "7\n36\n1 25 34 5 13 29 2 5 23 5 10 20 23 10 25 20 14 4 8 19 23 31 14 24 30 30 29 23 35 23 17 15 27 14 20 3\n41\n4 8 35 24 1 19 10 2 27 13 38 40 40 8 22 30 20 23 3 6 35 34 15 21 33 11 37 27 15 27 41 18 34 36 3 35 13 12 36 41 26\n4\n3 3 2 1\n7\n1 3 4 7 4 5 2\n19\n10 4 5 19 5 5 1 8 19 18 7 18 17 6 14 8 4 3 10\n23\n2 4 8 5 17 17 21 16 14 20 15 20 21 2 8 15 19 23 12 13 20 1 16\n16\n14 11 4 6 5 11 8 4 2 4 10 6 7 16 6 13", "expectedOutput": "9\n12\n1\n3\n5\n6\n5", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1000\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1\n1", "expectedOutput": "0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0\n0", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "3\n50\n2 2 2 3 10 3 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1\n50\n2 5 6 9 10 13 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1\n50\n2 5 6 9 10 13 14 17 18 21 22 25 26 29 30 33 34 37 38 41 42 45 46 49 50 3 4 8 8 11 12 15 16 20 20 23 24 27 28 32 32 35 36 39 40 44 44 47 48 1", "expectedOutput": "19\n22\n22", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "GDKDNPR", "objective": "Mary Port is organising a carnival and all children of the town are attending it, there are also multiple kidnappers in the carnival and only one policeperson. The children's area is the area where the parents are not allowed and is a good area for the kidnappers to kidnap the children. But there is also a policeperson who can catch these kidnappers. So the policeperson is at the front of the carnival at coordinate 0 and all the kidnappers are between coordinate 0 and C. Now your task as the head of the kidnappers is to ensure that most of your kidnappers reach the children's area you can select any of your kidnappers and give them instructions to move.\nThe movement happens in the following way: 1. firstly a kidnapper moves closer to the children's area by 1 step if it reaches the coordinate c it is successful and cannot be caught anymore. 2. Once any of the kidnappers has moved one step the next step will be of the policeperson who can also move 1 step if at this step any of the kidnappers is found they are caught\nThese two steps repeated until all the kidnappers have reached the children are or are caught. Now you ask the leader of the kidnappers to ensure that most of your kidnappers reach the children's area you can do this by selecting any of your kidnappers when you get the chance to move 1 step. At the end you have to print how successful you were that is how many of your kidnappers could reach the children's area", "inputFormat": ["-The first line contains the number of test cases(t) -The second line contains the coordinates c and k the number of kidnappers -The third line contains the coordinates of each of these kidnappers"], "outputFormat": ["The maximum number of kidnappers that can reach the children's area without being caught"], "constraints": ["0"], "round": 0, "sampleTestInput": ["3\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1\n12 11\n1 2 3 4 5 6 7 8 9 10 11"], "sampleTestOutput": ["3\n1\n4"], "explanation": ["No Explanation"], "testCases": [{"input": "3\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1\n12 11\n1 2 3 4 5 6 7 8 9 10 11", "expectedOutput": "3\n1\n4", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "4\n2 1\n1\n2 2\n1 1\n2 3\n1 1 1\n2 4\n1 1 1 1", "expectedOutput": "1\n1\n1\n1", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "3\n1000000000 2\n500000000 499999999\n1000000000 2\n500000000 499999999\n1000000000 2\n500000000 499999999", "expectedOutput": "1\n1\n1", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n1000000000 5\n900000000 900000000 900000000 500000000 499999999\n1000000000 5\n900000000 900000000 900000000 500000000 499999999", "expectedOutput": "4\n4", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "2\n10 6\n8 7 5 4 9 4\n2 8\n1 1 1 1 1 1 1 1", "expectedOutput": "3\n1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "MINAMNT", "objective": "There are n islands for which X and Y coordinates are given. Chef, being a greedy ruler wants to conquer them all. The cost to conquer each island is K. However, when chef conquers island, he can connect them using bridges. When an island can be surrounded by other island and its bridges completely, conquering the island becomes easier. The cost to conquer now gets divided by a constant C. Chef wants to spend the least and conquer all the island. Find the minimum amount he will have to spend to conquer every island optimally", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, first line contains an integer,N denoting the number of islands", "Next N lines contain two space separated integer denoting the x and y coordinates of each island", "Next line contains an integer, K denoting the initial conquering cost", "Next line contains an integer, C denoting the reduction factor once an island is surrounded completely"], "outputFormat": ["For each testcase, print the floor value of the minimum amount required to conquer all the islands"], "constraints": null, "round": 1, "sampleTestInput": ["2\n0 1\n0 5\n100000\n2", "4\n0 0\n0 1\n4 5\n3 3\n50000\n4"], "sampleTestOutput": ["200000", "200000"], "explanation": ["No explanation", "No explanation"], "testCases": [{"input": "1\n2\n0 0\n0 5\n1000\n5", "expectedOutput": "2000", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n1\n0 0\n10000\n2", "expectedOutput": "10000", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n8\n0 3\n1 1\n2 2\n4 4\n0 0\n1 2\n3 1\n3 3\n10000\n2", "expectedOutput": "60000", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n2\n0 0\n4 5\n50000\n2", "expectedOutput": "100000", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n4\n0 0\n4 3\n4 5\n1 2\n100000\n2", "expectedOutput": "400000", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n30\n62 82\n38 11\n7 74\n73 26\n25 93\n71 39\n8 59\n21 97\n94 72\n1 45\n22 40\n57 32\n88 80\n56 19\n12 18\n48 25\n40 67\n69 72\n43 73\n59 81\n59 19\n11 78\n69 72\n62 23\n100 47\n98 10\n35 59\n90 64\n8 100\n17 51\n100000\n2", "expectedOutput": "1743750", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n7\n0 0\n4 3\n1 2\n4 5\n3 5\n6 7\n4 10\n100000\n2", "expectedOutput": "550000", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n500\n85 11\n9 29\n63 88\n73 89\n84 98\n70 84\n56 62\n77 20\n4 57\n12 18\n52 55\n22 57\n50 74\n12 16\n59 6\n78 81\n91 63\n13 6\n62 70\n20 54\n100 27\n64 58\n100 84\n81 94\n62 68\n80 61\n8 3\n26 10\n39 21\n4 100\n44 16\n51 69\n55 63\n11 96\n7 60\n23 14\n58 7\n32 71\n24 49\n24 26\n26 56\n77 64\n93 95\n46 70\n30 78\n14 70\n44 80\n60 58\n40 61\n99 14\n71 36\n5 47\n80 54\n48 74\n54 51\n29 95\n11 92\n33 48\n52 88\n28 9\n52 88\n38 32\n45 76\n54 31\n23 76\n47 52\n95 38\n1 28\n54 78\n73 80\n41 32\n54 59\n3 87\n34 1\n16 99\n66 53\n43 71\n15 87\n9 27\n28 8\n73 79\n81 32\n21 44\n47 44\n68 69\n77 51\n50 13\n2 58\n47 53\n90 51\n3 70\n73 42\n90 6\n98 34\n91 87\n74 99\n81 82\n18 85\n21 86\n71 10\n6 21\n99 63\n27 11\n62 16\n16 77\n43 13\n79 43\n97 82\n4 4\n12 20\n26 55\n37 57\n58 85\n2 18\n92 4\n85 2\n98 75\n40 9\n16 25\n59 93\n81 15\n80 25\n11 29\n40 49\n64 5\n41 20\n33 74\n27 97\n42 21\n74 42\n83 58\n80 11\n51 23\n16 18\n57 1\n23 60\n80 75\n59 87\n46 37\n91 97\n30 14\n59 95\n35 78\n44 72\n8 31\n66 4\n8 66\n63 8\n8 99\n67 26\n34 2\n59 56\n72 37\n26 74\n5 8\n60 53\n11 34\n87 44\n49 54\n28 20\n37 43\n81 74\n53 44\n41 55\n64 20\n63 88\n83 53\n69 92\n6 12\n2 48\n60 3\n99 74\n8 49\n44 33\n11 14\n39 77\n26 43\n84 29\n31 6\n28 35\n60 52\n28 75\n51 51\n58 40\n44 6\n68 4\n34 27\n30 59\n35 71\n43 98\n59 77\n3 82\n44 23\n92 60\n28 74\n100 67\n27 26\n3 14\n40 51\n55 58\n55 37\n26 16\n62 60\n47 35\n30 86\n97 31\n24 51\n70 84\n70 19\n39 83\n33 94\n25 63\n71 79\n5 64\n46 67\n74 17\n31 100\n63 91\n55 94\n19 97\n90 77\n36 78\n21 20\n82 26\n89 7\n53 81\n75 79\n100 31\n98 18\n23 28\n49 28\n27 30\n70 6\n79 28\n31 57\n66 69\n53 93\n82 21\n83 44\n18 50\n8 67\n69 48\n86 71\n71 53\n67 62\n98 16\n26 39\n100 48\n82 9\n23 82\n52 30\n78 36\n74 89\n64 93\n56 92\n84 22\n44 40\n61 93\n61 14\n65 37\n58 63\n49 28\n72 88\n94 83\n17 80\n18 75\n27 98\n95 78\n6 78\n90 39\n46 17\n63 49\n75 24\n1 90\n100 44\n81 39\n50 53\n1 9\n93 1\n94 45\n84 83\n46 37\n44 34\n33 76\n29 10\n84 85\n74 11\n4 43\n35 99\n81 16\n96 100\n19 12\n89 83\n58 38\n50 37\n91 67\n54 27\n67 47\n44 57\n40 71\n61 30\n34 76\n49 33\n26 77\n60 37\n77 75\n93 3\n60 5\n27 25\n45 86\n33 12\n8 29\n96 28\n57 57\n18 75\n69 55\n93 52\n29 13\n77 94\n24 69\n8 10\n97 25\n82 43\n51 59\n51 63\n84 23\n35 91\n83 65\n13 50\n55 69\n56 95\n83 58\n94 18\n67 96\n20 87\n95 70\n27 81\n52 32\n2 46\n10 54\n71 81\n81 67\n40 1\n84 77\n100 57\n39 83\n78 93\n76 68\n51 78\n84 5\n62 74\n64 8\n81 10\n98 84\n12 30\n50 62\n52 78\n49 78\n79 76\n37 88\n56 63\n29 97\n14 95\n80 53\n61 66\n92 89\n50 98\n89 58\n74 87\n50 65\n99 80\n28 86\n27 48\n26 40\n58 31\n20 85\n48 51\n46 30\n85 28\n100 27\n70 33\n89 26\n67 42\n5 86\n46 29\n100 36\n34 56\n76 73\n27 43\n69 49\n97 65\n20 44\n20 81\n2 39\n4 74\n91 27\n12 3\n60 94\n90 83\n9 5\n51 64\n77 47\n40 45\n15 37\n14 74\n23 10\n57 56\n66 100\n64 56\n25 28\n96 28\n12 84\n72 12\n93 57\n49 50\n80 86\n92 74\n49 53\n67 95\n49 1\n44 25\n91 62\n57 55\n73 10\n98 1\n66 4\n63 33\n72 84\n4 22\n92 60\n67 93\n1 59\n21 23\n43 79\n91 15\n83 9\n23 29\n39 71\n49 10\n24 94\n68 44\n86 58\n89 18\n91 49\n96 21\n73 30\n56 41\n37 69\n84 14\n52 41\n27 82\n24 33\n15 2\n19 73\n77 18\n79 81\n11 29\n50 89\n13 43\n54 52\n11 54\n72 60\n2 70\n85 96\n32 65\n65 2\n59 55\n57 7\n64 73\n14 83\n41 74\n6 28\n7 63\n1 90\n43 32\n8 86\n13 44\n21 70\n10 23\n44 65\n63 18\n45 1\n40 19\n39 62\n25 30\n11 62\n90 25\n28 77\n46 83\n41 9\n94 84\n46 56\n80 68\n71 76\n25 58\n53 81\n63 64\n76 79\n80 84\n71 83\n100000\n2", "expectedOutput": "10705380", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n494\n94 64\n23 48\n16 69\n98 88\n60 95\n55 66\n8 68\n52 32\n30 87\n63 50\n8 94\n22 30\n7 12\n31 86\n72 54\n89 96\n26 81\n33 21\n55 96\n54 100\n8 55\n55 71\n30 54\n98 58\n52 19\n9 31\n80 32\n79 50\n21 74\n38 53\n39 17\n58 37\n36 49\n45 27\n1 41\n87 21\n87 74\n65 16\n39 90\n68 9\n90 75\n49 14\n91 41\n14 22\n39 42\n14 56\n87 42\n70 62\n20 49\n51 57\n68 73\n61 48\n23 92\n39 55\n53 86\n82 31\n27 88\n38 3\n30 15\n72 55\n11 10\n25 7\n64 33\n95 24\n33 76\n5 74\n15 77\n32 45\n91 90\n10 99\n86 9\n48 3\n92 91\n41 43\n17 93\n34 40\n6 81\n51 92\n98 80\n20 26\n96 84\n82 67\n83 57\n16 16\n58 52\n71 87\n22 91\n19 6\n10 18\n78 35\n35 96\n89 12\n6 25\n65 34\n17 40\n30 6\n58 31\n29 95\n6 70\n8 43\n23 88\n37 97\n35 33\n29 7\n49 9\n13 9\n34 77\n31 69\n82 65\n96 60\n64 98\n18 38\n54 29\n62 17\n36 37\n56 14\n99 26\n83 15\n26 4\n85 30\n16 26\n9 25\n19 76\n31 19\n10 11\n68 73\n83 81\n63 49\n68 38\n29 93\n30 24\n31 85\n32 71\n36 20\n52 47\n16 38\n20 32\n51 84\n4 31\n99 30\n65 54\n53 89\n24 8\n13 94\n83 100\n74 89\n1 18\n44 98\n84 76\n46 69\n93 77\n1 64\n9 96\n1 94\n36 55\n67 94\n40 67\n19 54\n12 64\n5 91\n4 8\n60 74\n2 54\n27 57\n46 76\n51 53\n82 50\n54 1\n77 71\n53 53\n8 18\n3 77\n66 18\n62 72\n70 79\n90 83\n15 20\n73 96\n37 54\n37 55\n42 80\n5 36\n74 28\n40 18\n13 30\n93 36\n88 18\n1 57\n2 83\n24 75\n3 38\n29 51\n85 35\n99 27\n27 9\n55 8\n6 61\n100 36\n46 85\n84 36\n92 78\n46 60\n78 20\n47 55\n53 76\n69 83\n14 99\n64 80\n61 5\n22 50\n42 30\n74 61\n71 6\n11 41\n61 87\n64 3\n3 72\n86 74\n92 51\n33 34\n98 76\n47 85\n45 4\n4 91\n54 32\n47 31\n80 26\n79 34\n48 77\n34 34\n79 91\n70 67\n81 14\n93 24\n57 17\n97 54\n21 90\n20 61\n21 53\n16 81\n100 43\n16 42\n98 47\n30 92\n50 55\n63 19\n48 9\n62 90\n56 61\n64 23\n38 1\n59 44\n98 54\n51 23\n40 69\n59 42\n15 86\n96 74\n55 94\n88 88\n88 95\n14 1\n91 31\n81 80\n7 74\n52 70\n28 68\n56 52\n56 78\n43 66\n54 6\n31 8\n70 82\n71 65\n65 45\n73 88\n21 35\n28 8\n76 22\n86 34\n70 53\n16 83\n49 37\n96 23\n99 75\n68 30\n32 14\n37 31\n26 55\n93 17\n70 56\n19 99\n35 10\n43 43\n12 98\n57 79\n4 48\n26 95\n6 39\n58 86\n20 52\n40 73\n39 55\n45 62\n40 61\n70 25\n90 82\n91 82\n20 57\n13 6\n64 13\n56 26\n20 24\n14 20\n27 20\n34 27\n71 53\n41 76\n61 59\n52 31\n35 73\n62 49\n45 65\n40 45\n17 36\n99 2\n81 57\n55 2\n59 41\n99 15\n50 11\n48 27\n67 76\n35 30\n81 59\n63 25\n76 93\n58 14\n50 44\n21 73\n47 91\n56 19\n38 31\n34 22\n86 93\n61 31\n62 78\n68 94\n96 64\n52 77\n34 4\n27 58\n11 63\n96 65\n57 40\n89 35\n32 66\n35 89\n37 97\n93 88\n10 16\n56 74\n66 45\n20 76\n33 39\n74 22\n82 91\n40 73\n4 45\n100 99\n6 40\n29 86\n25 96\n16 47\n69 67\n24 38\n52 11\n22 65\n67 59\n6 100\n74 49\n21 88\n1 29\n78 33\n88 26\n25 59\n15 29\n28 97\n50 94\n14 79\n17 21\n64 6\n16 69\n2 38\n80 47\n7 34\n27 36\n99 66\n56 83\n56 19\n41 11\n92 4\n94 77\n35 3\n36 86\n85 56\n81 78\n18 98\n49 37\n44 100\n13 38\n15 77\n86 41\n94 53\n61 22\n36 2\n2 28\n6 83\n98 12\n47 28\n38 19\n64 75\n54 53\n21 88\n72 25\n94 19\n86 23\n11 96\n28 87\n81 55\n78 25\n89 65\n31 85\n1 84\n91 78\n86 26\n32 6\n69 82\n96 30\n50 47\n56 88\n48 6\n6 50\n56 61\n62 27\n80 16\n27 70\n24 48\n31 83\n14 21\n16 53\n22 22\n32 58\n43 97\n50 40\n60 40\n14 79\n100 73\n97 26\n90 31\n22 73\n75 64\n100 64\n43 9\n68 98\n99 9\n71 3\n39 92\n80 68\n69 6\n87 57\n79 33\n49 24\n10 19\n93 86\n53 46\n28 64\n79 84\n88 37\n18 59\n5 58\n47 10\n97 78\n26 63\n64 35\n27 60\n8 40\n9 22\n36 67\n34 35\n80 93\n60 15\n18 13\n88 46\n100000\n2", "expectedOutput": "10807071", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n49\n46 24\n38 31\n24 35\n94 46\n81 11\n89 4\n3 95\n21 74\n76 94\n26 47\n9 88\n33 26\n77 22\n61 41\n73 30\n4 83\n14 32\n34 21\n25 27\n96 91\n59 57\n84 68\n11 4\n49 24\n69 58\n72 23\n49 37\n38 4\n76 20\n98 69\n48 95\n83 13\n26 53\n25 4\n90 12\n19 74\n92 20\n12 67\n69 14\n38 20\n73 23\n97 90\n50 72\n74 41\n7 70\n85 37\n14 91\n74 34\n16 68\n100000\n2", "expectedOutput": "2081250", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "MACHINES", "objective": "Chef sets up a factory with just 1 machine initially to manufacture more such machines. Chef uses the newly manufactured machines to manufacture more machines for 2 days and then sells them. At the end of 0th day, no machines were made. At the end of 1st day, only 2 more machines could be manufactured. On all the coming days, chef makes his machine more and more efficient such that on any given day, machines manufactured on the previous day manufactures 3 machines each and the machines manufactured the day before that makes 2 machines each. This way, chef scales up his warehouse of machines. Find the number of machines manufactured on the end of Nth day.", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each test case, first line contains an integer, N denoting the day for which number of production is required"], "outputFormat": ["For each test case, print the amount of machines manufactured on the Nth day"], "constraints": ["2 <= n <= 10^6"], "round": 2, "sampleTestInput": ["3", "4"], "sampleTestOutput": ["22", "78"], "explanation": ["Machines made at the end of Day 1 and 2 were 2 and 6. Hence 3 times 6 + 2 times 2 = 22", "Machines made at the end of Day 1 and 2 were 6 and 22. Hence 3 times 22 + 2 times 6 = 78"], "testCases": [{"input": "1\n2", "expectedOutput": "6", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n5", "expectedOutput": "278", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n60000", "expectedOutput": "111976719836900641648717738219244233742937104484737461848012039892098549520641349643934300138637764084641254349293171280431052106533060636821921071227018697020997701872591964401611006761614654952249120769254637051927461421687861840594104544288405625979241336240109843000156423597984917034482142556100484225376585713641452543144409410919132404035737374193940207358334747827895811658627394093923159322711976062541233719321470138558412676156095993091180175564481837464481144738611250682625362912797877067695392690863953856166005982906056362654746457236286171637846119869115052674273695973073644900923227030573087927828305930065026606907717226055898777313064723001994960335008479930751323902247771394039323604647466302175631221633445820259975424989280010874918313766573349657739486703114454505879690625456072777506540592333177351095102880299339428980876475501066495310304528011054335929727220536163505164234682314193114103792983342124404161951948064340667049296370809373828284217091817790060578995955580700869898565436885146986649194290070978553276232670531901150705329070444415641454035857752326798038201618291718077034089453772228110160621402323687480118363542138471890587705940686820468938196970922314786588208363966413291586104682316910109716657544057527456158407945703133796025725625793326722280214061789598291634220144706442818161971745950702544965094568533594098693010970294766651894114170399692320033700056620363036993395629966538627332112236958626664007396294327858807333945338722815431963638116159309226935950011869324106716643106866669359939970039810184288015152039141064070981018996269808643945435038165771245137982161134503863149744872540631167977026135762581018915582063805885143026656237962130464344866778881304921819268237405685426254389955484160103541803310541519132757557812828547751278627703564110087250972777094095986740931675495205223122947210551255510100906503180280344913968628258918610238494027341978928314929491618140864415070407171658966185446923625891486510884964792650469652467837915181013622463184025745983919672685218222250423337933840966870784952059017244113651879950117665990519563443241258572303582476579316491805331237250430377793174320208197589388883974482934780862186294176198037620061452690431000142921478274770734548559462182481022339994170879697671867819424901650394879539261967131341903646239570436636456481437260405630054049314265299408481245380602356546139922123489185374945498434428530260671937463561379247747751307052224993399408877917126920615149947957296345245141957126268283440678014016975860178216053584249742381490733783981160486349401187159001293845451951557125356572920730773141796811757092449562567896412326345115439208802874068369754023280499551427220731115647346497387126878357553119443815250974506333540663336644153136933326725867833368935301899236799110999147494274673318803961551158581674409358152657971309066201212131500623651019720480458808357419717403684128384901692036599354882595182157041325603129616578403385941655298234218181857298691571456130529853583580906339908849747874092894312473768963227544810610001039229303565206572722243304404056599624102984384871148433517239889199991273214931170564465949129477295729697251466533051701179501367381548606650774695427385578403636674992098793257778393556804806280736756078848306476239810990370847321212921253428307059355357965148499982121235262793155047568183851654193373094138645440223524544860527995206288112647986984737108839326710962031031572788619141841522439066557377653269439823309042449982217324273417030923665455704279785475735410283971268414876140036024355528908591436315382976972606627356341008944039115470443921635580827392755077137883809806481112826948972160529738772379589339890016849681468561456921837218885870743711431106221541343265124520306619482435969878980532923995369851634720244783774049311062889678224589778742704935921753951689825838603090649344263688023259294638852423272211600888948474388652117328701655345651286470190761405731082827401779757733072374920478878505501102736249448954152938666799270020617297177576373154945198231737094347150197164769134598473626454355899814843107062166943228565089314234234072222329351604425378248824748629048025148346470718044625053677565183551869940735084200274058133721685151389983735643949313098514979986016714624830101321237559836098279518817765829769829754475164506398135821125010776696215808027018049205833182655996923893012220010230206929390880009181058422463224027607076184553784197031443720518895335287170191406967252813904571692960536859855590773717847669521376881672132999450762826116138519679006062126380125766509399630592675023058182029505302917323632617448074551801353407841198543406028814028119725952194140786307377050180061857132381175377129991663351752035054952041692649361001065889089362998937638951184025862273260761862029250407504347351455162386818467630752128396554351718692582234870868969755269106617944459143531354966540453237985266655834561343674996850979764562418494495284159538521501498644506034848899938868234404782809300579137198309157522056574163285891080138016496176242511212470529143687064508243506995497337099923411150241878474431421523563798101271501998460754337558025344267919998739062236420596448369771506109840395293075176533079877555698834411712919472510940244053313423979260579992000691596962564313178274243469958537220431782346693620138952384195575539367581067919969385024566089138608159296050746382908578490171436132284991684316429174728680525683174594933504078159119841030103609092721469689635413784024431372271322303899996069041181114018140939651003970689578755610780890582983035837612220754121330769036543528074913719459415139609882464686217047360197457573228313876466948212864654149812729327674075537882447045494205014842259466880879113410248259050168342873328403843663596651115339197085722689697919670800485296787811926000996793924428346862293877211806694417624227670708148836320732191538915479895114973235627961502679911667708966756994119560645898218347134725624887294571886581768571072150297775423381966112094635324891908849099748967296206330178477721623711029311952292188834680028551169629536951142230507979953262114126633184706708353579886797859245665091670742806073894996858219154576164727743334347827971983700209453543121566588370983525731544785514991362507512502570316032269628425645223907293767890135482501567933985983293692373419281072281395512857296643955820151395509233686615906614294148353716435436666466329740406604103131206454322133268970595322809054506843606643397981345822795906027347366806821931937197257055742649423334448033838640753131369545529381236312645433578941286840392523494263375437389429282081488698326042890653474994593981915744085183052759137920545647942843631391053957488974624133506247461326586646728251153450868273659498356557370746300231658878080179745927514375863062699455048013489532571388408509294102407493970393226223467762467327425639478801646150212403192651150907845920556010834296216538806160117203090847300690414327900649813244460172583164259222550711832867206498680944079449676180473122324036287792359604593333596572642393230234245590564468293195212305570694487804832267503292098063258482000870652915263396110209571097938002351121210076894604692291225284178496025292670139597431884192591427258596242703940743378003059441549555422835316747471737361809841938940595950775695444131482404595964127316504895640456297095563115451340680592710633948940870772866340548688561925267456288559117001598774283288946739738710220363149541473167006776503746935871349184903374567495296809384565256526273946382218500175935809799259616415509455031105414704521294754014099046867692658016588445048091336220305617476141951027332008693835495753878305407988756085532732881067645449622816631838868217293219679126762479001737118270735991810900206303921668408015013646509317365640428971717943006797017368685077960501738320667505631681999259206488514135793002305990162563365127477584317497806161635128238221709061403513259218723361437722529413949130362389997611692891982065730077051694142170572146209203479621401874028878042363450637608193127699263969052849402587106069896837881111977155266782458322806777321915430197187720000275365716311217406408452649907825436761666704862598424438410096884873722888437099690605361887478399673763514881231599993491852894001299767861930586192267174519238157244306252085435135722094735568605515277847311022865774352972780468910360780006868486619910446229854150872334951187958032437772596050689641872572820346737078165979290499731086243891922553734943108976320427683149146591991948957444499523958700914245748012007381011811627028547079551152360710149332542589587322424741786943619564615195806163433696833073412510715185373927968454762771791527510210639882850929003542514149369952009790537788483139457876139292464714685494177849980137349414187196406929001858270833227704345713228119341084921981267026299611424373168762559913976661016034162670675109974967134674285443811729566348412180125703186081691629176111505843432987873234548487787386082531098014525356584505970061056805489825795894197493777422189305548276241830756491621832439898440347274535476391914250220024636578722164900159163448910153013522010467428101698079071301382421820489025412208129180110234957084719180249768242802566022481318506695666559703398316603644596004327059117620196027498861568501330571654940022617739715840201289561733595418543768636372878928655145728122985473286105441804899410705055552252681613240715663084571897578923618185100092884867280120697217048768035149156332040873289181065363933408543265916512941587990805473806065065080560588088255583423997065574248089472740053018718352362042218392462928670803496269512083424317968157642247422633579455183943323123505108345403412758163958503610546117137467191253730746269041768795751894728822837688420400051360447622336245167516439093733142445850771818074113556738948660096990139714979596251133743379028125581318444129149028330852853722404284567582062442275979665534560554274612939733128338149842630501530043161607323830737105245623576823138575526799090387913234364580841644840287663517184673945236887513027487537202993177908572329435802448452625210706294804033678224457741850737146689969620787136826790883451418731968889917083793034255346354424021349642962925856290709765723053351800989937183105212717943950860046816862752231606678526716051225631591103510679834870484769510081073264867515619338784301794061546454755860607815958864703751314455086094104915627053851103467955825108529235477938770601910043788627765637874127185711695114701299742967747117917886423457558553917990623383838391102411342207585193979406609846810546156385483202351904667589962092707269308270662475717387049943801265384673464241083778243800855312625964545547769227254628111741258902551043416307667950320168149622388285051092808277017714957157406044728463672518535941480261378920998502510978866915349814664154740716758306622893932201603589528762621688150601642278837105842743448925532418164720759737995571912121016780205210261597234795481182056203988915495456528287481479300393557351780743818774042318849403310792501325279865389243978172342204355458630348951026709631873402541274886744032335335995547347923669825879045224807874676711594893257212863343435973591265639650208543819081528545669085118523511713758421642150871329572117221193648698080617763261581509384267552579195193654579252218202093971370362762990029113689754956541693925100155292084795180802579588848324615140578416298956695782690532401907067513192663970144514549947591878209901909502943544290239546231178999731541313482109880017055669450496216423659397533780190145277465410917550040875602207242066994146215348334118316324150598825051752302582685970254007298980102983315742263214485581701891917125447747023085106200033559627042074339803455062074282246644797806328371453071110346600740975885335984594249402220584372400811457017400711302375048905189700792072294249859180942623940011522782424540687135127385071888994204546340941657915236995967642321622949500516660469622765321750847617174815364402370550758617641274847015006455327497700660613346609643657339058154554090496153263201631313141422344661626550444721312653652804315693937633830904654776941823865173030979023457302944294949978854479695711136446397441435901756558895425256125412371591153254635034397316667295300839245945944240542788943951951802338521997900352486862947751713089929929284668539819115045873039990421517909822364587646153128995408382865121975787667933961759496764270562697892039027205309367660250004108937049961768535139337208321393320834318113501145642871988837609425728176429787621898928902765825090129721669176855161918725662199901675268143178004152499403285048650968317896677609982096693128295162889393195972332886405998382398618758266653176927913459563444297323730529052729261917960163809022324384151112730278229935796677705509522103970428854378310244999088180255652085858657033835460461780698933734247760076189324307171397529268177512262271752172025572726887954748177550292276443445778416433632496230508751435958042191394326874178885071797038687639049578454582405798821449595885018163812618430048794510838564387583692192256677594860161013519819911886065703447948182955881526661931906770281649944611277673737733082032789271681012433869344409668109348083686676739075884994324908543568926891686721856959222313799387779774256830722512733870208335444686615266116762844534180393701258092876073791252760493518980716027360147862078248267834657133255768226695754285274516954547980750964697716446245358200095551154583410189879052723999760115829988019407314837360460974542760357015820985569290819325717862111406223920094242044143653907841754360636931701920571385886262286971044014723305167412222719627892203918062868642238275351664446231768290293591837785522067474999589334101260259941244689950823440096342851241489394539078066058945773359175958958276134791268343071538120232052982000916484765563556717369164723535374934364490998958537277502410365480595728033582511905262336054133161377504507307693749831492624809721943146381620692605544071660930726755357506459459350320576161166360368640439586930813379974915839035676243151110323399859014823079374579374680780480640948019008937971679027954493729022554524648685480736077492051092013217296021745727234766988103764851226692990462568850301211238396143729649759125275989763488974480553610856196376715470669398387354827453909993605460491233188101824989899047559857509224794838907528473067095302270846367455566999203078875047898233651498460492856823651440569661972264457334451460215324872418471026898480239912540235066190273417744687974273696586393199409615349320313325268775596836815103771793768728109311545058775903070469038707722252407747484220576321986582577822991963272185252443702786679271250199147136653566697552428073508913147755654241310675239161214557727612901382087301103722479483948274420285858516263057344087345520409176939076766650666357213878151397193089619051825169104468166608293749811988382395559997328955091633035768121067794963661785037256901754150585770725689290049773028169848375903505193831428697334853242185315313757690881884842632760154357458571732399949116609586473944440201839398643127560114736720521257959900421504421839417331455053164763409643401657992010791968997634313882792350327828858108983856951152951947255375950096833856261655813800736819796017709437360423433601389971270993235007133496573454672369457274147638876744517263422148257196922939992064636606788282154281484973512781049545967145801428170660788004884093679715552607258099498070050861220260636546463961674854974002661265087809794810615856160174842710967882041718085571094336874544482663354675041820441347234671034546940088046590870130976896738485132784740375304777744348525279658302037495153617087962475634442872233072389417012534917771581366541625734142754761100771638070268863443567087347509101904264151935012849092425853281669629967572244931515043427332010798416775062982910674082531889039953082669480162597150286493334277096009644088220794531223005022898887312477874832575453557578501168671716623563109026861382912578514811034186755972019962610245040390443377473117714030454149528965027843477710382843159404154963470768415162544815350132456532980981424070932109877086090603785773513515900479029989576129916977939392051587394236397110938927898692550995296660494191319417712685128157542599246953427204883989792243494768348510365997112612380475866329288670975119531252528643720921168276136796319263074634900171229802659852623244806831596062153274014648238388483907607959831839861444318133480415431555078957755286082797389744955298705509201879858697926342012517449157133931657470588880473047785403608822339777987256928542066069387613886551348279754762624128023380217549794577166869729239370217318351590085143431015855205114696771537697212495093019061652318135638154578650289502056192364929121823217269816725614373680738648330048925557117342391075599329786296740931359373800401253209561481968082894808319912198996783124046271551908591210692117159081956578647695364745468754711229933072536154185425835897135581798680312884470266548292218882828506397607538197833054887183798366418394485802717922557428180872004583315348734538361058674379041878166798453777766276397535229348808348698300468105433150808386554743178672178131664473260296092126465094670841335439469162520547177960161351296330856611345295691453628679503606643366471206083052841800672444512055038403131793187961149578886234972707355599284923672577231515230887955047627508702051792391967603197833364131427382700519575813897488847151034875396073424454307990383315756218369595086276033926645676916774809411551923883327265802613215171317350653411601796666305918482403804903503938914311950482962314328365766834143807417558324717398430252029274911131486538506213890523476601592953168308611734197260791296058838708463198147540794887410542338274608408515828201829301926979314569756736686451559262784836076517013608730986946977900571813124372503028781688719409030781951064678670249890400439806935322826857094129430972202924564311951953752633570189333497017452734085723729758256178362425156680468978426683187259029578957858604730648400320047419400686460280231822451242146002250225489640039035207559614654619518348064079484931454337154505344344849999525286860870896226864354217999814766256911424441234722603957472682881636543780292306061446269408975310135559356183807731464524233151638469985111192186926643688980527861276316622464583386759445323167086379767382289290303531590319950883807209303815077830320077155487410912023866469635617209644939337611878387620202125934517281756520058257310476258575109951732701994795960851019327926819058932086452661338440069418981980170001312559924303246946434977323365818249413419670682294677755140574859175306510857857521336468341697030624011576335705639666857915595331388414387284908738250721524465376892188932670552717200718861932167000152500159945417737752594354164307636400755779220088223468160857714183883222114758005571387358153165022185652756628083039347758714170268008246270851254841618723734787216634103728546356811510175476715557141920742014703369520123967359816903408615373429051447390575462801518017011530673437214017848476359837509344193276748329986962635490772072906511644696737687739622953582899461830032136419293184824748272327250505073830604303401590126526013064166635911790472498580735731620967688032199563180551921043651774280926464033298368340249411718752494946549559817513428246848801337777951710390372810959809106652070053186276458020793505498652326238317714645934366386041274800043179613332194678181107809536539661265126704495341893421103059811488766096050838477754146412639517379039142795256946001000580312767838629713414049804593047868553957581187310177373265848531198469701340125999291002868520292090376880217603691751278144545079112186777777867400033031311166463989026292318506088629436662458138591151922167011289821457148312942901520926721539660952494473644100406286838594121171404008683437807835200000029362815732728772531274786637495492552398636506305998934440887997635563454705919270085701826374871323360211968589215583407177122500053921329539516230214765238373440178748297389637686349828287991628177687152662829667730052899327241958821523316794512550681489652005987077890162364157556939673018559192951946423298545748904479442240781135277993541381979389274488423462039361532661463650382685035296815476542422243702576312922423104442931913189648816220233706726325926931859155781093954450814491835217906629836808616709736397919015383324304274701546330719552131196106091330539594788258673579578793167208864404933159561175958545450500753596649564478922379297510415646588491451769303910257196777946050945572119109033179698050203045094664098522617562981912810173179743732074969182068790843047009549421600675529057574367279754775958817327910764860717991464076843746569446791994031630618667638450073035074188407549573527147321248121321373539406737406844357294937614025671669255556304186936289546316453946763284651779056000615012686474504870972884723499394535291596279482913507789886043266192689796050762554913899069470957756672615980158423852834858036533651944048961536749709291934473338231052903853451560388926856879667689079152450923410363720371192385084021282149384770706850169824829582961698713974835602244504593245156510402537544038639481755804657438870783358279570118321002093701026724100835966933885864018892124583925056327513959993945326554143900814719458469622630388869976829989180294522503641926391470442073330545141289448458629140872946038432984328805901468720318554454597911496722744437901706700162875434817593443860482586272851030705968395976147179698918936981220297840534632905153643497740185884172305168526031329288969164484043197671272302096559767121722489739578693436946996952593867142083835391967889411634963500517980661541390894269099197128221025119864946525197648149655061996308170082972196567641103327547150803727677392705368127782763457250138830587066381464810742780393444282796236644808745258630910631402262186454004244550435100605201815657360341047462669335008067002198263832190502087870482153248065455556798763843653498780258267689410398313468242413188107391195730075580404107512079215467254719893672758296760249730190964036558214336176378456577113543475668996361179003903298179331482892014135301690839858888391297502187049439741778504374415017446862121617761877702691737757834398379460802910246164876983698609782724896179185852431156337997675678770883368203655241824395618733193780985008919111752551950086329940760406910777731875264132248400651310253610689790995673714417310348179872906018689385014719270472969577000946749047309446092855738407078138164520344077540173833770287286900165266685246001185253524379702534535465210062457293770708766116630300703759654927640393812820450290304640641637144110017183045850598727528113079499021659919499066586941875085700894293845977488683277972999624120571582760348053682202965896670773125663095827871726171519347794816275857643724499362508388424823607820091324217385520844150643900450756694445458745980549582741156871276979113427248741322565916156747868688397092708797983440694110812434232172560573245417309650867830589493066627039753679332345607250902177453318701625700361337602493083770761135683933067137857475116064356686567725406484473433793772338043991073203423362082826210718778237232302323536229606599568880245918321255653645395491615627943076402773886029863338524494069865819563211317039621645306964370408048845999849741905461078018584853691725043993414482677676906759583823157093969470000968993427271909632706980199955707597139708947648002749237473650653632593861466003808133640471418692552921230217118085351719379566166260845551805572596668694499305421593291569577040290828303313843419686551032379855818083535859152064992715849092813158178740085574374250860766834538712807656621445586103797962331697483991177870232667444525531166067267755925612514123031413829605993342902752970187314819244469510906051134555279473259963492377007712855824049831643832741353094409402159642752157551806340009847782926943562034672808058969841427364956670987128499478756446096629502962462123906540658830087018293251755853235457514830816850476790565921100365577130848427779686020307085347278116586781168088268459019424003634453531865478858801368128131055110734698744906986774060507580541144191194666311120054418021372625056497025133304087726504206093118235063076281926454903742579846223208186061507476997435171847557336255031155548129998584743417946949652442461962075842822870997635287691062786655044480154572851803832231464147754510141745421426506598688842696098109510977013079378848089024755724015315768896649927026669022591801158345282092498629331832190020790799694718058740717558988924262758424121077432310310532138011577277536655286402363829653719474736996895905667081823089518263074693680803294541214765184764393467348624120311207193998236711184436225810941060578587213751812434764672637041602896013153285095083591033417971350899293170165382881646152600392596732638841759024688244756770295730190929188692568542260243274632035003883725510700567136075437183378731638949949337894314099083550573557172693972717762709349956061789409325424173067764593702378105729895078967966569591007600208872593760391544678154691273297187483408386785564003679905591014597642390414813935306672388178286929910705389903960035317546678495790593053852558435838182397489276446820106431321292667611872396591567983966110083914242844524194791124295284862712292285859839119341335457169694261147643123718596150613042443508612990432508920023080230689182012762554824729254905532977565344535792610478551860370160589682162518220810634123145181485677985660089872978868761881960186151713877589341150841965172283625395719899667986996850582301243041768344970242464950835887647770290955404638423659771519252788586191200722659527932091343603526689310538846929404634686865468660511018451740227574057604802440652701557273384958854743297117948224080933595239701798657291924680690934968841592200732256978227450961578396462349033881095417218329513112216885361102758333895316014551056552215523586429606400294592744630910317618561456528678372833772625540711173610073539361094429522996516052619878978848669198998498481407570278707575788560539998427670450828046262960467219321135549363111446324065319250100310675841728402540707656970044153999529106708425619692455523095269670019610017586101948569890881241337395461167342909762256506848733885816922719822644536524538014460548996016927449800003015223971759131611259069278486273760013905925770665218451605606136605534563672160751370938033966193936531976343194953759918713248932957178036463710482951245273272684705102103227845321594527210706611455790698005739150068416629662980489275458933556194079312468990342683906691558872362412199742697559363241077349489069082344859625184513615957213633344030730326485679665221281794187830153753419645747942472346482968588648902016126281219256702433725104919160943920078905355768224886317397820223455105573195698639848434459539657416647530831227774303708342091022710963024020958401157895751701138901665724511276204099405411106005458968900754012424828961035681022829840885393890667436339801372579353632127525800427048962115535946037654036358630191941807157724621370046961271967784013051124473536669472485216055418578357096039390291800640176277146375325635324064257671734039409013259245958009543369240110852537907754569192492320443857711511265890512927417799449022238422896611539109207920081133477612884644003799771877937613417264401538367779242053530121867497386990133879459801140947216423445394011671619756553049182702189282974369582673092553709278158490613365695592471445972692465469082661745537434839407352868876013035755318993115359181038905003253446496692077491371454429202546968154629298619721974466536272103302022045576397151868945439986980638888243751872066600624190447597391794244271066197223844622437644582795928356926133799130353287962218721316363914823662180216623293422400438551488779572600848147476329235613354601406043477091383630541764633956537397306474528768650640608506988377414601382252137811997935109906108683758302006812799210919087169487329361332696671068162683325660400942088031319314551329866517356083470895167941035376485776190424773952808567216351250193637772605653750437134607961601159615332657193537825214725700493454485110520605064038492858048250576289234384026725481046183279520624261063990809573780825587321553506458997164466441973231716422674199138134588771838973827742335537626894237239329909477660115907742451741989300974997695638524237952396791382859560275733124081070009384854067874841599066915664589061027114423408408070530948074000016379005968652957633596777285474462331347866940459913469066576153994368936777339976099107873343301940878293987863149524709070433142534093035080545722504671080293927908390679220339209990836050295888646846216679167628152919551748788756098537528371627721838027335461880024462866855348896815644004103421277214301955286505924391443336917423863591886763251892612387981867499754955235348118167969139091309579213721002637557200645363360153673238926159594135583401569316942516068662063302915807392329205217015898997966679798120556178597261668373329888551352694648090285846100281908744153921872976787360802941908849189218077918607563335293617440025041304821166849811300894325391677514629579435979598011355359849050871087115160419110314896152659281219084200200998906884318188959052690776857197488505045875861485137012698010938092130659254400162922094102072775716327487327026386807230258264992929003957619294545176151831649798914108492661865247014128175787904258448603161272456607673737733060272065309238259025598448104367650668448009857663337254505516012153385576819425904556559241398707575379510445278276440028845769085500416699524102630007570791108452813474862491948922258419608598760625798585499017067572516706609677043321946641282526021473594423674505885778919647529580872968351982077554174219248110599523299899749532735516961918351670834830479238131397082078696492103816169442156893713633960855383308231486773792534877957262843785427118248453544632044186224466057449269257243774844816857718961471310699443390384513204840503820068217795182789205322614878246081756097037606193046469382406918012239411144368850335743412011426530184132902949348368795886130234293991996122681323332435427915555844085350010334005682371677577629728347757694364639371536167725527773520372792983819134070584188071390576334997324422332432285144009395199749170038355851164748610295741481158446977616101382361108729861433690406413260332092750215877526725835992258492513299398343768648329018273247938076166030556425260857880568571736035295029029321844611060122521484608502200139158758026159899283231701636380095419593504531517502295210018559405624973500945523289024349870657795910406594645479287624479472664518402253977780810998238293308818174399170356930366180242242855952289399271587860286848139164067169504933006306157523914159477382576200914797892206310096369387583731318424889271609143188746943300473443780320415133459233075636043273982914788270688901756567154372449169448906331297895181002962168025274455299268843761258284002711891557635276501671917364426322995980422015940085076301240948605598485058451555407363705112184376711195156652065069164920448543897272007854781407034916414995411771963030496756475604196575088529325800838230608827124947695541927865338860889123943603985745575451878043589507304034011236138091458281716459139949947110566586929680336842861055667242133193331079688248692133869632411479600796841553901096589936729180270242466206306837878185682032430182278405098238730503987079669501515449916732488753088126623282442563045106714984981840107631174273151612378054596430557234894483197055600329138589551669033092555159710420258248306322756418235664417299611960240908899740914168065631063485090360796380588436553668136631774906837724497626135101942934560178891661652879144197380910706641435601271575549355752546993138761032133331063878281486688978232500160401109507361090353984373038602298528044162835183816599033083434465140781294185790377107213801547835751612193319203770239518789845771112979646254382997620293821834039334343301660966446575085498852234144581770405414915948367078837699635458810188962001077177960697195994729748739141812712315713441564066828902135503757620941551080152406764677941959695517103779281763755088685723935216692365762982225959235070121347580926277409468134365479577329517114816420500828456241539763594882611218316905304879871206142748758661345793255110431524271395098131067239650451626406916523715566787779004053357854923416867925800136705356372256118453808483735832078529675881692456608373959544202714363843688641808430708631741966485203020401861540318507270793529322980308740936253132698067606351805918885329235328955779157917761202075334230845311915520260205131900033734226322861679744618830263976035309653366424451992566443243863568442002610228281548258087740920235166407845188277568799209620287820300196276528367698691660719775603683038768460902710334583100850042662265854878444381666844586532271264245679460401027336499822724043613380480849328069463266948597691959122143156112132619413856279426004818268750", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000000", "expectedOutput": "118715923736761084680067703430286761117120430177023969625622324918086549437001630615338319204584399810999132470948617826906484119267900061302604333802227367268856907505886019152255155839146924538649657041206335787374992659841580253558891267794302501232744687532416126221119462707038367385490133986773997303137656467810738570302805354126990425975455613965583561322428046452481608762790523073552011395912906467325492816145492336631954771650382913417034485962196687132591440720728404016609691934492375966669783728579926284533902467836411595074934957655592816020077970736506780356407069002912048300735894459716219511128214576124844493805591991490016207240482044736344043777405940292412535079620339398628332186127570543862148615382546631968848481245981638929019778118964129740657650493588508018007621670473270116549547227587142198695363017768328681532380921926225330833082290217986119407534456951279408158958958100701187197942257828873564765020598875402319712442718196551131631010577698049074970204250786209143726794704997519519418117588198705364405382025670589060945444561075373403663140688266140388792012049812990512124491104229804277387183943847699836986615172094545071910428112143024524489640402238323380993122399160394491006903945651712503828617913273261345839363005161587409170218114331941582520722665142604840851883129975389895140044509087082369712731922569746676501043038221526546400708491096760045583249983557234119367613965079189677362360556944096950200510691392076502621013561934532005627958965457160537002439828617062559462780970536364845542448101873269745944965471209597386042151261249725307771004593167037373632260501322129945498974975450403960305465278345222163577770197784582531120254237630135049986217987691029472077887378786919690433960934859552261968022850065011804514225594519218429030279589482753930562023232529207984194520517140977645318830890702636028829948330773077225760669209167589013412046164905861649262967085669917491556066689408047147439321071296188560752418074931754003336088880051305241117473382262652819800373869050614831441589742187758131287618308805125209814925312953397302440426990799025634705953808626459596334877644013050477083453265826787365351687966818648602979418992001828093943762533710146804683521754980383345752532697642820184715299475483618035236361307614078472214873836364434720461158313253388930301055927689849334093594630031698180946282940443644508550573155348947589014753435803458339885695807038779690162546754878026113564877558786409560648787933379625835443131465387711816938314671958235678407983498275760527634563667286049744489207019744550654562635829058555935775342168085292711126667158662568052271485812298734021405688526477575193868538455414811185166012144209475860845879522967393717741091927994654900784264271425167369499438059004026527862682373804453123240979790607890972579021821848769610703345545320738340030207135168894152126399073264393061066853936291053448035959929166481800852873190945835686468310404500966220054731073306404282998939295404737300645597182642276326848715880689429116542136161631977329855125664162040051296750752314059943015628370147837748807205865659780048621028683665801083177590274464930988405685594902866210763155773019659391771318379083131039879176998253004721041601463022297647267554294021323613460450046743221973195882764799204003710722519832808904627504071806642635408788825599313966833667896967614274065625140602080250128243206425128954920092344155054958233128239510858349295165949308398968400318115321699257478071970240490947160057047400286547504898273457912375986997475767721978655662516712859172006997043501377216222908119351385673884934662417648377183310944983834821937513413210070679015246160811850168390160883826492520117516453221016533946301819761480450355265741889459697808654854036020802024312774718207328532835225477146281381529054836216309232824685830048942221440907953600439436969490940641455827744129192730427902335010277637699602394047161133816027760931084080994445474537649583128979210902686714852243951139618720244257604992980511545844481581300168819218904020507868990413040331469032500251730469335779723266176768158923422170006538403920765094438657994592567729889415086791311831782362682180741171129680186639060062338980826833346437273646219821060724874766725751028523163652418657516229445593103895539028618863629189079282473776114317850250057724512668625862331975508341570335900352974166675275129350895520071619147873616955253122740590260963890046693020258232523816298741627167319308540187479215241097585124298798602465293870027426320637589164400344744098952801221367380772876798817030208044714307802035794010410428694963480308631842658212087433291749701281913796211064548948935652115217244769145091168944026033438425157620609777997708975587358688098632576291377802045065359885994557663496610404478842902228067387774636196260443020058835294713736431112104476188759545483268825576845074938410464604996556213737439639115347770589177346383050235313743659055776778996666667580351463254442481117424934063982163820520339446685497794166567584998895175206874480722611707968791854433281470973144887941320192129450420939876022378051446926895544914166644294688249989397307565925717205559223682128148440638302983411612835707010093210938613991071252127181418091156710827618789529448497171796880605598340359580686440295626541583496858598004045598177000502860067766415145229339906491452032287301403638503722768407091423750634401262223283542858078305211848614323109665499888157425468957043812058837250197151724897672151230363775670411196181723905444172696342264979181498142697640270232497319834649275424680997829103160297104097826713331658051537254400994179275745504570661032969191459094392553177684576794236823215517120022863643880327609271329359558613925866390408572013078896298731322074839966872745309621833595552155464770853895494733375481891411857105457374409047172631616133729828351103610978781171963150483651521194954000266786320295647365085674358400330704312151961340465511790628980120624347948078061282778868422616247242639477988584306385708858371001777605652622839297128883027845351754766576521801867276201906485029919698671282414796381808386118216423193626423425338795358521035202893330602872639128745191176048953972419425388544060181552984690695230949733150916927351498008684598048496413141988596109360306408442419508065931834052233203495336924593471829250175745867964416038847311705091588754276324471932563542865993167617358145633305515618162143526646857448983757559943111782852024567726701395016159523030551732342406940566690249505840648466606307373175259009034200800658810714221698828011223713222706567035321919848947698722236958512266124484176155222105967074084075734671857448466184664596754877271593908191875281584825138172145570874462278798365375043294216548716440915552615659103994572246446536081313218953849192866037006486524743870943790282890761980341012552373830656399363086789559514097812371090192795536943080259747459670141749523489475887246716452314211463523099768462971421312398772364414032137870786718432671389013461091214789418749204005402907768474406022891467746355712407168557131578589984394519333769863924548852194334287692951695611928049408207001305112499545643741947046244535929310105215945690603579930036519994362740632733038166151144974935709692893009819496687864052748649982500564318494978516255121401319224662266999641596248646360267859980546364218856135220358352079090025947250978819942078639218118028441909067608264436137217066484600695784253995807092126524098431083573603608906145752348674052535237243730106003318102835192702701558213005442798443022109444141983221095419402726136042844584545191638242268871945277253979757591854384892891624825688338799453444497547221596846847277166565104364986508098187850454393178254620695684350429676630916648321210651593228320392928923172781381385395708892043734389580770458924509319682044778869867952031360211305374532359090814935621620174927294523773253599721182556717332137596697514857481106258423261290488243078850550110090313086985934093347849612316012162750057784308228375868608627454397709616354224882506089743004259700470820325880731187063903495179302079118197761511515793108687922808835695055219935320752152666286447987030252914404414567220425274761080199730052156138950392934416277837623419121775847316707611388867223948031158235364851516904852597753085756310507493153721439231862276681989200014664377941443704095221485709067616197524603942486475900538576920031416964650114465447701403720812497741779826902126465509164494575453710635670695984742677373062966763895566896643357870335651069466726986530623169821569361501086508723940448240499503673484056798970135080665152963493318394949918207506784564103651011252177553106390819614522275945287693628752623764732563505093511915883821331026868835593957852106852927103305718043526784564343043507988785640226918344031341359270600725719003041145796156596153231426424942030534715849336910576406712468969858832741665146080428969119751788107878343756953318554202674504907772163411154359088023716630202552917143157177182562954560874570026873723001771312935514580907543711545384034825538699962997409832765436560077982758817976325906256041804021756096475397801945836236905387075292251289235022043663568901684972051430881071419747644292777410562965701869475891416806847813881523528748331915172760154979646998658108737834347428678659052387098737913487450307335505774606331015514569637439430214035621840762231842869461234130654584213706980790782083165132445040626983218909784571737612367437895737886356415098496010264856749262133319613287819320597175528684246002485247872821377454240410813582803285383003539300988735878288316566686869532335751798626438953250583144278347320867600333177374399374266394157140933145979983774867846065419919188266759771291766353737638171993481223170946988480969991066176900991902820874969708981579628122239327683613999981527051083903343754779997852857020083802036647452345735805874704925726848199997195050998734165242231856570646489933720191223366779986317978109268802977577015598140037106439382507135957956145043553724431106064797458044344491807339646283686690520505379452184641256773701140503940197998742932319146263257897848142004545239908084564931802706884564757398196451792926573459258939498978551585129295485254472618707801498298789311348009171033943201942524115721370574136505641900615472105814052724257600780976882573255765258627754473645519473667879465899760127782914871027919720547828868931070062212915897014921918973297535329447733879822313471232051418375140770152104812231048333115788015330953529208360946813475609931698166369314608662272024222166256441383412400713130069705341895048238492011953873887854001929527895610864058610314111645285182064231099234956946197130125819402870320338218918190831250930066658679079525713229004365593522265478069638577435360642264795997093176954615322060185022924830054889944347177872190893663908077683459633285497780613165062299023455580288831864597464979920725296073827310715624935383487105497158801707750033925410513763132534726121959313857771724168243969556576986136898059386293550287415794805921051742768207087201129697335689935595520668031630997410399050047724295484458501335153115727794367638513350015673945656126569265074527587418707651485580924993287558509033322560535656364611316942036360909612590281206556218596155378525633001813182924428935638305213788648984937098738896385899777584052645486719936591000597725436280888242503354137276274037209218768684664523260899480838909180431703601262791132241631645055156854968824020637448828999829732783435840709939016253412922463546628298170695733291101443585634876744059547566011785697067339645002890803488554293436064462442714136335864636790353169946481339295252848923639606595167525506087905509062620250795341962035593883419084918286236408138104900495319979343745995898962479085001358573917872363451069454727114746588275563319981205628654151035114131821114455972750630018486796052580807875160832728120916122823848270174023822409209950654743673194327261876228105353539726343540320139148584632701395060683438365284067115658359879598891341860231660603606002180710370645013775782540779011547227160171834731877608714702815193097556642803967419402008887531355930116596917231712902776968662447448467732757531707060320741255454222030262681237388694850079305756559742590615115646774761325214861808646150894145726114896045482891760385895779915512218515189656297685551458121615803030626604809333568529815865086473403584231671593771501061845484389120227458857912500979446201029102403043591803325616534896020422172773185192138054586110697725895802448440414837867348950465839877999797167397688867685854410826996737865383061015526270945322243860523028017317447469846349483694521142799864701331703710327570884556826168220702903319251472678291101166143420916378130483443645490467301014522255855898773456404742135752834964255616631235964306927852146092064616401064025200699733289333500123757776959145652690098777839337680531889072383827086647478726432763047087756708676267674793846257295982440364363404965176987032565534659586980931695189794896890276116934579125554316832116873409802905718483694771151103102612913915096385739671379593460253767887475714610283094443198577514155085542943336724631231202050286465823910693462378746602918595178484860833879618074031334787341399821768811087311781276760528187446187166514910550512180467651561861789677163717456589500719156535330214569110656138279289902219200001163031992240286276428267536703037866026059007100413415013501976714454984010362632206267370160733058711861552322692890632568605988471569842972690470045247167133727515979473632367381090472609136756515987285216542549789409674858338587802188397091717697058208175906682331080756497017526459919492121424385349870960538606073621389528688789787554346564287339159506771621227169282298389535794588239167992395458365340289088220342725225132885206207431683290629839110803323580122456165182157118248157745528405061688123324866206875537641896425828568960670266879062428607901425506381324704927518087204095588531604349037507036529787254618844613086606008435197529917828626591697246566174033981454820575606547915980935177276340226832216093161228881043520903147097300129649844156037383271733598952881125477011963979909048615672312484175166396459122746248495457285325060629348552147853146879898479255136684514886396366897177473153099349745109530096907644253086771212220087654182883561959620082649258517267167285841415235344216636348455844689183508820429297124004136400937869487005397002235769611217362256697321848732755231853794583671445645702844144385585080584951791781926051838541206579614548262700185551854009263091345371448067729451411642615937040084540474195432416042751615562590589599275645906796860780826399678833597453267127493029832858005915819117571959975375329481753082223042515402956718425082495182444392072930278184984364734720458970359381262094175169307705692212935613721441432234681100839644309252937153529395767067585340864925793640755995654010341962862966765067855628535853607279097645221567875405257319893690778043865559936197007937277790696445466240369044597843815662026020915980512889190998240023525400454132438404517199127496358759920012768134321597225449370217238359697558857113798116389801678955560736087510090795788399505551389993617843603998780964812307853340727318186916348824633142500825572027224003513503833241054070863824904494593241446182868926567315868917055200739886387896549518984963731098509614438206877159811508320696389237472908569496054874623873523858712062797745371108937662159889659671902251497708295271118893223360539821535581818677965719497854200748146984208714981237539300587586508512356377860469528046460057408828798960259060682668113000576156507156264141713577246915450128525993359505767515910256393125897998627271158118944089156486484427042849221609437144312958104386599140203012594781181528821277272545076020278971020717271036024160934598881181389765227597302261315372592382074969170109002063113125113474870806470311904282200997076123952153957029499634436076501497341976863559111364742508870132051527281991134686074878441805951552521762897409735110473268358575034605499868097350025846432181565927371807847572980154530931018851041470855412982638367486737827066196863417794939010382114847003605188025483582312071898376305861461665872379533139427909890112313108442832327761357721671300943435856367070889598539342716034096295358470864571682522497422637304607032421999633098549044480660633577501507981346081933436481493572021072466693783618298923710222343337483088929573751873443505726085416418409282888405892063542818241628344819419379816348181387452247390313651801893524719109349734846373033278016616241713608339898146728343805425899216806267904566929485098726744255279788278706685003962442832193532662729012547202190631904946692483987279196250126833465646758199672859991856303803518998687234847591357723275566218531916926995799174758863701521404741982484425924084412562637798127782830232973937407847625245070148061886410930274218925789221766511980498811182562341697898578894903995792733269179108302963999183196362725131228190718267053725163315138826360991796606329221217731619841472184758430050975805385578598313556827971761814056251248079611672557440228874683928646393606193490800646426632141376682842582038759085891509478777341010075088849954495489309577326219013495953682534603842941390597916294978251886608045113090652937510908031142079353014581239783708432765638769871691585057609584169495870508861186068162129056629435972278777705353273851477654778626049118629050322916951860158877074933649938893041146706521440991550815739677671471095666006638099949544422888322864839734973353969345144831454506501386073990416397772342994522171427197884307998921752917554208596180189740808372702386772022101425119024694097388827985334004319149315928443253922125985456344899622535550637361536561410632944285812836469387691738731829686548649085371762359817190879830224733769670011872599055352702766023458753211410033558574855860766524754437333027412367354366193142379349794453227317420655096255240398734045953797043873929643709725435328403168380619404386932566863450862014998186131926338880123312435648092243463934516269690025940969654371276378334119840466800714041610152195073088704321621317758817919608952523938697982564811029389209950371874488297938059780457600085517936268913499371477159570833275600776783436075904667100187653855907168614145696249986457485204563621403737636738976282543153985456651342685038442927074871107493483938032867729288932472354933318271287589300477239702958966172028150787888548008136031168704458489345416853486220726989839667969378001332595964190788417478364920346007138965329604505440041410887068420572013486372031042340107804293115752842001579676632294575084128896046953720594707245380419269605594904176348199214512146730059327546614866386332116877038094993184663713365391854323574605979407996120746316374841568014504625490280126922971730012409753554671337399259576522601816954406824327000886945662970307271168376519545146087577330820901653627881592980157495154827195077014403812703285061500073318222351205303247589239849093362758983933545327138609910873660215131327101780154677291242761520846690183474863060667976608368242919234119035051919102225374429475957992475468391300856763454713812622532170472330402084190863404392751118840991810811311045388057864629577326067782846333571185204294500316804853116007651806767715842608994771581882442064737110540560763594258776416864289590628748409553306087034543794466122876890971030326087769075579031635838600044198707052385061624903671926368829152061377367706792632172989386214515465254218131486994450335223599103093979075478714390939050612043357886401415342850472340723377845082120794582957769315839379019182978477855487619060975654625200072714785286219427895597912581051257129158053186567715046496407485946516228343300638523936306864917864185076500771116924423459060220792025412518120508873328062092017528006176121698771404071295514735937093155225358523511254454212110697050580417795897812500770671259227168587989016256892599074391834090489365490223909461601186419174711933649586487502180139096282412479108793390568985359905577981017782230742047045482648534260591816102171383797867712996512143564146131347666361569426804173514357146117853090090756447079238304000151952292739081075691798395996578844835232498883251121932325465777500875410766719975506596164586141852331566523009063157932710692273147314372523277072170570342370838394426439104352671205508060589418660505047015140390606748100033850767469256193640564723233044449197548841585656701796248669112777932942990836539974665639727728638352202228216168203959516794290150550674823810341675856955114919825035580254308297398098502258278398285013330061341001803681888975699967529828034485976174616663125965680180391402719253666576394221814513734068610745994177940229058255049143523672108394255785664918109177765704689559251801853539803434017833624337279931970630162978335954299354806972872939580571294867188264770119628344752666563932119092292039098128650116361199879864695881367844800341442227854518438635686969026098037736147220763943561176195597393928231562789661423119779505934760440749183776107891241506425636792409361678828893415566277688582749018010959914611064137090759163350479579393674759344791599916191632661381945703248103213010138367910173204536533803268087103220444123741980446513327838615005952766994098827714069727642289580700524505965402830157188014480437182751567899957465570604381546887525278399447977874958714009504345516020237821125911814036870411995370452479572884489964835756583256618779671654509839513966495295333060679634374225112511029895093714199682588905890447520382400272671297589305586990246277696612165574588829812673918892957219103937137747491872489208935415045376116840671488997873707753520877867375968414301086659455147869056962239940711551428009144972130805066001076735678744311548096673989781716155966740866108081614283895057459120323318434316747687979864323442634971068461440205046704138160293704977040392641585786517881176988004024495925097180062565801288741426391991898878177710372396202766487413400198898835349477571101191374574485429809427817573943252493218480408804644547456193777125693532340782671348920515204284747704976880539783685158987967116073827966930443624253146307513579424354700638993788867259748651992155468120877434110910125578946519733211985443576413218497435392708625912676871878365637118707351857297066769786648379212364397674104848513887054263977495871131578222387023593235158803703513210182685487844669093335216302845333167332248863322947586880046948896788575542027088070217100483733367229112956165614935156235468746705410513673581913209193000560197987996029727532967324185823599646270197371849020869224843750646372834567090516784768863992268186482303131925646525459318896890920988977958776135799601680112210095050295014283232020535000761470629983214352597070255762722608042967373336524954155176094532867085812603715820814652873181829439789089711404961835952253337377843190247023508121429613647053920172068222968666380009799359471855060414320469647388410433576316388517806695758441364424754407848093517813120546404472715124440807712332056030998317071980428199828129820632192790770411404968385176750175325685976302955523535902799574536624200357933681000320720691838386714162212339082314712489233092762670181009257245621698898800845845491205491041785197237842058827141632251988403157229198772047882922262163167933746626890500210379610042799322451682750238037006887274696146117757719666264647768315328559310771014213017269408339727442864567098803910697490831146470685071953895620071706530467196459798033485270018647448739406085207300625925612776895737798361574485220232349531883227391554914702100263601945396060560915130743203895962518172306363528537136030887013261657996307742542378067891798064851846349989104571450532661943026734660098692231861216187908696351318895406544301073555399285485543886396070649829719985618172353714399184071540082357589950993182467477857340839138598699699471843845952647210391815916065583191839928896879310425112798997750769955515773462076542622845498283978002235772352896925963794826934738758903911755251338894092833786399872133208744131353842571570270293218118231206736016100683151197029827630676123466891931862441190729353423193156770504400268242904814281897113863432514530363332380839433371946719801027719438544889903922642240550180539266363934306863095915128862324338550960183779602230960157447624226943165764944653322501886668481709641505408121605988937995951897375857314372220955277673103718956132370619041288818423763814969285308042053060520510616289724358944333178848620758160086755463781870245221797985965774225404986557663444796454123943035260199384520575038506541186393488877955874252501611603961215880389813827582054535123010451200165530378100340228900957513632245704844172076399514277606161016073747417152609856156069618384638363909508553773986785610586805372377738148908528824418079056836328971446136469182940074168333286661053976105031936438897767558897477757431631088585977239010758398860947779908741705313566541428561668739472914048135743320473030201140085780005581792572660320488829743560189124469211837729551572262232225500683686519878610803239672118042472848638556489944321122539973271139333649819875307350647248580621488624353441351331441998946586279910108095129006443217549428947359636390034368044983172868346586275688333035530229792943412108553646749718648463015859834578806143318857480736711043751054212018302189075084356564258916446606345976645481423369310172639206220241668875967176052619760247658366875616838273343981771818401333676801469711444741196579415674828593957960356144990688030020859265638267310615509110524448069585360525112635203102115299487199222961564044538732939329046652734682855108077332637662310715222632866829452375522270587362330331289804056470704416038397193076389530218624918069830631920058875770760970065105706238420603676055216875044121818310523399824299503961805959293428644629625216558830697400768540819715154113377819593143755347117879478900050137021612766242603402029679438016509061572672013478404178459643218279439518639198206018279924828138029066628533444535194634564271594783719670008479353426644062089860467345233636749169164416098185387617492357219384727083867918539481311606409230300617113979688886329173934569976234547551579253143563319677516477656399382845665799717975302662596378402555941855838334593420239894654560159219746019098737416332278962800758996790183792681668766725482791521842586459618584248413969164663597224776077145035329252945450335545083805664401550072810774765355717047063324310020047116431801343766896462908345434997160625229024187793094032226867597244964303267933358151210579172046889174133722364456078515463343461680441053613152627512058039189945701478029234944807138097924511876176973542974828525105026224821479326095044937113370504500052801223998339223794459159122735720708359404143779041413576507031354033529216252113014129850030333059972285181483195521978807147217083841317501996133891273256594322194339422120599658691323523071557458968219589212844843665064280207553709183166712381779336936805319631132322449792208403330635743259674354038477421088232939032998648573861064099356295278828967933514761769273100848071975140178267417225448761518888353704202150613286237689955266066146664506175086850133755603520411358969892665946589756109779057773229186628679843581733365851395814259628353173881876220615361422095071550828173390457045507841306423580219012141620371107586904693512834912091622165587387954370909742733024942425335311737028183564044043682881115903758546006660833204341464226512854035433300197627985192897302811276233609380001820714941315546941389787529275805515241156801573330777172098990528011679296277079258702702221984037076296468201156382779484422393475907430327066867572583340747941648447234275087272983539811644257616428723740442624210989995061421517876861560050582470126716412787593289455105586025794598971461584720440651290549933047562291169412962497356060275799014173418580047238144845444501153459040382787300759956597887964538206410470585346040821936874523535169488872654101179599499166528885342645497479063799329785878079647886904604781707489334798303758772664135283847799848381898849911449786089555063211961452185623796541803148915922703642565046985216403239694115454059845785847856818201155358743690223381156485744466415627351700062254758921928640199626056284532323414094504937508636096532334393157717664884346089432835853666436897141133085423839845578458483543274694758917280672222268903839636312791956842335914763453782567978160856793754059033663163896125327925777528981059930393226078948394178138905664658378900694129302821957365836814218495851805694229837759316534675460108341145249358051401509003871970497041435191030012020423614119369784804147573886903819830830766630831876592478866262934056034136400980980705145603195149126803171226349384949407643153451952046665409124764248978558392981293588993946423409336440638234176853984092514505557062318806116453845207170949579432198214490480787533369298266058876414487214007229259734021844551039669129547122479993071474382613439424746016228267416224459830942181465581215485879341077340837455043215503292564596156225173768322477099778625012087070455399294540428934963279925179438019712890636350316074081649602057419358306336511450042916508195774463842460858964762922592782617614748869314615343720729296299887563230567482729511750003881455318826992713985688784922811124669900170495665324948545771262254445744964410261239573140471967335999122401898495204553765869283273737288146387214677011089159486047056746520839269694521776143693259202320388023090836048211586749297421705260961332114162172235895921532849203162204608356092618193858889426107493059009444082529848627416978497496690353092835587081936866783691617910958942299218959494478965864248397520780299111837915816135196981008005548842323207531425207675558317710140401335335380795501811010127983753963770078706342106046719115364287048366335832307863985366215145609374308006073354709857758550770384856749930053056855815182115287980416993894441364177199493050470272144999220336617430991280400750904665817434347315962998582745263115919182238206397901861741307906699436926916954551897398960321999034256291933113341088488149715461383772098684981655847431741875343734343936977435827247801747585507635835971102516658515162628488967412901627792100900764631208390417095239794516023067587198783672663750414948382236525851433895405518853647646899896279110842653709187487984705133242288760517768581131959778115468035918226520646775471297292234075628093281178410011965682667650418995969190590984935345233857577614475288718093634023356287280317141810219053825818908529339895950489060040737993544558678559443221800186162843453370692842539643479175534175164512038418798244113958291294885466256136702309607130629146248612716758419727048854949192761375740697709587496924521370821602940471096385506582569281419784448689276016080550230289725142615887898511521735371907469043783995287928609185056533262620923936884336512532554547889784155585072309777711516977336748969436422239523530400883620593023379202182362667257999654236025989178645094300916181866294496514713006625289768664568053026901738241623562678800646583376813245116419774236350732924265208563803013517378420947429123268614240369702102786836136749243865590832807623327897749364867250517706861942850177999147945200315508986120104415271050016000464703959363613222468501764774614078482001158737541810592773554124489722919322311458830894870184327009054761299546222436558855790568445701682031267304029662012113279998618933011476963752073257388717156133492193372391752677543234550132562770422443255738752163922166709617393045443665099407527600175884628059143503781502526067278300359877649301076152154114803562932388807301997583344587386358547395450211110821416587174316413832730086169791279410926144342884060124224314310701109143121973615544120025291443846723763693445834834265072561997973415519475013711369914513310689752770424483805022800372698643092433028536233551498063209804431577208688433692351835295798520578745583850298471027799895392380748405329905871915727851128299384671082524317875035771464251586313443032481396354694826951355216994546534523459498655088522081835844930357176517683354025897188594163783712795923201132833190766421205154830198911867205844894508350159789372748302414714300859959967735544880046135909962216110585451320155624267664528145371803394023866670474835448993230573791165086633448526668276007629846299655237635290464777755790640215481558452067019168488122471030700927281110125396148017990200582856866817850912749901153347293474990503546469437960556050130988348390848212004811965592710505720588758469413108932551058836168936553690190185456593781710250842508312531193356330898135304596093041700393981145345983718446554034915710880240024254789548221178968447989769602806267487977171298545713244522085837721525027622162067789402759368726362907372932050910813015283789955674597600071369145731985618228929363462358623613691513600410796598042768242301121277496734791585084391967773945823094187735178715898821358366776607682242619789152730769631936793898630830016719476994229031709224271516966807522335696526972078232371147775753597886898536303180108868377472218691993015560899263838832845039474606484271478206853000059077313244984352320695843251337198254091969931265472576903772176455386780926920977908468428831028736090679040045331174472513651913702637039227605914372005955164788310221969731988536827965709304194647508373264970499539062902963868065136202705852540870179315479440293928698209726459505729787786284181794898161333067148201012301793882808618185511633387100543710555878487389141881174509943608366026566267635230357712522667035612674137015354349372049697441135951874072757906383569113693331859826445491919101611776581167170666570286654156194828042312728342038430669053168305907483854505051259960816720510359075000106307580512905867635759032998182409851898247756131907047291636624002511905557765734411502751147371264093812270418001732251334543739667411577540253243381617687169423597858070387794393305619092703451641080297884292913942402768131428176479135063019515681381590826458334650586328432116443970759013751758348439782962570882321594733385584769419427339155189216999375102309797994529292502195802296616554629244439374136426155811582745996371831522277437976598878906826100076552993357146400782704768034406053303237393275893238587228523674750088171229570156561023763870962759098561831778029908695039131397186082617402473883595286829467915641828813161680938000514709667882904297970312814748770131653242111655522197520326842096393116106434432552464344790829103731259014371057231016095683248741266913524371038156398000638750871369513002800553722027617566420361875811770690452532059630012397502582517800909942349564101193929011935674234139582807905606878071170757582837307839703929940227835796501540427097203811799072996669856557885728677380342011338746823421150397794600169675447323215897766803260385936742643615324131968204948516113291420382672814062563393995591038024764176626651780222857358268881327474866551914549384993232371107355854684090991319191209845277495824404467475309081942400615419934742215234816593637775800950535607874804720319525108973198374673244895829982652130359984910609829499697288662079213105175888480628453721266148357528115278495203855804967811978832698012753873410678965757347746653443645885642391927142895845832352281992266726460630327027129946318506480729660731634444636484455554142198118453172426997791311294156968205371718698473328524776169826370208139717410369760505856372257086920511500516894037589178824922315434587129085909616532642590008238875771303659598619054239961829357839806327416491354330809172228113099408442832320295240316572573216003814929738252516899966361840703239457009110692482883483118146541594920073727778308090265335120607850965169686892912399677265231598079240998000701344098356652781508709160975441127140318589031799427116413048421323116996697438747163095279092411415783387737874676129666538188920164918599936397820094730730435387171749158164075162359307335933910685087124604663929979486880116934208667434967489570058184943809936151913918916317398734444843299105010672255967272370740804570854642195801594650495111598258100776619526134427420139903834974517817570021735090353989736886203417363676189718098319704045130097751599903404603496174852994634360125303839416122882629424993112043319822397828446199422158975505059559504690450800003811218588344390764665437183075910825981530453651968516074954609822688722449702774623015744737654344078952743902739845133997326614455055220276106556231929181919902369047942416988624071266222275463710374799861580255239900311353413641605590753918067325888581414742153907446714686528939615564985447133959510574959657504030022063731977621289143227980825047280333954967918742889974555468612775000670587856758044672691560033455278915516456678924274216548932890962119775935496447708236156843597537339724700297067454891830973402195550020474222447605884187413258092500694156777194293373255373869792266876636014216831281932425741845283238070595931580009320280046378866349285667857995315031521328514475802674696543735802234713074654791104783942714532385004645262338598193288249971448169706427377472055792419446578004399331478517839697088002989812106468599356230728330803677220510594074671456566004558457832961946648561633161383167630441476757903568243413000712228359607967770406093020647050687104435500348424528071057163779209642447477443441657039042472070720203174494014110539988400931110393427808063480909474452052592372692380987343228711644614101503180334753825942436938217638037021853946992862722206251767489461896135215599820599015535632964954795042824593026658389775003095662813310909397244309307127936478184125211879758143937677459138297448188569822632311494272800074946646866539351908139801169801620621498316711562944455263002084829739471227039191615945201784264235479706249282571162451237567510736686320510283153354018276505592463503904008207280400846673721842494479721555366009761376402942196776145113408092509290085643437865270218841556176450212862293155869901252275081671994398342616335611836154325366446915919518752005082777976686393105617107537575793231329231231290973257635027668149431499052547271021695196882398321952734026051902741183776073868284874805391312581287060850986863624778979898716474698533807343246525499284010393169859485362336767803442974444302554420752769927177289332940603608776393651447712090700086189433948589893216697519415292153684217383238199776773610036254897271580024891673669845304865832951367955006210637008843891901128731685826193745358259025672972903533866640604772773257556987005733748017258604711789510845052649177537568591223891944114554050381020232784033497502875778847730226334321369991111407066454775550916545669601736912641855207104868234774906192751764289535419477076872786470050368894402678238969604973727211964524122739603426831484051408443407626000451368816247832989686881966882618786370535279343383416885117623829261842749345274655320460576594389234238284441886498528731480436313074911973245245734110775466116039430478370537040156826153532888289426021867770918244882736565233976960763801416451178388812473460116096384134353359169632584049468561599990296128917280311988078534935148391114428262486711229615593811191903587439510328379519650734081306237152327939735327496063871460594003236994626218654043830718029076191177775045273955211717352905390459900314849564428145070112884221743103486170531726034257453177821386555900689368001234964844645372877327582496308707435717876998240748162816167199222886226068395472999244394127370569513827568267592819759602802401456439128271496315327733671903475855792193074659047648778055609377379026442861395379238254914177875533012890110660488993231502882925505414394741108792449168018088683765590443427753951314192261531738612618110475411941475218009996486719504512672320963505555953345481578299465091485711930611508810227632312922862605628219652732704817616518564710008263831868571975335797768769381633240219557759019395904181694961103165430563723621730975051223223023066404192025218810174570751235336026530610127759294875602263894547156144618813904761101577092419913767027915915379349174499843900832276186975189038204299125825475276938074263358086472664590464899314259944288269531374213077349398790482717735288251288214261576304013948896231771605275842143052968028431894303499016307767718741023832989986969776347017714018403094574251792417884385629808433365306390131735802603705736921500331752002567408199711617152003799840692042238391334888997905358638130643376399709423343990435525193313177299763123632392588489397735835978077274653635180010159923993299217545124225609133978479050983983805308857084446262196202270444379568481268907757874116577819915540138138226817982306310267145383949867920427383907665812102145635049517311543557246049895491460212798049790780010116956099986211844288399130675781955683000598151878226787507908716735638779893812302661627239418086351919391375676195969357979524611514345966718251696051682257837388794207611394338484366811658746748186386390932268079468294820781774478302397512852076599510884141793943995962021506130924168890284600686231536361757098806081924490682054143339387925351999296737850570200650466876971000869880206877092054942838187455724122469186767614677905369515664223115314352900865752960788503520511921737146492281240561264162438068191389501804274147763276220081099745798127170945268329723424853079415215412960516176870976299944661090940725717349621242624155344199047584008318000939234455662766194523234568087495745724467362811122749606341889376093992164746179754007524375490494973550222396178222669361751049312025252244178196803608568178309002379005874920138029432065760126810628534775161095857918637419452161620478424979531498847407180518552583727904304887594774828535489267138986658957555384973617009728252691423277235596562412532233265787044403672473067435456776348076202366703617854136930953719745176193215161012776423398141971353410459664398971134774391932524112405641839254165398043512424257694142725176860612121517563794247596538730182222401854415490630275026581056274474941846868035078191483416384961982873630203449244521562371654969852028264561253082303584643442704303069312943138552485444510475244057908625272431912018528710656623774015179136499145462448337966169872956442512563225144228157605986333132379128564687763828240953550374369836282997744218120348308004584785409584621664255861168455371861692005410221047046201762725671666748254641648254010925914719982299811273774484130820011617381308475405182135221696781940542525343818946248206459316154961569986683467136917433051967782350114134240174053274478221703088047278231744614867142452862174519948213428439105553419192631665720550060693495950440730572901470530527235693612972950705768997466408609335869739548304002938512114093484247355957630805047787324367399621457901872220607709911430260086446302309188997183542626800699495222963588330264922121007153605295078569287667571907387327282685223375661498206458200183954220096196741787611328023102935343897944497842050762154203213631149903788861526094581920930990022246414357092248236923859053859917672943596214480976024689492721666500672002277641557608370979526972970546903893268287132832798925291070694707660886754642712804064559495212048186194210452353076291986448914416722237810470824430748065455841891831646167161116097244569863521445427439484562359277005802501230002576737599537095068327739889035738176977187951053430041029218082147860317780562176548053821899209217428031284669783683611560423159818831805691590694163556430099186911693733302476271374096791903013361080021537214188669653454728942014174676226958394119972525815628451937717997154055629990779347655815855413573967247272383719791879389144160811229168639710215288776620957062643196915733722144948583624858263130282208111526733709947831697012107309510920418600584516019743087095491918604263130898283280529255288702655342338962942066919674594574454552830197765381541634878394335296220961918706776959751276256355142565018157152301387885195925478976327046378232414219171940826586044825188194974577783272707149048078786904198642025930620697879963822123236779850479814118112707105716491231978662645676385916622001181872097082799749650458098867257386107391856065814406889559568851641700229908179308445733565987630369273807175370272511216100294058733096950670989181199427513648665920758280200106475705612505839254373032361140818447302483798555078975375542944259892346282143074071958452617456655806818980944140527542944844417660810657809656815484269807916301302590863973551293781231169312232521747659935527386793279761299499914133640253969916523788483288679635702638581508296156106028072026016942676228679567551831092499345581196296369964839309175635601446523045893996783856573316261304531929135898790270982276182317819551992336678351845943479090446338747736045406727158222773615239989479199460413428356738979591346484784713157752782871710849756231108851247397466819380618258298413443701790154308668958473558045835172661571872859103563009110167678346371562378214307556004130113582037595255791491468146129030491860556326658800071731290580449560718722959635436635959644483863146326707735279064523398668685762896006412654540391783032771556552347447522639110656552763182305466576472034209041002876249564736124325856136938215225149496475751920923460083094743895564782199642757867176637299396619299993750252866774931544435006808623990213459810243657350026757221690234961392519439835548278407175490192824184207102794041916896572607511090094405246410622916302963373988316670638616287669792810956048851203179389890348521757024770986881257348609157433827781664116046916359397476845937414840660661526373087186490426513389636913276000201940648806549101262010631839699419409776502368077446498356408482309760665400592146537669611880712069203336416650134761013658672810120568520330469421611540555360144658825115045616089100365982863732870681934729899219528744309849614578145886870394131498708275138274433784399585104941940889456819209510664081177299176580814229923557058708706606863577464679856118911441978971419962945293727473496064284123902199313202361399018770307647097761059693813145381588029196859294654352954007197503593979622247607078115188044225576423266253484059128422891763572978830623495104818732681159581523458402353640125493471471533326750138575512322642203561076571040961272362984499650137276919637607308387112538318088100378369255356786377909206595678869049480664838355912379813050349422323029436174959407882751410844678442788311867636269160108144930200607328288632043520725954436874322542954750312585120477556287560730007801296793614483266712636010083204906533311164435085561608657639913692075347594703238572264351946926233241762713825275247641211140633716803267759566923652069497134523144429686929857255856859757690779760895282367642144140984345853849078472447686187180280599710779457176371870859200681191521442310863998045544127616719916481304544714268076045470036204114984039196410271392981100730990149890604005908734729510990529511472178357010844804116306464043168563340528087263929720434786195970797979397366196525389430321552768068262910711776521136230997199203631108507977669399501444566177659104425203060681414950609662508094809425658327899418751566925138291338072471540440195733760907879222450682483580681054933022399314254048940786849728027443256766343528123384504371763020831989913922384291026349601899404653665387482166727806024843308453988944170857304451476681939662919778553439424506886454681736982689772688151973752641009613404495402304920516795778697612003397225099730000788017515964599084435323943139325321738629409666746140110289713719791192466716560811857671593944554279741334386275249647334565397487059683815322973767251931169517290538151239935548858635564152249853395367473224900110518852723974780382571559409381450701906250058451806265560700780724449928640394923512722203496520361599019662255768506937674742499449289180393439588273052691847370229867219698372345030428734601576576415946053273797730461599880816624514722663204361055885824469115352266331359819727267567980941815034246381155850063828095326967998582890742361029084258074271223921057521937513763379780006855230779788290094672744919831605951937137033674552601054807603041507793694819142801245854672581641690050588338572333368080642231152063804613270710786855574071220393275421080245918344379888682792885321297882783250467591314663583598255876589732963622576409291399753956924608512388326621066322855449661824174630951837352160602622948822272383309219647576369829551666829444134861302635090383341661648243317721108165830366922933775518903291551908689837976742496808214633578661572777658923273989648736083116201106692853653520920333193450554734022385374526651806828295282729506902086950507071155697494928663733872568553304177512073410860555712683329531725978961792367148412363050455094613687424189676058392592291483410686558928378887923576936674616840981575820603663144304335103536932203376905030089772610625834467959910228267104791478749830141117087098048556409863966365039580365890931077514732933095951863395333723887230424937271290862349139940968684860006840014606135590206036541243994861978111216713349177649128137122099938835664902607047463641717426025285580791604514576986023164873614743212357412811674990919949426459340100123912423214130453555067551150408902405083894004882640737426900557238285818549976599669550509840603091634762938295035194220894143147333885953738657942941610820785610969491614615575311092458203423877394592874842939093194201048942872940096494472623181744373743616663257859528771106595786379715201453578932527213714141951403103792694617388940915523637523011039906847426758562413679604531065749962011552921041566181225347892599261239772003694974227104878020372120025426448714759242209378752276756584266237688825381532480523474828934459315078180388207461331712429230410590226009087557833942737232966922609579252076970543356713329609500228272586455293850370315325387555220552027170333859791233648261021319551208743979755404572368958605610505572907929254103173249444102849354855785327010458874894995757806723104859513702560373383647844130523334682244021830559758995895008852020373373698202794868522424393591991153280278979342288128315210565339626462194812432164548001894412159406463446834172617598695678555088861259492347969768966984205509205607304928716282119518575715142246479939725017592726017313631307609854755304400751858656242243532879708065840432373894583921711618160149385498265190250909586247720560237345323802171360216492325595329769948643454949644282626285226906210282982461587239095084977614486432918169992059733682548040370367973669938696979103855361230202132646368837444103648205534104933138032248716019110208886798410163647774461347627751269875429298641348077617560836915568436174051278566596626481305041985516602346233617805492987246551642168890160543832466621439776180483769178998533115244156513527028915533574474136891777070211523169342635528353780343115536045392083499167486409539519591179075914075867490700290592258209937886469228631917859249709552289705975045834925128282551664950990682646379428189111843867430853515675169322940632134644278627230684025696072037207407359422223249895740816765393932692925182080264099237664663861263001160287139719630095257481554240815344223016961884260292498928416371123561854651376376869602896583369669225615996991271059182392242663359316563913610104381640677627326799810973830623352933976362319236785656518705262938872135640416922948235460169215390556111671428810265744867804400447831704168817928689942380800828959318630380887591062463481601100777787917955347916809541897379039222000817434323996898379981531814247255275757771251338536994926763282449055198342628592409076060702522321289067293119723834154008854451605808545997656256826939369229118265448967913553419239928381751064958624077150199603023291973302147798491985001589768387778624043577623018734321102755458161114945756617576461031895345343717900662528685436289592205778345523427947776136293618571694449907471240708562591798510609671724718443022442160076506857660015993935026764996529613291465380875497186995372031945712210834535291171607883636141882674083266135186702201198157595915575575572047684099147097204923608168047837561560834366810427915164928774795907031629521242599916268527453929753689658102916488409920379431344255370588243864230410588771270697061309147344999399084261580238721979811922092770571167427086691415560365378494839350088898294216158943441558456864538053231119939554687200021609334713737894907600105294820333089479782836499285782447471595520177778426132360614335247459079018441902863452899993399097600236718103342325161567616320383794770606438168933971242068480016085298579227100709347850690341611509883036244395637037945160270557847269513829654903934393420645390138534696693445660228315542307257288727482915639913329969862878609630457199450140882071934317207282835051623845303926384490555885243455008244874516835108802206522056059771397831396760431173059317877478393699798779465578206593776145823308495491578724438472107119493458012338587095004262957231333885065628840471578901205627185794752492536871675683368163510366383042025237234699181166333903721763563500856607894332060297673093700171199033575256835968614681347466016372160679145708827346636254215324271866660350856989506909960707724694658574032280401075901603566757106905957988377269229874400210719837253681789184525829810035868576330752165436300228687836005261938393159880239966191693725701255726147473977483949799040298556223724060932335703345641377712500710973986000233808597180517218329334926077916132983655357135067606504955458042292248653926461990309171750048007306915724390425643408765893233903419436499445945386623850914060510405490584998006615075223872883780744507082480545093103911517460845835068427109809624399765191618685461846903747451913318697500073507010093987384497144188768255113433271319302585481785299534094592619233024709332915246687162346528445409477674848774950285470984113329714034388668485296445241863594292586413495876328607234395271986890288601500982522308569846790180082605762062758289855378586727452641032151386626919923347872773607853399098728326779411646020182658433902133707825729024027677393785910106668322521654452722776217337615796112491838698252610167962983049181722092231808920444205320104161857399511647933663562474610215061711974559556059482359339543828270814025327165762476662152033807491866169998562948483007018627368705975918996717180715032584503360598447400649692358793834463287190638528045758593739627025565430529443672507388452321176884592835560428679734444661024427617836858744249079509883872950048113436553335642385901101976858404653372889568306760408634007660828772991723661071381839790998052048619425616695912723700624990620149440123376388791238275447876508257322515491118297851053253276157880471079587630761818112515244866734715062379240081851637164573019701525841322466714043012213510024529766745527864574760530248916863656965188475257242462656844890750336994372510461482805098809214213659876020436535260434401068996866869686911433962200580462743092814593554421187684868776275598655666628231581451015053921142885336878021189198709207200819760246002154864923980469467878561399297050042809382129451704533570348334235216404803586578651809349791433233082297375294137603233431652600014361505483711629373033406244173165641152897997439198935813792732699491101431678459135882871150447895507250096935335285752602608045060453941334466176815433537616868866793451311010265348567150003629217757126563717963173321220615451617355868350276115441645777886283143676921021585320620973192905977536479437223407779787196926280619821184830027744965564254738902324148116992186172086638190324152910085947947094547352075352722010618217623917202102651793657381955277912612686369385739618119138634630349058251705342507490234465468390123401563310794592913888460740674915774927341840492095856834021771382349177816990962481136512574519405450068225216139296807398890776394701792628236610413758049821788217936555429727082403943798613521920544346875632423983165884153843201251169227772173736335602733113576575126668916143708561341363221717101095121549943128988967126725352058160346824755004689548339297531620062414221008776381668160127399641357297947540175520428258599026394423906060027425168679800033236577799143784259486034712870795101779390531276442409242283295621886024205821095186336692970315197973708488354577290341697183558243152402935342515744871432728636363809904166269785934393869972193087037369909587580239630219060983540927729494311918328652047890278571192723276665348149042381193290117513902374518008339123178933611691816420965332726555694450457225040356942540281893663078809978899194813063760362633660527592469389211624646845105990831970875279388729465903752337269459386198903148067283759133895094075702551596678510418711766011219030378524669900473362203662398105566521429785123332844937490053555642874355203990904207529400850759046685037160954994978794437223987768469230003830340936819487733766273794673192564474641559427512240877689079106484256954200470852451165237808771213405035234438445105285008226180616797793910597913015742209863716930817538308326168688729898882712589525564216339225884644932494477810485856385467277549259518841685158743684191667998326640390131492480428921824284915416077916954009988802742486912567307048737474808876904772855097432976433722644838815170652126814460837018849454926410703664048282160387076973539398242046449743723809297524955339228628122912113201655915988922553275643546976423193036563125327292250950221102141321791157609468097553824858564342135349667958146983857959243580756754036971919547049107499856889652112789866262911029492735624062212948962989467772434634928300535095726414424423328755312212248254831681823504057782151293017594572768764182430829328789884237885542835547211924814346889506270396172402225302378049742163695916742994078475036521951494667948085479108121065593874265524453135820441263244938202823610759840662320531527514983071907503076590797708041652123503262912751539700368557411311639908825760689549162746271884817926915259852915403339011518048590364644149409006732847035332634493320357911628012850760402975594098251439947779674356841997922441946104147017839546745769119284894855769939311575999667946364077006163349177602045758142213144005266937403767101430026785052622016732375591589068235427294896574044967107580016576193455211378394653036525358517005736482584361860890284363298147086566718500443204156983725577381356456423915251744774960831860225083567630275493223485768440586441383216221116509403334559515338949148151393835396886057231102350148555407383898983997545821316848936619680893982565451168144508760934266924369914474317222258832546966749476199000085568661951202206116945678217658578170231275422188040235450893957188754420002729900585995834233513322248080937174986854147712669275011966227732112936156253435811563885536802290409477471876318901294388087919080005665041001179938375378030112085953144597847849525124718767428177871477899394208808182304129380379461175335485425741404713402537921004238490683612977621535729577445154141702097944141708183992843721065554201677330916965096877484927888127146559081343208857649622452337830471659444965924472590928084452237549684872330434385235493597256312523732709155224156068040383858441809398811829197458056736854687962991268025766265532783251941580672611487275513351977979006715032458407780191313721310927040746076184155613014736483474030933153844560897676443426454600293976890279315933698053966621779012700500665541112748217613317917657619267609692986674127481629481673086700685548467094117939955479467170700159391344288147353313090382843129806546036058492724565675071319551950821187228685806367456703498329127778822454943168136633623473691775674965168494175207687135293955860426450133940717754394326987043143180334197990170386991388831348299461080340695891087378117562345035821755950472815768933783735009285205463431750681358585897215169781271703483609896675343790494652038948884217566222929640709489245125111026836388618664346789205312195532729841785118613424254670323354574889487202515778341075950673931139772747382423193486752565984691347581408483877974149285756845991875635912143413272993841133218212371705452250056366092272325606126599879796318705623624735509047690357817512818615964554202231868700546358851996203699254483175638572219810724113047816598041898808547408593550776163320212195057056486918938622535166766948819189819477375807287311896245279429764197048279858823167195352218425221164185340897453580417728404169360667293426026845986111182996145733330754987975346388140657937147418293541113317307619464986548621776252576603600711676874933418102143139261648577784098878064435599480056064113341066815834094782366237295538478209377787739133245668004773682519269077742365707957126891477523864727159409416381003719878232988017961504505991729879703462762518357020128047368847331185297495880978451611497531983185804248952470780721460019836686025605609677101231227210359793657577554913169901085826064225682151769004947551340838362120301313589794546134974075776487629900726392217898578368031826906879657883641539282439760196142146158413136788894147140243651627370883050100238813352588692727543621285676109830551041673311414681034293573832675985892472742417970311356287630898543262864476398563854760735715412937702309540090722448927122477445305195774729047192314302658216625810192148822059423401051233098069746003093140964112505056972388528833366859458514951110008274962998321584340626363631502211779168734189317160982964935642093976623990236121296790293942517275903003811217034843145858641520096866082372235512281167452741876821092687145497214852424686051380243534510865764153394369133805168499088430458204342403318138937402077381061798964787659234093528891657507174671543860648552455471080073413499079696535232675290077757444588864798804785485389981816673397615093335585730743523792068229168496767500853659213472052246130328242580390934202976047894728563794314698838962951474405453056346754171373755987932193923834230748269487539768788560101747803604567300312238443372877048667933666709529840033798086362335029296194058658199022090867789190481711539269427317218638960637957459239624111536845685393896196677267753148724720880987355473446036902814643408136468924326666209870637627381327536067434527079024058721888853305149330381207171146283530701937681356809732271150061559565058330786289024918211160482358371487857512183909033462695976053193836507413047451428219334984928787535064195697037287917822051314082869280898244676289445244172892901486568392076100914044905776388010268443940685646632884619802615555920226979626016776706492820450312238448752274881452730079581962191902160213390852748517078423903104387993576251593282510852170227991359461210022339449420591187418147083591031800378738681427675181969364334316078878687587016518408089901748405004343758322603502010722887864909404493038122094727638348683350462887960335713417550903236859794743697716485151186345338136839162419085284314454107961502669523574041814316295093335408582552130063249788755148794765089585213521228668169645618594432439936469621116727787768162429834686939729661271500984990733331352050584320943630568808111355298198809819396033275658993943600893516821686104640764450084092668578189101763885139873092921278389757127024767449598813454810262138304186335868955196497438205854383476282548032188519354047104590904289097377562262546923762531276128788410501065962861304708169033877274053260828774261283079833927701916895372746438185271544164498230527208333444934372775180598662967763067772057508591738114359903361734660415194419316792531036090117280637363635282328690299141085261206157024218650394620282137626794995350217410651787495734818112110825264536662467528760751741528739321157446601679310959157244950317131335372377158454091616739310134567323323247883700681323946703887149989719884776835387158258265316694641915286230724684867762455506904532112150295696757578786824499996929711504829737744970844265305679921367730083692808553339197555430975083802856512104381092411689592398442934824289276214414129133720843498308980304056533352618445133639161373871444664240198753078220086121241006483089442303284799865589300874825319220032951323301830075604799784113567368787068734674492759683809644707535191266872314603613035258646749699313116716253411899494045398933336922450691195131826113572771010422246270350953205620812667607235206082459379272867114515224475990661886695503723425596408651196570207824069479761832635909691508239137588389055696048253420720139197393831688139693887393011864625701869563715569358015430511684300865985881932330414755762352995465751948559835291205425417193293852708870091825942322796260603048856406916670123498995729484755669792739316277206415517782623751303860501234592145112712313633283190576331988124733169549627314662070308395268501888271304871602799425430987328188413044657756760028230813042584724165169487148697478552496684554811810366985297644061280719362165321609684770814031691414529901070164918890749164703823590235789359378228619699874862991350603558369410136157359543093527451794268789129342188630270920641475392090615548638692521398005534882871929179785774769367971603263704918194438814161253229128326486996399034954932179144756835305069456884935798690007711004566542230678725437635074336881669848262486741779212076965508717479097237462837698836222421336187767598550695011783863985765381884462070513676701022494104353194055391722182707272627923830560386215574126491093196391110701724250974996902369593375686558025725498801916611107502917917539105555279809600124381346606687041079111370805043586095339421819304272061478816971054215704861100896988249852782419273023502867612499183974566613599649782953353229258554125628498388379244673127682610588300553000065148392990465744873823965474817317344775239649701302548618396232983600432318789946524795145255672465423351982218136802934783866701661571975190922974511529839761718570176437979022169731895716444748155218539490963504485551726229553359976773216872356918407989247395577202601244210329881001135467964653145448170394536866362043478127537780434125824036043703462064229660365489904299309045746489413606677214377889448249675609682596976686325804139382057063496150109878692607963451761158782159431044403037394433243955409314615602779401086412429156901375135843270116438679352106070736196155873458208436624696975058421841823067524385157416718939204047827618425514504765573810820377041530544366774348025192870345385364245056144941896955044663201659814225610796360899392043423892080356602217530931476156447718753050699611191052886775128555748901554591001983327431541673782225448277785812537717103193539320624708067688814128945291038064172465257506078070951350208252330612126507662839356941019104988586358666380863712689899450632673261987312408599871910626535933232063911027939309128426620454285033069566564200405340235305103415727115874190499370138964965199109847868106995891541744635957877721269903127083564291268125309272020709088968003796654807092230803679004803606629268161339829094086125446430256053970917232258300194446607247859006081192373063012784364524351672871388533533362864991107709316290283349734217462994737764285557545496091057533576663762145953374789038189125139229743421635822529774959908497583526551643095912101287187682422358484748990079996725760154943218124158068369251036903427859934430759951861714774978137443236324398991685091971222590336775372647593220996449454766113248755320194030132503594758289461453261626704443552378731329143370084692396479369179113424050970582226956496073141519057803159480063045545186673610252452926001144612630764530101357422675767663979570168471796923257524701796653223918016797767556864028146196849634180659819288307453791108842303746777952059140227550374983492604739243050698767750428967903648583275986769693768449965458044645591498295144653598046873482677707856840763109835770147234346701432107529789239811583009066307280231002630284018209047834704577545509747548631033113194429512062350058245842262588883255491168832687091435760631695886226117184968381591881754831223452852367235894001494763530539304267851831939663621318681822899939229758847903601381181037012314045021783615963767508353243092937660675154748507424201344165384270523454341300044407113141789285811823910553876303403476318351191801373031660320924116701232833428820330347294758444958190711979428148411846746450042314258790299957873291539202616034119582906383624615144024948211135131052579762878545196323214807653336650614817329478570420438965149055698476800051079672280668414839064205983923738421716465511625851879327399222212384690080879243630914685020638662902090649045260703833627104799334606050528699905828619740917905498345120017888932211504341767850738069389382570710638253839811193113606140618060774635527157625750763313977618219800564856269246046393552107753073213135013727584774008473641369427994532618389972594419515147306496782213141684463232399366842912560102872968330791390623623906398870741496941713327968943938633248735294708909764378219699148628870306706022773865467731741476613809936787488679612869382147714203647717485833472950108565442088734089048957453052394287807824807529688886565500441024918523496360326571200409806995845098991822543189392969160022753366339427143286288969458854398265227576957862212700144598697787458664984667061919977052241161362897125699305238872178785405920420642067153644569804147263816440133026587084040781533034855697844719255216165169614629657341486517439097308028244400996360206660352189791689873887538151262417882013490182329876527895947781238524121496422916458844427384177149581036325815476455667247947470926041412452751634459761612138196864420135624629002651017032358581254608695108841399143223659466097281024187598787290988330759102026523874456897416126938869391330069837684056280893263963720140713134961858972415033084851090718233435846231844779339280291999220800831579766305538295064446468744142309307227617746043100489691257091578023526943435664149278174521353500043777032139798298739217700854083054269515382505799777196519856911748436918075586169890779924791607600186655472521555111535348179654558408780512111815013652629692016389283901438726066057155765353833814505455750555559340187834287956578395821224800688375229448851864830694651143881066987499845742229833253950609828114788842884906288643917326004244448496705707805201608521342036473756162434741081116583412987323695373214308937490999438737367997333535531879491916207630777422854918006827033119445431285199603021106436842996989679719676171410225643086707179763139240688066997916243379260621292188341453911915173830253948402312481609690846965819572214634177394804350995631823712485051206575397093248802468203015839306114780450511910024734763688919668636660429836524930379193140427759595103343499506004788415159092956390947059665596143988232476792110619085827722053344304959345531628060899539289844257272201771905562997516066265057007969001065799712063004758211323347354069511793406383002198880830412897390607355044412954477350969093673715818748459443087621538437514612035998250638652118891826082433380840708625576353636902000662366218940983099761495677523220281848931248651515396199593988363013101388537128389827384709288372964072628589625121134712084042666702964558742245892976877208745690682878529635176450066538611700003353253035802435431055926014865882410417827786275854962267688780828708371265019143100383128736886215247776781821668080269272551445867736989386758152456626689741267841715541506184166593492443671148082194829621710378983100889787412063396766547504138965407527247404280660075806209216648544233782697952496516708674770098858082892052684962637367378555714995301859580069974368738698743900467693879327168592812018177876190829483526048140247362449008332738422274105066897717626491743207745171633825469095629465139397824720952902618260373851011366833271552105653546429421378404574214203510466432573248267989850020408289198628862819444112279071342352577011234881430338921637939659997754843149344681405721107034321620959500478529322765052379627009690267559222883123848494229699920403166511916310128292860001008246840862210431584532678408262132509159773477045032327761512293294069233615854449131534593274600063331235349666884078621767610261565567975244022432970579463826944909928760733341117162860159694816167231309977829825594677452125038953139876096248480906556925912388101328952287903696400230548386734495153495406407273531915185305316870329671733853482592955167099103200574987492604667985402182834245107590022476403572712713631899853176142186129572224797682130238629922159093583081999265606872422267327985594252210798237814727863784476333974085858105684850771530994246241625536544757525346128733513089408098118937024227634329219041134988346478298036488593840136905422514290349443289345669077283972635807483497025550116200600642479448502152891488243026566880618627779319491659992523945883118760410811938219684444445312616717660028920088280754731636220223443571128125277444434767667296078179999677121929029378680746701377823636478023072631367460240769140567789623224725307490529599671600507593612601004685776423888409482033660189731331040169097298759652220234771202788739227645593095962255131343584069689337864397108580004292398428096168971502789202191403231416318030709891714348655830113390831715911521044777268026371933722973371511114084708259980246710873504756392401876226892141106092499154726970821011693659364312223093124041653216488040102966029215129503916220278010000442379102120805186092098897061880668954720823103582920345114284040999131957870803661599023415301283368960080576906130358244243897449416858082912476900875681077329675315288743507302245937076213189298010997680429947265685368993166050587811920061142503404151308814061750317937629664185753210036629832232905689202785379985972378157743060147472973632010579104988512959748517149305688922247612823289326497735221308869328704100168428359329877438875730745917461035775015803764047196761391657041078724560875871070303633131667646557396753597808587602126282782018008126142129616631006945281660679635545406956959344091385674424583138782585746090794619099664932720864640689214080904034485641427658791270456510269095284324118002375529940494675920663221653004374201542575217868497672194896012188489470653927179890642367236876078695758663555505054110972519514337805937007492626727787748937679701121789586391416274110026263917758536575897910075294740613716514210653557802291024652439160846186645680511625457299703802349479310570637118541210590691766338260679987243485463631371134072603860866924195226177757797221599197333840442035693744559959133744046206784931606039578134857330435378142712113824818543046933113295510405578435362698264367688977407934254607499590383596963550368414755491177948344889875669240491428246048137110509208476672606243913909835259423460201153047029377858234950338973191321545255434517104808624515265095100367378883694977872628403029358034022939815360446284460031434481193983693735739661242584402203911531391995036887781393471059658484390641129302947206352698372418966416274413950776226403385327739155347461372838908107390420348082219228674746363592185492543051584088793919669925820674558807580872912668321411634156306754630078362698893813521716249573262753478522375773147073813720899135204150648640725421963448626912414610429275579104059112349324158646230198578700358706411638906665241309236303380994087785724457773819573973998015811992674916932934490723627479266475732789013862188783050027187655050903400257237034299708659255224124839464092489512732564687365640452528104309022895004668678736081651787560233989703327530626243974926886173880405142168625917816839403962722563360845852949819891532723543833547089287867881419238735531165264172837322508726192118406756640211557628085108086549126731549648062831215200960766909947723488703515395378434896430519796864091380158660247272245266143301489917468452125108255410336085214654108840045043506341334102984147807829778827399310151597223814941186534878269050780481171280504379527198229517805764777505732425461149838461168669851363028639726866326573991744581713427169265934416247100546703529944959900346530377015079013098396311439154734063434568701977402316759688978454746507170625107536807554186228777535312040299252311859763510824465716824022459231352460963290540538752309832408902612344959830765823111587782515150329157209345671251620347946838837360714824390604955844620106009672035421106907895289119871512803662298793705415225168896520062271164587723049196334199523015101050594331094786296159171821570133653341703197845110658142718533832453503559126980702227857414296070528923682683871593459219776350858124913203349953626909806037552867306907134625728791759693368107632738305429832286926860123597707825969622143116025038669275921576318613032767937808024860908480345232547187548895628283718350804087691942020805508043014990309205648053319523720308445075143646568657112198188323526023340181090913857551804320419604541054645916731837472529829697672866864755036300510935196113911613265473855492621777233292908173926266025200861875426049070864280868214753426086255840415847730033720997674141192357707840519909315608034987563310653025699227162565155460780388587065420773721290536991407687250848914960110381687389079314534316741338188308058419460256660394827098663723349135612937309501184770301621035551277032425598671062817713602051104884723759518231983130352424256757395100899005530655006899900585470976126383644492555062393318371928003607259579242823256033901119506750219706781694397459660912626825334595109257420084530616468636025672392673660634008857818254704970620915563187858534060925807607393886253124069571508888248597282874416316575776306981496010330854079384106184720753765007272011363214238546119037025979607769306525631776628719510881425596736759608420206974926732435576343828440980549376473072837238864822923332226738168443604719033401631428519478722885708414220709196246012823477940500810969894524180298269636364359770009909108990779325744586549021920137436586115905314662681944819575679018399509026069730844940065415011265202282489376143278021496189134331871504966299078476086316996992729455377984136621657026241836809850966565278219223211423671956924823585117506147161192627181742390116251199854083526502595393266019265550979489636069975076682305533855676939096970325387427627757655583653898412638687820822107607964768127998320664394803841782829401591296179912972744773424674240018123147900570406505234722880455157464977664078280472543036082478067642263309177694594731060730350741729296034065508852010462340801482632868769864891562042052431878232183589445262398719862579869351382788230049798346670398640278591538109796047448410169232481418002141855482205182765777341323723838406419808802467188313888078465458877749390734153790934312741227709002142759661337231919794515677900622858756699699979656106568387189062378403506032739300946510498976861659639817522949920709894282107792923834572924677302103406301954290251268848588443125259522570712840003851762788463765213995212049809046004687389434705038895912944487357478592459883417466938324738463405728376154736107624658162739633159072682638598526226063955297737153908128888554222534186474590421654516850110340955997828007384920876603452243011782488680126221623050024244357357332982615152192222580249027390649909245892840766737566832722482263423114935439698791812842147559127196975397525658063865099022186540167699745901171167382013999224799012600839882704349362439132789765592576121536407394485188679843361571093138283322793630376739454771995267982692121929794315137967137087390021731772124435919284007556162889039109023137222978594099702001112612504292901659469052198654775317993873035790852515970230942676619493831650924090079527172707136087686935501496788417881356985970885491417512407216316659357644671529426702028611771399604308338414084612886927648973120705981846521266002587043840319136130539813101039193222728010983096630641666481199987650535860683672447760097658914760507746761021383262142499819617683890092671054972355849691079289709373132356898899844238107328167198603825087547548249006901679682540844005771808233678567579986289738185680776833315340434609921409253138343377351584911543359282704287057194676349402474656170373336629340988928573397382507282708959229646868342096456110820442484278192721753690162498953221477420619527798380476281760752123980072490488774421876820442878245895102304462316590943931113634628268313691195493362012115313528993794855308553113325225230751677563389980087928325492228829277585586703030722327479303089412935417384782109652733213743128999243043740964055311474314004554171591032087448945546297313486481031776400231338185525915753894244077011439527872125619883530612949229816959315180762161337314835717289705834915594601460559614962625704729401161814842760293630054346055172221266990966127242103406218794818220691396953706580630120015671940950645489744523777872184323616602246276346856426010460419183556207202391334176379816559065275000872390471427403112648659565990565018206493430313428384378049387417351236324207673910654080794619077199713183364065970911802249935967250261248457994901426446530566618473507719858881528177409797735058148352557228184474994641580773457475208628619481523113040470133240411379403885296503832132328462720005453410061796702369159706705340988315421948367150282213563532468973031844372069766404188811189235007502163225239571525835306752626403865608625951910237359152455154150875046846275209261727802636348804807601553183016813991245185156149262146946127957371768238147549067619842974452641564322043263663728354385821502574243629037609337088915515988220750498580057521767845415733681397950793237273417269435015787354410163073332219414453298056605369322137522225949644059877585002248908324091735112302801574240514636974035005309575748946644997597221119891326981905249169215445832808507670545471424148378399624999393195079478140021359479688710073619217622964297106521000605982101214898330631818540575711349470392838789642201687595176675862102948601636284227499987279497233958868421897336402725535245762291332793473113610732664171556164519292010201737510864588355728905430362028043127461517173558876664448188172355122854017165335546722422649282695636585308596628391863119068581183057147784938769525890106737900994078872652385860132219662180539072843117904494402556562221413354568778750995997884138806285119816475424250839096220513165974751228947413080189091000065504705366551598036247049095895244241565035309781405610780497124027550134271374966259063946780571478574604195114525706819406337858419254838346145337428203815804380890860781030590103385292588519085626190331971223241798984981668500730692192253404010240694019716042056772601517305455699496611849793516700313652904459891684209978554167351190440983079830496909846795007870280626722239986737646675917322808775562477182677916206574005611240478390366952942389391939441259128011964928220927046880730108712414604874035714417269181708423062033579793395262588199724403616123078875855452869546216065143872406916029588643540328293663135482684150342413226535243237881335275441270897986930425852802378661734814892859044698716170813665321480641206166699388994177065799438210853800550958126459257017058811039528026924229672090614665133769855509901774939575725930514031651330104307122532267396251483833513316017716833936581078589932187161419371700015546423870325404381977818563178024657725603044158807358320655106040411190375626992678750911848576355011700555774286662581221564129943473734480750015727300557484946766847039762201419894214032506994476678917880319831762745893523516413243314144971194797565224449226459952555264844674907334796932558321414859496010407115351836851533417475580019136605668896701450030224717829591468654352735021458478919733044358464781356508410736085201793436758567326650849840899120169681756157480618989823150977391796026948847142093243185925399703188172625413849871864001441698793806928975929825431851651178251057427985953130884194589433796264409436831517674943205528474705083348386909837621172149041334022089171290668494030286986250967053085163146193564724168679467702532764357146985139893260027745258339039779317763378598783206743676803086797870170148439704619962532177464116018369955247356589603463503572893287778326707488407490707180197325225493845734819249647643767068056579183296311576599135123678244415250201157025832762510950263969778725026295194420201023826110047891682621594330740704460670629104592573420563810310445084650732787372023159421153933998967503908611866023283521334447458111460659092515485813174173701060699784637362757828816577974640495775788871754828441514121229480675704509657485387487237657538708781039935412556253815672933545064849274217871949365606676155086722333202846271432013907953649630656006539634137942588733091270013894009944471784516913011998891702844034501024022126272761253014399931326602630476738250703713939305233690140547168906413040700243452244487318662143780344134037947033697181202108079346672956334107234145481968907881746164244132448361912821372970638897977053417342316152404377561732865173517076345391406184694891571318470350741813527514998173105060203725768201342334288568262156374793394404563389290998097371725841317732855954426819801711500717348100383259404850591510571025731611540078191176683572898055675594509281423273876306902064539189859479406843823373055070818749571786054827167850362635077224311072695515259832188593674931952369681116428270900532799222841043635640633685653435704345201877955627091831092501703596276044948598737720432228772833040416689502331287646993828528205611983840842492012930699459201970521755215584405951421268771634657978171804150581616222614234090619223923280082176810908847207354238819278556278803148399946379668994942182860009708022487274265774261238197257995595553926099123372900564705454425978261123958921429910194770890686657490553983857530992455766894945123677552054643221207445081114814901036241691399741032236924484351522917457555048677883676998899999998439848553607825138175203522627754920811411440895739752869495466385623728151758985947179289244264480900457160521945955907484854756962744192946667496576668566953569521714214710449316278688498263385565054106945555821864188797035146827651229982860062038703422897516381806899924586783752309041649730310229515236851773302765494072077456255393518970241855227977905418546500490578889312530072750901734143674829501599385933030758027479166145022112010106266530899796174620629325003553913523466353220792953380306565339768961133831699396661592105311420120365704161345534820053351857670803575444035027453303038072353684595811225584666078586621991015825615759220172027490241221680739418506450978417716527948007161247151549681980153175477834520737313118881789508227502520278079041316856502505158405993758098959047801134106668341477969081342754291630880388949819755072795787929968010817057674948076821638716287449134478437477292744405305734356252820535938100225257999347346781965384907225417653287161255623835239494739936016967814449012256660163688859657097981941942328783434137658637764124025272351431236749230536717439474929074435559374890125842485266890169125393349982290111510529188902766992525906087227146879252814362331356165246596860774608875982146903961030321817012404510293010963940014191824680953889858353108896950201247058071802414649806809156745078575503943657359872105480439798858008579379350376653998484249583444952717220442451095942133912819515022266198386806374400146844999690857067918288472733695131746353145234755701816640522737401899124237992957257391638285900568706895565148212420840545096967005510084318010799400633564115298575911857060419172815924873006122553468160877571350839773365884961732165893226880309711692428343175736565033802902221107640742739496328757491954860465545910869386733571001637270415214714179861176748813482593799498717792265462739297222954267907756107890103012263044531530722449678231469596036760520609476489289118838266793694085452566968265399701322613443352716991861242863757326737819962755775989005033697659539454169851294916473238878413121417445759191273982629305376171715327328077530453897144787386739176604744174526859720965278346780061804516860029545902706774206869739992084833654649080942925663326514169448377030237631085955456869899051286577159351903697360332517755806065017579461278836343416305756014750819923486501935005019326854035647103606300714058915457204101015431122222921720320551966790532717772667418032773995002421737586359838984131290216321007397493845471244801287615463677370267159763906627972778769273994183595157325769985000544581629193579384449597926719889106733798887083292414969579824663922667938657020342956251325061468089168523178375125734190330822282116274161744759425371859128590125980387375412373556304738034140706215452843493570702282176464523461672758275963233329496700517374083446987053972188460744243937710629503882145128629336862390472036325987281041604061663801885241557730607935219645902993726568313622665130558805712384221026710063365183375293219640663241513515732986367657671493683946476960796552805256597471447558767086524463358272340529731940680688420900977422856853860400503960487598115583727487473881188366711301909936706914418143019895554438442096053931836597591967299143978584147796241798858918039012441810882573231696544374236708473316462386000643380958223485410150750825154894944190350752435412419846082991011210805402568717214855398141175571610698563164580048818558915198672362760006573607078804584604955982973346770685843122838639805403314937596554470236156990030190467489693627036656336266901373771197754604042826075997728060780427453068496757458965906778306073291333857941672077064311553394086125616367422713425820124754678880806163195140795131412556255263249808861223048499434496997362837474727459663539391903638300516225009062125722587543317646445284873044403359592117843003056170400653548017045156862706195567909698034733962923501710900322660466070049854436520747638561521937983419786929381989931966547917636624205275657690996192205447171512271596523105904479833461487045993666046566659202187771533040702813268359540143563340462846258902896960277860621066205855907333202764747436371100347940423003222303566596214078721101220469394802530973655802566403008329798871588643081352789507818644924373438397850331400170746938761336738394648700648901898133520837748573278717298440958650041799207033565331942030767710390921893348305103743278278911349307040429647562578582050160830586119163595751075976351734206446657563722429866609571620443817544362436135929727120242022731881692487325333406954646257401394967897238223225986303862588806619620499110854833353222217363691571020132635863106871207170028868017348799885436317783090589189236334634127000618844704681358500968877707338583294041486994369481845481587716489957153327747616569725012836720099339982539425900106659395753665356092665407652053673566772366935987848601625918229781690867220418902185807099465522326444061101906994958234922143045238058547383280643582400856827612411138426170395618739330892620452585289708581282273919400030210743724339054270493918656757373003941709968640971945707690199395485213200624343639674933688049928460946711770438028674708751145713134056671135434807966422031753192734916381629405555973405295160297289261938545257631934471196465812095677886856628921436164498997951569755649365601116089549917230919649237157060986391037660658185939163462665667402785946111784663292771660706095902706214324642385928852691599913471045350957897097494877417925115149202167854045407018262992481953603660648892147463510955048257189293218434924749064127763437612332454688133116099393289216970654293819288351773901358893852758698482654254327359170835876215823820516021315524087888483524717327134692484011770791405388475797203007711013872140857603080796907892412775189712254421383128031892653250579982335800219922009344735179612408477895938871588422622615991670114493626776891796534058349261347937936150358999344946343842155375102881678787058001083517628211875162725160674345212557674901233538380579357740393638601998540349761680586756464036194010388535024035721339986677734099958399698763319089013013825996036556451719857990866139344321617822705274555586534931833293845818208292161980110757507974173381213114619422467658580297043554323310380096869520642116590445544416745059893086432938742740416589579116083211879391784051728971747929385326767551689646056760950244772012192841415858349339608684176752439594379797275990737224435252582371898090912870465222169293134145750784825300408932769761410091193938062433220311394108505970521361256488072366313298291998561565204365397181425602285245789015682715556616831200250694724673448641288979008420847844540756888287443004141221831893985874488907003759689469961011583138294436935262840230378862107313465590687826331928745457119911982905638876049257892155243670990681897155206855295419233634688277330503246105402791408224598683374903141144194963491236790463232236599274567775644034756091021090926063920087432698573415476883855781781373717764659433547289989196358136433477268614134339217920615664965417118014512045088190521979031103749841447601497406553766920369080783057377574078071786029613688690165556498300152940202804378920348721922445953123251414558977778284397303508689079978883987810599539990654769844141806287321033945085398490912563846587769334022606561415252649179334233920329829312242668287734608019691443271289859934727289735260414720167485360636221577508315243436856393042750859661456717759694974370223642566450249953284688356246688325526107911647418735649458004425203769761253797100218031651361915164823237768975375743315935195862978935766337673163037891166063987639665384463784164844996467844170425148552097263834500735487691156611673228200485498787638942841907842704314842447527987373393528625002066171084853493626488668734025261170178426920864863040622401811413444826134664251583181255968391585480104219178072574399605944171249719753744438590800517625415552893603042225282707633553405458630202270974936661917986292532622440233630738545590132178728955241210837238109539685254355400273508078654433913651293571605827603779585048815882216214405610390659122947562337605148245796455739682420655500854234369216339106242390716387685070722441615140333455904616391503327579790757140673598406131043289790667627091121193359139080703017425104707395011731396152426850378195213591987778452188019950218496916858104152545271935819800919315202565943719785017374273765292620547511579760270307799634546156600270146611341691161881977815601199368331488620988164180899821342287848581023973211042477420097388581780968314125169952691707836429114702807480249439269551324248001047001146654713384572344338562787819530299945390175915197314700989693819860902796710789895127595480843146082227715111681980249615139125502116900272021645085627969537250105912393859798926695671736125773050238809295984152411539583020916706786378926248849433868475121065130515568239070407838396104400678976302543423637862042127181765439316337312159467195595481719086591633902684838340647685165068170366517777365442469722243119213085742529083628712001355577188412175891317090350473531213163740952109853167515556839397820224473732484009230088617116118088333823440752614316730263859397846471984747727085715658192707710805551631445351906339791813401510326828416513675610116973113887417183584386573005649641503827314502644446278929058427067324473382077107408511777996950155712673799170996064872917505474903100841940716462930539051183053731180133001884249177503411963993686169916227428691844937479194486364679805556666829081302355857515549028543073363948563782020676397044091929902336562274268055645896210156437646157727368136822066085465528525355232571889286424771080460104614801641715360908243276536338192434604153046652272700011240547268165667480675452018943622086594290997315986498824697576610115858819442195635682856567219085854062976248543578787992871679984605308290673048830283696372918328639674423571682017279034459042966009259843805346374228841969640443637766011468492696914342355289896161038288635337562962997858092776190934999171767017535613980011849680239265107213390425661169995334767315498074492735187515315549033853388056888750673577938629040592437065018570127023758627667000637657384604026540246385491477324530070291290789461012413350232572546660336812723545129682445149235648005458368077891789119668729754232424970634917289902838470135671969461212395451163263098475952603068806779302145727654023999131354573317095066820003014386418503933001105055696191440525476118342349555788988356195154201964918102875680925971304198009874577496811448866667328846160717646704835957240442616515798670320631237331576275439879902212256882869106104503036486279791736843492532812422541608555902965503536744028269748176386942854773706926682232294503745843736775089254419927288225581400770145549248541514672255976646618814537343488891111215725541341911145586829360900544190294958460256065041836958586726186921365613419053731124981766484625363373260419601461441000286577520168338524632027740980159465100329854083703435955394600850922367719579355055442451089816014384437782062564162166109513907727286539995518256352937109440903164096759319165607917366758850843614514869692773648371034848055873229063985293016240388685892589570780054509502779953079675795343226378987633973218768469647219107890062514938041235146676317173760618778150916257717590474727437979364121367699781074866096147474962032288523605921071105666744661484077624070037118830121840826004708948784011161616937710683918433802656520869017221565718548789550510592298950475130540403019502516368989549746156614839941443890773170221937480078431692481770677488284577025774355192465364068346582905711858904359961850714552209070927655538528823139032952374275409743095344385825741291969124772249070977172357744892146649764965716504962260576612624496230214414837414655922065989755114715871859732339595323216217240327547425857450030274274240382361714884388031422111092324396121980882844821809266227244699441830867344007559842481143757493724668861390736714679065135144030907624332811024236035816788324344552544492887519522086507313701911662514151156006501663369144001392921009227600159493724864731243129302853900511546112269332727901323709956024646994743833237186467001383890413412116159354670455833046754524520220300956258821894923382847074080381409402218840409557772971919745177542345205353641396310513328807460442498159524099231021081707613671834086650042882946628469563701367922036975684958502945122046835418205321633410152833830490251918984515067665094222580119315833564009996456207260267428843204316716411506975720195286370103404515870313966132962291556534445948910927850307024328881837865778266528445599705098858106708540260445384223388952488982816733478803085253901765967111810261072184057793092617661151752621604097071905975900345302200713302697043143640415560935293149192577549476300225786427717467612004071644649416561965691458575412699127204491589786418762595502732870098072836496685276668908806790964783361630959124110639987433372854545340668907140422627120052947770355227392674591839053705733413936700790787714731165822988918195720884210439058771275346612130661976404929398210271781371693175531265092888610221152086899643151056046728835552944251087056629433599287927584492978788513973539099553158247093313603807840894580159647635960357679925209299735825820452451878430981148276168070551696427178439015795040572688804201747391037374996036037194586961933265917749577162030400374810993835723965916036893773408270769472309388114463622224669546193615183679774208262147604060521541989951455385092454452049081165266817263597893613064072896885330982538424773425021720303694810645208292656357233336869368181255543256880286026773534218813816406515177191151180948958055480889189541899902867210950126201822188268601438803756889972297402825984274592056131631763776484482670988390251333927104607003786690415551411872287933374890985189012961584989196567827905013792557394155984642114041905154490900383713965866169001309149352904517307588711400606748680401399724516937915693243148793844572668095100643425231055236428108591951391507608236396617070066333343851670238860388875636890777923957611194267391553744352013082876775212258157887776391910774190480120619664165040202182892010018769473945782647667818501572166423503135340138743012081617730969776457756862301071283765733745257692487490296402694054393617141965276951006111428593959457835608231766044094518208466905326624471721297760576013183865764143318919777231830718026510142890683874561649769301477838970304190352184995037353211893726701056574435282656518605787609091327556385310583835760519676011134959428508438436264921785593462403387182417510294992539804072493110338802336919833267573189657293993632565066281224647922493224531881561825086818900309706394614664086814346139398342555436405994320593351242012288714189680769287833370784299132130845972397592424116315418031619793744912307379491902861325481427258414627010144339304736262458935820471957819170001627157557491880723442374605371607573840585364847858908320270326423323212681510578839469229274602247308370849674448609219930557818392049642429336734570526004388207493343162960263115801203242466117987015805473372281761636245728111376809666378050886959698650308936400819268853755708597394846958202477566319967916190764639236443715987314039729908116028218715234048914817281877831592496788132608805859983319581339307437954474604861702121327505252327440875168036314441639821739372383887191826767625895453675305391988232928488381997741856130728324685304070686351618838302460002776155967852712935470658059214497647592338392953181813909513656303284258414783243154016735684746704772388933818299750894849639288601858156438220851941437343166352196819913663571277265703375945205488350427795663673823405724846205579025485369396247482721970057083591075439726407044502453520483707683088078105358360549162020831872988261810617725479234095199507370236267831830541612397599901477473373081553403977094587954132203497408967739059745859176331908895607601615661954013851748324238326390701900551265400799522471280965415107788375181162540278137104871941267123498614738090688540765375283894765681719361377572510467550315275778927990413546824106337249225531084053687071966696933265750960208742018578767496261099989474549464399191827985422396277572626154462271520468998136186274748142028203263367735118809710180888732029897365898271889324907374557539688737407280840090979535849964172227042621241875294589889281758328759530744461657770505762570199917997212045511720721293401411299614565686273728272542517208757161755132840945201584041906978386924559319886336449990499573128799535371270604693662118149909163507713302343022142749227379879791811256818825789077058603912635867312911563926287087042169782942057402892271270086635281363711901246367980412697000520884376564182284253986523338375470486039430594530104704117832203673954200863145600894011772054972504092025284521737911193572358887380080889656003744366903967711571975491117297407530008987320283937481405849509315140844471708131375857080600766583736441873121136435111585797662087533802447453078096662933108918564409509011086892729905084224941881054359463785117443215099792649391206724711895693479685523686358824327620378108531052073150238915200863397391754019243080424758332680005417737654630448429933593582477972563135542014864234165153625866460958024289041403050486958473271436685355448832003674552174053582748918009018697961244371925071364240026568353106261873731909056854105478602936173470414165483815568563841970943288847921820921014405692892469222418248518649400336692528417421847696941049249705030955572656194482559677020517448469721142213213913556562128363226560786989060366704210406358893948092403801023359241873292936992061283149122445606513350652940198664663142917327695480784077492059748720009686442700200194698735611868153713933368214187835721265311010749865472740437351894374356938063371160127658189141056528065615227465443096355257673034319934491811648501742835698854288118477402641926871021314113843527939432575381728712931067799328383334024565506825636314820085805897597019018309379363138271363166645822336347168542149096015685140164136351892897908129863492909980365995378846359152236659710025523690075680381095772438887125728862296977718995546176191949637421901625126866264035402659233711461605640439871593662362943053158890135478436626013993765104617840195252106926944284807255130974809327688844850173102782486710131763187890216832587485659678643516626710617224442785008511976768137087395364866387934767547961231968044401368359455843994362259163715337566565357249929098455429674418221459631929551296999261107535217568957427717442798218902073209259826596034458810644233222552796798184311977702526097650090511276654028351509613543665371540144400646302311133618429359567442453386012405933139632684526606313394652856332111754205575056104689480527736962689970418969970146971334039214110339755617309935716640694131542789747324508868601640648855782520080601494727079096368837853228475921675788017403337282082780317335697706550933285188411831078420900503428803182192749874337199671829977514051387227493703661090999949924142894607869622139218194290574843429726861913917949270227335236468329626957027163437619042801571792607524734572365330954418734548932890044427278998027395124975976701931161609872742887067332537249044362262713143176199065652549456394041007067364026253707589794293282788657696092601782335451398315441146482330720338506798495875503130308063344227917182210438635153143659204889580629674276459025824587089902996830587476650192638323490982399845361067517207970384269331961526061125192117911371151348394986304205340095655525920026186681088045986998399376718084348457115297076554503561424466824711396004182849481987731953145196957628379149687266131413900809997990584224359933879719965869038976011740324343909564802067310042453202776104298051338447073301045468936303776758063205617481626639705195879337430419748342439024405212881254594648199076063442897262936042062870459949132193686198209262234356403794025047916611419045185081277727100730568750315176152906708080766887024587725161843212634575148464489119521202540651901711218301750179233002303546176320626227957727262798408661720221737802766154716576821533817774102874050583264779799890526548727809949843052209626893514626782278071331598421644982274237701557104026021765594750405048126280319077136508388563512360332834550718270949582226649890771886383068662559012824354663449964285578014086619209777107968561259908719588838822622547381973173473914398553550054199138306550469814092987771914242594066933111386736024454800252077378070543423244179635599724419927855107174484015199714395988119166704069924228680789834951797174490525915629639664028470601198181847178747486840260787983454757517206917267742825281486318717852237273294947604169364130628987251355423729997963957376983089068492063236752343034817299397410157886696398532416997095776581476802098179790844834511996100182567823228691287499669372130657875136628713808969901031687318674571829489032153630273082711781754393273531137691546822441125989779007078679791148988206279394018124929119465305750151860737473252576709224417431969771857391287450433811833627380243519295371759789417325739073381968028157768540665675454740863734106669249777277524541892222628634055972261654019593618468853829533890578682443633988890730530189593388687811493659384410175556740970492104428424959604638838509450062144167756314683691742871054793767784171815447109024756213456628817855475316934216245883602424027596399485675367113488040944450113994271722333728714078048899183114929079656150350656515584116268188653277181947853355641077553889587515629772787647560563365792882962132474668403705558676950102455634466467766607184172588604030335417867257797233583240638308885829199059402086382542262395405329386537481499886394593122194122956539793408278943425910647023321298615640257893237546696777198859144187809000227675271440070027916542726277682407222778438713808053113299786364948823269674940274054977769086465997530083751260245469182737467308954390100053605732709263610485616705525405623483250846648640285130382098602888615617557881048675661235888963307486299422041285762200764585379068165074583434129489263811453946456047502162430012484222061734840352962369831394040240066966225007172381432107336543981494989605180893915655897285032872124347635230284997977879530887654084720589615664904493742253978082325727221430296146622045344362016673712625604696292751622809880810602173703436964453808952421040465146189940599254235142960786854539101840265179568834384999158188836259846072182166401826985898563318349898367542564196735513282040183381627266583367945612248515519883963034737025104685454894990412801766605053329194091136878616518543516078984248440676086062062829592812718430513297588200411517552743564113795176544625696035016688722089832921443903444550940818012792631621698778362046916915341723124435597405430764302538812243527147790219591341715075231744356393119950915386370961072769701789140906184655984368121061095275444672525177932049308455757553047886592712810548810835544312765761028007114151761476118649834383932214640865970566631979819540696200073243020910186810991892956000058715324088105854406898703777831897138620225952523464894778783768089626341077562799506154789085819468252911144924533852496655266428305740333824561930137760921995978307046913856523307994901496969556580411983199509599926142664946137276933738995581576408007685021146876540286627125850848562533913453892025910838877555608295080904847005237277510140328359061005946145484739669686119286868466789324399866524983821436262923584740627664576661420151550711862068215982042491010488697354100044705745564897644097142899328749401652146566391445237763775148114629776546727428326949342464803306171272923963904298251828053134204822237682847155892007065305694665351396072487655134203895055651205887215104448094348090736565787059460023689231746517552107402597014051885297680791874950958060272841968675183353452762092121860707592047439632145138678899386536982563050061896531554498595130327016935482230202677396733237401535739374360208164376386173204436575046998910426005105412116398390140651251265197482634725498288125350272671377872204158255433775694813279710297718311017066305115489582597605392590040997351376137434995914047979290263814171935416128808024876890232578372213936301597676252010184734645790857563535724958896995707303338615255457436034836765023629816050450146298569422769948725017921349374548340217919283690750235851374007718033200223890345813818008223995166408964941209899354749955406132250230919507496785509031716752152799970412797271817985129172369074775808578245110659348958002881967434246115168859637781498574386562497396199686521290765547378135680038343755761503125965162101526371174988198506947320523922982485142044890815454699401778815656404081020044263891401364925219815114138855795695883909369134526167178961611153577956077479967423711777323484292911372571052514011516052513225674673212574025698171622676803839754041618046345117514345116391027619230249337170297656622066228034164156095453512514392868096578499826417477290214183606215713453664416784891739290466421595675548344297507707358027663238725512301362027935671318543244059950802596747655227655593170960643838528348288974690005034858435676401933298279063444387991524371390531516950466085655793731772274599811357442115871577749024800734167443915922667863293640205057202260031978242334148894244521351061042645052116891299296507672575393784057437394571829694129339235954552937022758800623207754932348908804052736234566564247552409005877025337399900125909504488321607475468936777785248574594635061126118527330511350711878518094832479490036345732342233561673750786518290817809746893024025183780154559642631370837624840943746702915931868165028636233809258434971532267470869679961784522987311376026545756683356211872326423553789958792886561054970499056892062742643935459336964873291642327645088066716714779978383066651183027193332083149307483014349412307696976434151505814930394703856486674900318561752976821238353440026458806704422910343818008369312767330595004316713053080961959443256770775102664059397073969025535537346201345610834057102383134513981337689809415151068050234273411168435262060424648939526304794875049540324413944019655703522857943133743254466231099869371250899157654811107550241802405149095806044025242214458223324331115812840385532845735664946769399552121962820282741104831333060358255598220436943324166818658761893675904102662674834251076763038227771603428213414047809636028153586539529396642664187680202721656357242813333417860860869713526203349415509446398214881185000700898100553376805215277620373735574998805203542808970813131020911744873796255706838665322569540448427348223941373852107312353874116460328934262157459209112362762042419346117208108421399341756484834508686891649141773850263565189321089863756151317501715035123523733922985902343498302744226724336457300027700507337985853900045963063487585555297803646951648486472776154130183574204095368604167171570712621534143895922062329982228015546189243174472185494945943586486394549189654711786507054852573912916624180963354867552691701682557109024679965998515969222303730642786967560618186611455932152091734125777640769049038543122572595891401676200187155859685326277507213226310358327247593673358530000960626656266641175494888279536480013943383957328985719865898047360230706362146243691849433761661447999716650157371797324927549035465368539309114141132265995859469195563680865752393725684333594854787517599663668704191906538202031770251963060807807428887658761717594268923328804616836280043696913612546198361197257101645501474972263851450534783071499027628736018618825306464059863108070336935249222152476908757984270836820939117676466394333272965334007481481919607125374137206383885879125505446601531721348788339229201684257373747565731148114908070311742484998773065100580383504959878414858387478507496205002209098726554106963702562304343864995231012037659711892538942857207579302737855335357186099901307115446830985711316611831776493752310307963233911505210734551010833493117073620306434693082353647035183414334301774368377387014445660717187457442595433723615841113764488668825635383371271940714176690185481473524461317880957375020916485756498962934951351642494905732842482563373902896562695773298385020550783282727118903132437724522593454575616320469125327191514552423550371509680253414927748892238736778150029940009475260217775682557683918960402489253178746036592356343319654622551110767200326819642974883593570102095960581643199691936103565635919529086242460790973829648975667093628308442292898649145241201778762048349426250898624268338844133804691093893648282382971325840499329702042413469405351753511039582805063635641267392475399246729043170516361214607217929601639738211239979775939899836850014809422140686112563193441833406874239309507082279685224179239915450819088390774009875246549338880348690516489093609493938675120721487873246596045901663803528098472212089861108141026890297661457085070786677676193779061053815937008179378212764327048143579540331676930558613704557416762310057445111769210823714293602798725816650459091669892051283247891581084778820678915493758163271705016285447551556339885005861133068033737745024811558832510550280237922548640210541689431108938381362831014840803227634097931811419280050288730098414249157003955578936317778448261460746220310232280506963037961547700582739371862714628088613057985592330064622148708057089682762816460161398881349466669284251139120954436214423597713425586460868333435460569868294325117905687702949417720672073565628231719822438258470168803540097623344165281184682940341286444784862102491632511928512461346153713899258586513157251604662930994287283477881046819657236648801446067179656806836550933929986235408040313078972582530342047317522414756323422515026130629499741766406297881177736634110530778210032360913785013683506743399373460399400231332329519610762007077347025805980593200862157784005374804881426846638889790120631919344656407387592749760540245551774049581416217619452964952767908603608367278869862731873662419842266589341518539454548036832031103029004303677236134392363847006189480463379922989398232205239370654115439733717686452340654854536152740645439123872211889234145015655209090861282369355380233078028722925964925352389323062397552426944528440632169465709695438291524467316093500238019164941107577720115379087173731154833875224145574502973839244847138887183382747751234887053263215214628887318310037628689737527206814894485784862488202135939115826483936390214316548166005985633990398456221213130635921732599751794153466408967047398816053134647601440359693237199176679094070829423668117440062512577840035741990364884647577209024847337186791882206987782600754726555527854916421443542199898786534101581204327977758667817235720465294294148054974736741405956522800289746746971386113120696366057937527234124562609661777280884464688261047817581532528493320948534081581556291598433326497753821488774361660129081710334167154754319661478019174537031100965346525765850592798949403837666517163935855448334220007327718219100061176060877191495710061423124649271397878609297444726321007200325902548561065393032065679218162540223356345573150096342869930598010033892698751056484215385991439539334644505811596998414272687289894038718824979426866588712064725650502777318119669668788792718534964315819151948893761159267565775949388842829087345563564027639700726463557144995735254703741456801420986291968262987524471767312398402447893884398326345923948152708244094238766072998013551082116193263377380836923613198922785101307694130201527737709738203810929163156945505034179756262200351368705194292543317045080362087802447611508396237820365397833320626945075911457583577087839937589872211896375650173267898703300720644820297517154255967007679237023620206925816845102525111032914015248301215848842981933614186475011504913740893179351096023543217388165504276171712333049716615957316863138894690684790363132572648972424887068588800705377148429710511729048649783255719935529400968024083874213189435683571049374159640237612320965017997518311348351070596318742714652520197583854359449647380636180811873669124920962278916222616355398714596561863074398862819666838854482725474554689977538179840861748355029970946036209056546776354113067228325255729812235184299642187784891879423661564367614549791500239897596304149050780702083561682495713999822675987293639232870507513871297002604146518773689056729244190420346911724861649804626911912147530641426489982773506451295232631437419813406263470164202175145718942798514949103694021307655171891958050042235007536778040600975411717274716222240124566427728982533141825903298554446630777435002583431833494668969262174898657176737895255166927854829283445965998666287045404480209291864595253310818437818148607867427627303038856468331116006991183034187424230626410990832201387352026945524849568211865764085998903793717973984615048372314222344036670159176163875968837514344455822232002262755714553275975230429721928195863486329099343120798966824719558461724983054262993415627904612058266002847562495756022162645350430358085269879104648258525240489024996525413106258935254365917786894535483537712143404677826841196447764450868427729632044256654923267282837874071516363635909143692134113160199276818020035348054617309429432431541056630413470778538008736335945951004607579354719519493815136460274626465118072439137965435434866010524430271232803393170414711771399770021576213198446451334916199654377040883487490223495686613078689831813549991421083412020240752680127851890977712291565393324225024992141141938054219094484622556179486283220567452732921929953632464314207570279140099812051708637151508006400062394139523992499362588265769237088542034880879846465524291770882603745218500106438341608883647932331616335490627637706621342562830067353927515640479287176351894662966424283932438388999995263229429901381618231741768624547143302690618406570180839266336905877543064105475674413259656877979046532722938128394139547926046227685920716367801084714312028354978782456933618963361538088491285225260940488640573698532776148787000598401022179193135096594344950368334517685459309061274342657782154381369598596632445380562327080882616077408878765602086563664752328114184279648767657281520758398481530104173782973189340525322506618843058184770099052650666312456848113679516207592930327071143704712484823949285680055713832157393733607782119295612521273120151488131819149626071439087556140487328982526728530584053083295696007506631782308102545907595274252311526493070580084417860928459929425819909090945883424184737974791253935534483466785581021838788856593022062752269983207641182714667510399794080506449133520366481873355946501694250072159970122390388573772142838287137097013398893549740077677890814966410649810967866043352391253742571092529397016074125453684777254009301652906071190340341103574768747594497601039068690838762351618293906684951412633735710592109753316479241655856314951580417593597190228359717780233159817982337122144352353387327329473123834882322050748540908826565261009728090631655085994328132005589743719410730712673402236662872290642174951974668415145524105395981490687900781797142235956967061064601737684088157089185489478003618692434809278074741824301573133390896106072523180111793446705654395127930577116835115821030612830547499838501898279175884832466220730782082320945213498404486585376424366433779421000190670770772935835410230329067736987380867945546606731337862164430053761321684237668759990861767337236371524692170737550788745004027027679587021278236101269600565133127201297207991944860156972976557380742347570253975746444235707564416358572393586783362734095908325546368856155311166281115349835028008906912995466478925462570162184061735718705459426527963225765259634616819762704372513013364806535406971627129671698418761243572892672713951961394572726255922403858237570305823236135721721670225447730912075153290550271151592828526813857434105995978368972106075202307325571069850468795590467125167800690105620860443827720630280035432795093863160275328425610754178863296801380047992427436647573115611137566492263550461938962840958151689501671271931264053802891521036368919378084194869627895170323489919349337348489126235109003557932239649268072504742008932890792461671789354524720293674587732150154974826024072384848033257392923535587021346913160470921408132651072769393749841748041369074225954085658650732749986172564215413700427551985492236327508951939779310036430664042354737823462576598027266791089554320175352847747511504931855353331440839289213663165847708621136723403610842984095163860884214493442328929525681367071619794502963921259379918003770086138337207919003302742368948808443355914438137241163660559243843201063507175078431579780716500203433905847007158571010581416111001689410559704618001132949665028036811645406672009531391663571075312270149936846969312133409718379452249813511422748751957162766510074986761380401989211517402112790612846931412572029829119690884110885350197167449528426039769487596737093071397823138057010561393814816849348321432757232748049789934096917586913875385880706519673358526353682566903088787668371026269045680957074212718809885128081091305180637718935097467152254020705824970329632149516165517284556627281983467360554049885170140690427377893292684515314633089584444198128551955969271911614645496972037241056906897483992251791226498000588775803005784954570108072355205133836204715525684953361015123141200147132217580212110862006639977089616535259318026216943859747544502285074151994630834413426614293824729957329971499831544269914230665215349061905199742617318288606425294961395380502484202756975555348651961156124433285544430563722094538375645736129708789933638667642250377358893969999663107158182741370660871423888501186718599507158183075602494425815944575346526562993105396810630998404582575524789697204273355340309813707163792145183155795738797100346836940165591557949370783871416222564302927517193082369444494252836179748712501257018443924157459956736249977668099198941442790516249485032477256522495047457594247453888702799410862707383622780723779268795750711774308775626506737728762672400054864609062111735253339698149673486350538738286591335574787303892266474628277280825385629329719038032248857297600375079326647234210543821498065825325651232533032055810340753745785739513591011969554976427022306857090243724934390601247607969162233158654141688114906816642644692571827072194214791076137926221851156757332460054179706563469005389925600582920549948062653453170936334991508619542068093495616215082228003786258733605628779063792093907516972246288780509740193737809045088856347236331167925615738571307650324441001952371468996018283096467797807157695996378735398545532282511943120597637447736005504498960910645214431403624923360482563398882709402814429034897469855429604577656946900498084295744029949817489360880223779764404587179324585548745086884767107441210361045014583861196445607893129611079277560419886112454416229609160921028366783872545086130893635787350399606214272978810208002201104131761869531433631770737485640764143656128605029628679402377197463693501575463753378055448643738233695885622697812787024030999043113823582123831354521373384002248443418377495160321988434442009615182770859921325213023146347658326082012214873372399169425906394749785193134177654311063696110684329573393594292805277940576352680275568086809610672881437971677123920330751878039555640623043348952997417778484094934352584880631918918151856223556702291413609408369129141011852853277153663209541051196500468917255989731607594005860513531032195327066132240028992781578918425360031756541253921926730377383804920051631038061705151135406755277961316891611718988322536581470667539063252647189101114678543183389589771064259566442824042344694514816732679582856993370959590246906328218993839028072906915020081211729460162863008071248607770683051626102088748566715336446227596085313188596080601936946094647912649631865691461634246143313641682399894607331759556034840092881363267172396839082340004312832478524773881836099367916925252007272507236773273808270584455080789217874092801252661882852927728582860056085493062692455130174342714008115972323474072731966669969362506344425114038186940222140138886635741496165707696284207449546499412452448848560544959003865809477731634528841548292009941627611049906040409588519725705605103445641519100374872126433493261117365311749596362602491301078395905077792101028096425764425680524902192897922750413639716562942626946805130028413776066458204515418870661313296624384347333936784813426139214706471413062505543847844464655502100588285153961435182289375844157071875014058280895597292175518078444841545221372966793081275463961220587610206732148954613507118230984508122923801397854664821339820191392101190314080361538965177924790626446953537069439838428963220642158331579606456681077194969365823849984439652099118621437803203232048219716899470534117107691447599510533996085874267636385271108572979777960970915711380256042768656896870572062188518637630935476538384894060017104485268763459247436987750899233757751021706457244631426387161174960259973941700537740833310982373814788711400482328531277419953430796885719975700615351269875056269234561914093040362079770237267649265973601624222812456749657010539320261919906107373970952989548996526130423776909673462271325201066945599878313762008944334926115780924196818045827864989441624435456179773486531011640244315701479595393881332374055481453168011149875649957250600476963829720862740504544121846533988466948506908951555467189867012446942285238905976012359496253452597072944027749849845201247407799711744209900322142956238008298551164238600597788188433041537213848306251788740868352003913926961413939921041603316424234941009617630826917845768038746700175534694106251160330940127796099246033718947912787862085366047809783173657944029507442102475555986988080331714051762218284835074461485772858077224859681238952694293814096535599912956492199196109752034974605855291770081653675262990311463691377318816990749078246760147176697632404015273843751237703412270505614909269192170162363189047554536181091190138884268001813613846231898132871230870769269841944646641787852037807209937110036499871963763313646313414189494924459939900792782008518421678011739417614125390967187335149062194695544024060178207468941254113746036132797106186150773434818765596522397789182631302865334268110504740374787735876476447375421721404426584990460463665578119110660826533176066219479935810394072739138008679387219832274629248420767361835962335099944806834553769035320705606171072979307209771324407246351920281462928444381392378509006136838734462348456684572062296778858368471368856403778093604243670891697038173508396614870758038100788333838194041542326131629740174613071076833057528699301165582291924191562970770044306260826938516354256243418586560901738336237521566494719587845234430437829121461101494613798902357368677603763839211698699455731509855977708199084705162681409086408910888852305142819472811418041170882353713992676558586044496943168134423960480324737077713146646853088579736292004035499764160138589625727797600220430011289609827007382602830762827936932827597805913451044792287167000586551401993829590604930883716485446490308946739821944942102643908167241654602140312845138945509429297867055013581630171715726243439381643011264617057019120656728845691111193461241753231615439548544553296622515836859716720741387632213170904574099350562405641629038805550193119514968116840787523404551783182827209858603874885941973781296821799935934746993053496151926519400921955323916607908411214337133614520067924355403679670248327039193116877667806755756033285530098039044736316172198755804914861224099841879862254849514058372093126975696822950294184174128557644950191793139437444681824009198298095406417762985841840728680862728891628292116726507171534205468614930862116521714556886235573322638839318762114861660464524319936336932127529558531768755259028841234023458395555604059882573493339679504933622990294814086559713193166844861571224874201449112131685263300074968716311086740248744619674444547017887939198982703303957125838535708618733923502827899686276228598245014940224796957763617650206903048430927392799228979813405326044538284569573252647669816406300090525571982132322587620647994230532685225382312853631466475750468093780478264986794771877276794881587550075594615513059191123487786968177570154871201702579327667679031914720234655155339042496864218047238214448105901775861682630191045111433304951718987867720531618916568567319363216970134146281280245815706548716468165551410591636603154966908057020471364750435961315826128868944660107734796061994564299217983077083102189823583440903894315891313678762733699709803217977192771630946044328588948511357095932778761243685657143857184981359925151501029606164684130063409532786262515610525655681891933811173098757951425887276240728054335701807633355843645420108254178342284321589457860013037641182358139366388865240005042174475551087509151536611439588767834923325134318788628137295036392103547621530720390693823916735038428337518576560305218895998577753511878918754114299650805487126161880559861196609978690125098648034889196764008098104922395726667587767250061323411495687609794539411379921095257974528070923668643986960364972876739121021464016206718298749063033589140861694288938230878256014758433945613593674527780461689187782266472247739208130955790757788347254659169453667344163791280294869927055451829492882596081381766189579030934595630352237509810625157404015591461603705676498171908494279752688608825661010981702001583143453752178618950129589921674845238138456927489368682158636202953706496262104281737166034568833375194008627755717731628067216739601206366504279027325162902249014214676760726167691875792136130789285421393980674996304756457813868205062889201183285215350317358199717065428357502878111015866972387691576136795421104457944315063286799100011942349563732570963548625684280354489914342040295010222936671168794365564597365665049133361643808688250538823401794096858641776936105856033838678525338075739182887400015480728570906529223578573441977508857206752104783689929196616720677027410786629271869471243891330139196728853721372275743581836856072305848974889815194265934240384558937632082391938914488819401787388900053284909696158076748354878573475558646715766032252760321202342032252767933664642003941219874208224733669712497810702721033283198225280007307133983323070217391059790180383185184259613855831933205176844970011393537843208788074485135723439982808994832596953435768463701444745334515077396016330425718907087187302198756573377996858578770701027953085323755788183467648865400047084985314882231651777312569969934959054427780369875072591270671090358473644817075169728473040322759348049338800790892071466695869232701602815219145762599808933675187610293401642697672672630203067170366873900724117558627839660912899869993953495294458566203075382114674614533342133142888249046758542757581838263752708824031875324575835753566509534220570872097854233186302417915082450836293105059364688057388507000025244183562624030370470505405517713860345205235997152436401133002096948750742353375006763929201717678251067156968957234328803178294815550261286578933653911936648380564420538405170571313391821032745846500702983553066935954949603289023527004342493497381617366550154936878902356253327878572973482380452549491095268011707779685816565061370764299162496143549400185424855235720814333345763365816964745649418234686922362199300463310703131349004736673735809778714384251877793088882670814673792607221799802570668805685454218784308882075497774442008899000580424394021974664487934212857238782879901899783151452441506877616371501519136370513055518336642073573132391128913118974292905312245975511927711583638182792545206526888193201681589681459315667295154633635403126913265218252005621413490318099230686421015609694305410328134520049835302921885197265978936502697846861350278992163514289522311350167680161709388319328887474977863149157387567454527226103856594414678097216049626465070942135050627151384815667406765751250092272098311486777001782065714837817064919662059164204272377850349177814434729801634195683264125110224009030717483893637225001851349162132528298158563605254427728416562647162619344296880395545928834021572937167170476744529032211402020526534260969348677618595308628340308087863163762776623271889108230680501374088084932988485659301347092062609626520415634614641917681902048330361650808070589679093659822410551725304616257621021758710722618164556122253511949615302839272120299042746612675224432322873441524307409583937746007176141369263385836226383181017631410531853532248447827230083824313832257575564416769723574642878250851561168295754998298376031527996588773657058117738708382341603648104345765758598457055300562276990823322064990509832332841634402481785847960070883272683793658050519101949771090676372074010364392191779890231206430742527489602905634941860489498071468119837225121894545338918626310783726406463293699142341217549220001643852181224027047408948769400827959653338048375683597618908200565920637400990281288201958572672799624789273139986968893034678320099925602130376223406778547594286817874992772297248908917807300585242206862004762700611106072102942293340995436495529720929218441753194174441974016550590134353242849028552123459977414307434537305793727464934105642859184307125030750692861560163315056480284009993677852058439536626324318170198392384683658033954642402642437064761573727496628374084282493743060041237339223691068833762378836443917864096144755839031930205803355351878771639283080694480888330651603040460252673450549442133278561957422987072832460347357222615668294690123631138064971806744483452946144330409686382308453124584152268216087186690528124455677063507604009129268044533158806269338381161106109336981708495020269754338375306194889218817146672473820367892926907933263954866768821229953695705337524263194341732902351103198490667860513452107027256153295838647650478736566888830522437888236339659217187772032115528128103257847712415879770516804132607861955498262451226802145690129014338372120814485277045142764631773929339185553982460400689018763543324648463381340575975108890196017663954714490097048260887519908745889633448133330190257251137840618908050894504311337485062794461510182077063613500263132310530407457702300080928800001034748497386940550576407704751961298687003836210338889156810605045117435382534900331379516517874482376690669427675449200940013297862597455378245934300541921042725550075560378416463775987513065051136510121912435069640840542593495015873612496815976739460357199763315269651998650549561126989680727042403242367356243132331585338689969777491941215740799193052305870447155166790836943224124199533997289778440781677610169573796413346837545533631743603564682239867382224642701270518110817093625506955266944675490444135766356678731251881451594706411503991323285678141077811499479751734622718142410764297287597204097425024555543117236601665150750032515984200327145725207259554701521813467678842733615428920340062200381707466605780395645657255759152079162795316359699421866336897351410053478116124769573345017852668759286102877822220095006947221347302941030785022886444588906709204471964352747206216222209206547139939800697638941655389841461722154566262389536309637258604019772602646023543460779219732018468751616644926302983157885996725439103734264996131555712788469342000393402926412558825505861663492165726506414428427677663522840471004283375407252519171042995588268059297169458738678759762070132317608535001154177704442245127849439340371348745343594946938742505588289416812511749985371049558829231848668632740105336891478977054340780029172061181790442498381570801114004674152003436859616222248670578643038293508685992229304403113295688299891006825066038578135477961684799497096986339140570141793892929677080339526763082769983563928629901495981541813767322114724873868437327690822929708922628949119306056646207053136384765423537019211802591770307122207717580267505762053211703611003476789645016664549830545436959694739005552845456461733670759079898709240567675376638434563443140048228374113554844159373378288587703517652824830141828548853772097502664805538510236731979483026915055963760296557162127573885523284746184195802014961571436301051592810377878843677394662569705592343067318098344523678006634648461251423358858794742831014949236231508647334573423833194092442600445910969248815810536796166408519112470352108491023498581941221674129126902950835416685974312547553567037389953424065886820554652405127636121563195777103250199417425310514200796610500199426797674399361062824771109308762483935218679783787278817331440314332637494675554915634681561570560902196107153270763953344407535228694941233451052800950068600275789886692788420374129957668964661007903847206622790518334789904529333729198730690852047839047218801739750358378261778287875182540868938176569704780042807345067932838959535266113428096364136578471604349422430085739321543237422855988955999458016108319871413685439587498021483630604776046879743939472136866524916312214496969075590037806735879726258202505220677853556618616980821206604405696856693923756274828982697745338517057966895485016858627454237851880191416290654251750461820105166763223632077855518165211425316732587254787319362909600967224728493466425282881562428357127654846796493355846340601330531303204515528615329614522813593139305816135774880645169830609212282079404879180929463238324853637266841972075720841436284938996225012549387926121709073334361694458660593719547905177110860187260889382794518193158835496195289210710866971823245473942076579696955164359609212471758515695336883188384814255749810708790667992527279464040884176752110249228031097315368709634142041496671497808102670704420634563347482053276022245593318141045757689836294676139790800988782104835235455469278298376436200648256873309725324001007928893670926906051066110333575037785535417696441166446961509377821991775618761463876959657905543192641422298377401672638199604640530343066254407293104144544848331171693609688805571271992495655650361710436451239791894727823458011715549212317487054535186343927921241773088007029161332532180058713498092750680307314535461221085497145734840225817230251079580119181064505498135445740418459110874247735026434912570147454033614083357753389409338840081418301738269229841748326391695515963749728371751355601787422595484574112067143226720023846422184065721924995033891327080578265389254845463632960756828195270582027243182688732285629403416437994791545203643985843629771554671445747344297408103091620144454152286150850430590698810318495813651802400859486107135901818019430522250891747510718717841095126429604578750468054744269322155687597022416092788650729602967137432315875082959903430558942336646507616686062526609101664377033873651980698584474482818690616022652838668011670704217565495007099703610842833416293165955888354490861308995997258858944547109516289970209354176217545205277074586201742733045801557938644480697380915521922864745113164988250897776579755278749767730345937614632522013433296550970149741365709591705645268915928251477785990797337546781266286670059570670990154032715375889287957604822697534610041372030723761946566582393334355832858099886891664681830629066710918637553710840182206637724601837419482622645837204962421926960143816874255727058306785626980297741091794179115992435690648358765620218693711758126239546192489227202969533446516877798207744425910782245044296948515973378989359368010555681336972938992264935421782544680970428870788822330404907225375508377132335559788749204045446263551279030746962745946511797185014874790106826645092291350325497223347747668674942238341061976698444290279300524634329982918900559306232090420262725572531692488527226840790929290088723329328782817783325063284626727834983587742506343118740827615875891926748591846151892512840008161446285458533681906228504111889336513256129300927544048388676154645027087760436319892992576338342956145847256878515084480032518549456418931466656785662084473415469339603913335518520868261645791326435896562043757790877079635230129553286008890240298493342317203613427782801877563446307781109781887212703104490132149610400515950269992698397827377610139707405523423368606375130940855783507302801992304642852800149276072326535730971373896064110355039537640127162155291551523861122621350349267966699766642182432161470993889789284358230062736093254276287597492658489328993113615037425318792366346905913002299147829804135014957284158051600521545738167961349933835441983293467472369695922705875804868760115641104157244457797716434059209964316209212239884019234827247191935523906154345168662586792376066334989425855704040340174909607599871942551301540291865632594384117812713766814751210066321585913215995557965747314939818393886321832877470614573788771378231046834741428559084636163318559621507762863497055683689432049278565777848757087832254400506570297931517790961880179617144269603788293218827037279899100609755036930416800337515405260662692039407993157001846562867632434353243683213074020989049535213531335407671847329690485407618875842735445072052966209296907447543222485145407039112471597202957380983034481305249452092862084303336594614656804522818334381263572491169191603594391390110153074820712822825194914111098339408365113812918173564588207889511423396887378987808486030791844602623434033667927638888746527723621645525441957164705805455265602293378939696852788960631459432947526376312881617749087553635847499640158199006167827408941196078432909142102019137559393469991570091114501590547842073777238875764122263875224261243752441856033909042880332869130369306707644030282010586623135158378412528698016499980866609591304761370534666504980434424642594639316174641500591615956718982935916970976806832385154468022535553635766048884157178770570573990243662435636846728960403250225599743646109196051386513024065179626011921157853850392162426920650940737595440858503932443046523892884607879379014344477941479254633471365080355529789039905214084122960313148799459382628460740144368447541293116197589772338712795353757248128596959681572926619669415456509006790631614329573190287526491489366113989223034655832767225068116198092801516099732500780695671424139077966326383425322452659552916653111825861616048565732778299747827724747122658307742088969243348789248960813549282945988449232260261034004183296155814761300316411386055238017169158974320380704696951694814515558892497131021496589336488792626027517236100740264872143805156847822450281115529557895641696292336654331288043810731880684448265301678426783717358602849304736019400836124579322097156778315561944980232523538904068317233500607157000563378475338136884743807053555651103048571491709502450181864421954995411160772317645096247814176768366605167413900020438452727621837124033487475459235409512379511465251755046734151228456018384050157037837968687640212916593889511510324962667004636689431049111915320258863906273389522139975858788446016627088854561195446162187969714712502709080031356460590338709758516957272364449242141150966457497901089561792020589342979839038213093109327730868944476762831651041579201418342598587011194187685177787336969746000953326544479511169118802870580754057548241007679475063659105593073921282588468728694153485684044411110490505784780386707199483891304750646735206891507874060352205535558641060009253202197889792978914009754456195675858476917141845518218145595827087015251726743067177600616297208880517324317580013464557577789880316553399033119775720855175892440612480187487876679795328840035945986494306805046686367197748780230624744806924562209454841507524040337655431347224346882662147399702484219810647196940643159112775027793240550308510057678046989401245762376188277735173318921055994996224624633887162028027914483491168132448071579343347102432553538265665157298969241442405502912030457824539049693503081153489678035861793531593011428003391660629199824090011930696901366854384704100187371299632636682981632203535439393372336773353052665801344966434359268096645762655348016400590228623642298489286638125472634333244539686366688661760144708224851515783087573175730517523014797261509042813746606953061073133063517975303359252811923662266318248145119879276060018240925289682746187766972843691345781858611540007035006727750100620059930662081188810043613278144360866251978385686045816178557565757768051617709255788074641386233446252922436401689591187312473349503796489601006515654250985680247765473404455263004245429086631929468233804725701256823177871759910752153528968541263573780942963112336552816108525384788585689607949570035232817132726837961065274176682516852682551318225124717082733237666715477863281004989612219414943404480901774052369282320061484300817432217386907220081266768340681619814917745022138239923543864996995669311034486874479261124563704897823330049977712447589600943284818791529987729916013699918509566643608826117646486896660871944907463970828020694899850088137257410906891164343672822096151475084511191009699594903919228164707558551100388763652416868086837553245737456241308276352948817826781373886164651236163174643651148493665653467182878014418834937246502926241040389380858993926292946939411397696740452680180107168734340334885310642150915297047146599695480167535510374965224821536885964529157648483774999199585421566117897106529618255105130498481693471495198191108438501499057677000071838028486658456643527755294391949329795719622370354218732771087365195249195028796949822412938227499055713324010648892436079757261089158078814601460200544246871529390664864518414273539393778016806841725724683772268255888214896030115724766137805753219295032829605884777214728274374811758015209989256913839375216569081983473818085898627174344050033100966767370945933520716899976924608088810809679890123943294147394676264055173250457006152568066735262844355833718222954571880118674826001118355010150101330211277795457646649857871701348175392994987516999858252998911084724879221135439401475643191417231814580526727253321477617142351645757111570318371969316744821843506234848033084779449686676029407552859547571164380523277649868619400406567457356198683860444810022931232164772793287218691306414350756823257002705038223784209248321391551869916573929639550976883673180659510649302035675763939076319305606070918352682721942766271727874169325844539045109147864175282881005592206299972443096277165616990659708882481374913844627390240149656290729570835345247404890196171842139174268493454065823476012210641589383208239615011449403360987568151996497439221820244301692047321990166630665288413276972022507236883922235354837415678269615044194573043163623924095020460876875357902367090095332337491124394189663146025317305133464213214869403389985509967435905852964691566641827507239552210908342694920513056760522858569642138340757419296032673071980694974773481761821194380254498558497977681661107405958225188170348059966946525044960970670281591683764460764147156105957693806570626307350265500868987902956098792739132371567747545348203159161307421608688330192725250485096698017119396019074750742645831817525301951457821097250193745734469079610825076673501354875996316867199105842255477206180335797242947002956833091362716340869371497672551511942126638939145945184140180836388163475368517976064569878285950663653203799109158700323404229369097501906338318489537151293289751670403196057407134475440642574273998472863657884480064465072176673349091913569850656869480572495938507468291379364878453786112367754156731985396374245016123829950188915130057350038684623099986766803323785176981357065368009624227742065924317079418175234430695849371643810114741193380000056951233080061456883143002613581542548976941684201901717227964919772895153181671217762382061034661249223744964726031983884791595898531176685032509067179341212241090606023904199517162293164869927567783998927297586704375526541890827793727086704452058380565728035726293565987797446951988284915632134638256580976159117497907868419004185084262600041301274677505246330768243767540577644961905453986312944311506412942066493005483586319911058262385087099385027087804617164340481836564996292610613818983714566747977643398690107336149091633706661175741680154206378020177788741017367778760917348012720704904889155766309975389028652986527012985985831462444418906256680871264822695321863910386717586602628703927284860859298072569466421268420915492399510475307212430451864097531010179635690659726996463350710986883964460284472111993219727239132795436480328118142213449426137005165808686592686159676857436094561750036335715973801366638865191658507672290460914258695584662173794912896131467683935277707276513532643732411007851140752461439946148065333713040252652862661836135767296218105742165846501560940019469477311905977754390714665300078273634558727718403875177807457851294818604915481387690948418053324608487200621049502499112908517583395800594336336592676724800439765608649245598441088496847699011572691964947116665782979300289895854445463889061664305985407911849306360419440034617218901876286100163557295804985831917181215882648967348128715187359908773427920957715381196191569755028833384624600858958543015258565666729578359937444384655245893268778486049507262576892531513115179595402514160811922353537827106505651521043144853017403698718603160844031689426587413778270934931366225819244595442152780781880114305391898894053879933346995107837151057550386937564542344380543152270669665629737725846178656028988328968791164163707610874504276734210253284195075189658459395825984383112925601049561150327382937772656526914226317530549815384053404551009626895799135339308787525382744963321409324760542257627723985995493180966709091062954132795140385571988410523765917007456643594070225010995057717107754702959366087322053260773501061229334862098792022243966712924098855577275730889424899529607554380371998434031181631393493578721483744455852865957076363939662062217341624670356237784691340299804794194692379815956319651466126134567249251183735929533458824497444620950295046854169476642948120561833624307246845947143929432308880420352805862841155315624393289630165158647043640155409873080900534832224364323415613280056408163173637625978515841806944721220753011760462814456299823960149406708771310598771506792980994365847688052484509983430097126865073231159177310463854796101416244790490491948935717490277217480378324324519242411226139738317781461473176211655279402451989796162128981780812707915829347885513929037358036684740220976008852000874272782074457050103784710652069779521072899585597962879433156368039781417998032488576414552076729439235304928648427716856850705505681380402942683534855810571753805038124305713552938805089470978589427534571854732753081838029831833188564961175681743108625305392268183533820443610967559990409712829895400532657698406241035309842192580924108888084414541639640367816316945442481113999409243889211153568426186504053068581835797339818256330475075720423202040509465687828082051598886031081674150338774916899977825914141755596823143480368527418412484599419859884278350571307960339295280757205297299933963133952648127946695874638594144885757417708710826730918856398183783682173963798357169152815821687216869091818577468518061976079442204600628162683750195272037773359024482086954066567210434878673941409025754590549269603046646139211134875862264565148589703045195558717562569956134084889650148240478588939750309663757056531894722309886708057361152303325713478542605327576059773736363871052737450024598398786016639954436597664305117155006991616955453360131418339405336172459071188516499153596484825240621819582085398069487360370576623422759649278650600911190870917937706841958213203259590729325152086752043218633107528657892273610113885339823212837264671566772761779985146789215329029086544004551929228877124085340602573378390035548898741905782777029914672250654588155152254409987033951095311414913798377057084592397331604064240050334000869647169892601601653518424887263884342194892460074929516744158892117795058202426985116377167071791217817660617810297318170088100460604264856427730893329411917564416883142549657543353761295009309477228521049836971629364759395785497391010765363599793763674178505874491314551581230319239786195135599509504517939599365054369986141197410434649011354668915703977549078837068910690930004746666913962460532757544908129764242862608650087259884860849653837375635169387077159839940249560339712452175903296998681933906018618938654565897673601545615399933922097386405916458020443722281421766949602813421226567431263765490144977630344078710814982596814002475738132529020471177038461103829105935833043516762947676705828451296710705664345143750713218809866622106122147269523410398113629914355141476977238584767802005377415544621792179683510777908142466401372291956056711724678287896602337426549586442643377953075835752580708926399765448310151869522062685803478284647899181157295149388501322053023412032284135311242492668966015271479273210121213678930367983046815964449823015880669341588239455432411358661322587598517141817117698830757329218807947725613904972441308444619054080883178760818673395412439285801024866365126123516950023097553832207263478741602537728837594823180377608831224582313340725467400765981722675019650272888203053136065724522460062301829600293273031954618440324511762027082822965105357456854126481800290991936684994445364079167126198544615390023409077636606866765555834131941894034774671383352609152357026915066856975695459376208154759418171120432130787318273887012713000515897141729888079247804738941777036982421178621124146133315045222624175154967776646015910512099320301309420385000098191982178235486668917664765424425209071406481069134197198798634954327953290945359267739631188062460840677702545703728367217940192240237806926816349730396149486106595526682860965393541255842104166264850031841347164443928325787372040805929374531239934909952438717167250196742099802316578623658479040531863844357741127433823900117290044673131100747226006101627702541685224648941991491283016168885628859197924961526743553145357899092185805522843548516595205414001986672310557650801190373005678672841280240660323616169300000369918587441834166503795980274362533403937830014101411718228511537623315766895433356145549923933052222775673363641604794291680751912092463504658930469367570449286670962801298528042620463068337886377593474103048124020228707023012025293823631154702960611516278851380625518922422481148660626998020611788228228145412977433294229895131744131421323452057222873380282459724865668705479629724724636202620514005546454607287792870965776596950223565123650530168585198328597478528677424575973510262374484021190228040485773259176269218403880253705742027444603936209420585734310245442362432492163769106058404390641951051614537231470539499358140710150049234870235254704550606392137361424223513845579064911185403117721794432665035222727225709620593127055407383161569153198653253211465471505504746866332680572729314176134449336722485914877055671974999943479805608811022515042949590115338237328563669760139920926973093892324408183713371234633867761288603340747060549738408287749306422294807565898030504402844466761206920450920876787329137780255636769740652006844066643129027565967638796022297516449249703799249954815199617760831172536634552142205017441809860294188506999989213405285428244878789935227304594480928873090368629816083716500193601344891677229478337099776259024619458619495100537343952584412731600805892368901300009421384282140668331360344581660858285499896857701037907779611620234527980994202739032924694288977952375408623949269742238403063444181854266505437196396615547547401158682747732073988863103212303331806219020193485328721839920131433822735272356535757112716564500689985205729580597522951195057919336362366581419541077281353399360078469407801610877278362318538672973335150878721570278508736556552445941083177454839234876107865332121957359790934453303289636001710454979656775494461139204863079158123733099519731719864273331346653527349962045675903343225538468209428204224017925408972949915942066297800552405993825991207045409780898160318892906635008377349765783090714375446535069419566267921225925075518771518241728810371847298447948623642327279132674319746560293957473632567352004840788263640106929329074971490420362726113254223122040873472730507255013252476359599143105984848162204444808462241488613399788824148857885842989135419780285204855487873474852417147597191074051408751686363714195123106350349923040964762011044374689862264233182155882060867244596572801706958707836830625507508304926702145726993607597302930736576703571607240700714552902597509669667686069380681215739400135698329323455871952960616607605747135076760190583492319318297525465639685057715843210910125583864141005431490828508007010142218065268280278527392484291570834326903495986567791702796771900535068805015484794255633197539003124091683873829773618665191915888932219020021658023370914810813749527616602940147103527976170920894319805247860858931078503645561484854188576398206493666474821154475013561389565978706582162780702818720102924795017749783440031535943506522656476078797213874668060565733952985147422976849922853143310786544149737313308088925620884450799279309885717055697302546510273503110549786694512486524760315388380205444287789513340286060385348475897768676034358748839436286663733901731598860687060790090363376211451304902900395410924759191816277394851656817564791824835257327495040519285216613847539768816317761419982305796611474317160869154169128735031338115700869449560766040325318650037876230724987195632281466463176633275709207467844929898315870995237465833230619446874605646975518290070362620814774567703944658337615453967944906900275115667811412718130791527310497335301957524517907247839077522399939741789394091520097611994778667787503428250723966272496175999770356385811444208945500602370820645798391604627349863001536052741687887424569132191006686669408246671108011589352785277204645855131765050414350456596305846022332694837748746139306273688124756773414012616495882068916641124732051286073500733188943667933132479352355833070432113644900599560569491782542097919842625197733197699333786648747887707713450064828839216229570583499903504442567351799788278539183100401903056324018718306831732107326167116191311592582955572264465673225925648077687935922256854694436504069503210136108023613498273571355828250008254995801049531149681912044237935179560131985024585033627368715988057851008687948876389966072474646405114661816053455127385233690891652580698032514221777896186876082974115683993659384674220524533170245674318138909376546017830902209761771715332859213905053814515670742466725081190941088623853960259255873068437037196411961383867921189012097444161733496019028125272685200155505583103988043755483064056082271872961407634442232130650624781060014729712146854509276601789903629333768714246150314358866545214469197295751504589092486664278818042599330142553228497126704912330558010529308522830747064174903315003901029519792311737732988489740497837410361360006305825961000057747939883702797841532203408026076417304645668938309413111591860739404412640998601701771335226892525383815836325820016619064582798100661835004916049656817787360427585391047854214440829685691025874879466238889386564152071107247760794065308670425467583029488596001109184225535462314372310772282727215300018028384214880515792610784123920776330381990394840909113778083400987662574450865973072603260339694230751255074997794557175839167037783979746131138896847430306888031292263692036390058255687027159678534568990541315084245082509308310714854200346274168416410943454468601678205645550825887293971279043849166368924631450471983067314578218180405720900526080119520213389371374746435064667481615255186755511640683782933938074787830605404529847686303518281728897096250819648219743363185074764530299109395909274469902515386462265858066567922504693284592596127515895773050124480749181880588060085449711820222768229365096419886121169606167980191939906231300735442654105653055431456477068709020064850610204714167363918969470719999323033271481880434124005062013215246156528432349699980620166660958419661861706097706192178345045123035127540911863921086389407599425785591570408500276240170016835343238965412820759408522520557419685053208530508683589668117437007214869015049100416888166351025883449764633506953247493901681126300333680524203183733277454738145179366281070855268805031219951883555845667009380452198241768929930041718873960662318343336190139505615644609213788571001789274086198311972010706183171627825764559520913595647240587060893947779071588518788113348858221315040757766437719075398817301146507268194714688984490842965005978938251631939233679543400881602005948122684888750031297428225041426040062979719387649361048635604036876430922108808940883796061849432663794090903711048632337119848420675869210182667472567689668788598710846878121820054829759947131645215332477679985943531498264903200761592675366727819243826217351315413779816631580140680827128446630253004323426589371443829794421176943288400409986272750835525287602287065273335234195838445191745432871168246791233852786577853491508113986094039083475718565859851788193204040240833839994121445160379766425267048082468153183396523517880454077155849627920763230486024944014242611910796227790077452951338231263041479722006886695716862279402882992367915183052553117238747702776961265137503047191687721974054294915547759161068249879332819676044251146924541865826240255399602449136877843368007322570220079864376794936823250437069259136046307632033744696335167440869654748354705626113217729454564185501031110136197943101706984078436110204170340701047628725037856636437972106623509679250562579867679442611075135770946720458868992152022059030615208092278683095852939185523670344557527052896667460084289468858930243980893574270605171744986378840443633257314532542824333747772792106841833809678813067846085298590363269513931630895367088512567447466749265704280802626722193203065360329344130533084826255294848975065489268180625007313845659058192650658915533497337421764120473992877308754382737780848559526950504491706638247097940888885391874109887980742389550312010063295294881219283152641547285690943172978735390343461611758749283803535573459402872816656880102130335347424022115190557295933981177090788413849976588526828832938113430466594379623553091956815998885722233009650365973168149075551760428285885392873997024153989913497687677004317377491308901419553834869391549825421407239740226374009422851572013024812649058725447896737356476636446866690111155248823293879682257353910578104902077833701140842126675216843311348500539499616599833708593748588242931188603530480764359228498738714933428167672508632119225822650608310586050071275800177154208962710939124878400109647896523574338443438837380466255434568457863697823702069039471613297052439597341722828714102775471349751470543289879034761815127484933452539227009537046697344356092786379269210415769653575183054447652795809751125982385634037827099429101302412513027722330595227813672356733208941397202155833184616877755719824321949027914414756187329263008549622996687076145442038771192195940274597042073017863182619126213967061214341434942832341685058186430418587946334878125166117611781336349505613802372393231745670850819333470055751740539619833112887634134125847454601218989151330965651970794202075217017058718666551934978770389255482410215447033551029239203285144926945476539643974376800922711898692129476333151811109549135448113313302508841855785044309829944357007950459336275756501258518241652037844623891511068642296569080959322156264144759219545687531461340493188673293170289845711086777583014279244277682425276730183074566729554746732997126603635575222445146140273606631975500841407801045499097908197877094781969537644993037161079327293662673305683525610693399721406337923916741065661413513589873184547216468245481765647044066959797231465194184163042339767620200314020423839560634092210609344570464890041909804052769440389623932764382291908750094716558441176440334056988604248071058338093949307132419048970118795192123118814538330268217388143274520987102539581016847440363922462183726310189459366851590246022843513695258166735723531146867763123475287714802868844248686738654874008263906647761951230356536614214948647196861385500136624952560869473173120422083308444745937629547857356932066945070375857525433471867779724862153250983587028182313280681847067934063126264450083092068124105603717089520619102109825206525463971523421542855875365924258589321296457953548494929275189176347789909482981567076010823271994690351365184469319343812594381178437501031579767857094169445939388161292211647631937799636292634704572132133998508036180320253768816176965156860856812747766749592719136376447495558077375430087989284294273637612939780166977666152855170563726213795029883008087227570901379194656039933227928123412119401682051273792881518282821857199987368303512131558692902428280482958547449640264334824820547903797131227731932452074189158000830220744798200246737931042228691115773620487158720378995205568495378235386879932979810650680787494542028113453247228645772936451007973944113475904206810147821323616952378152435720965480747960997124810407643261732891421355403908121636860779845596331794392005340665318041702502603537018131765625172287698564234745920203375696618307884614328590459154484524978193019011929677690035086873285001921327675444339579496151595273557150820876772591446664676835305196001210376477188526659202390183140983979306131230495153452334321267050478643792625711832019926973019907434767705335629132040232976664377475632553826108131314836059790886984380694584838775388499613508625026383684267783685846286286799895675356100460782222902882479265556401608732571573831047748509917617065441079100462976504615319725948234474375114276632000777251493945064460730825516998627620203560740103224968535067650749049510752896511023037120264425669736248567546314108384396638580444115918869028921623316488757655911545741567728154161195363885576221279450776402791437679220089007492644154222933750956118605880471837395438746589274202450811011096148845476326093346985850905846115922131625448601601383527814844653973365239490141743990944403806989717240363889017128699384954289663796007231458008650627572208001476835417241281928306946676645277073366731295823319220523723490275177640717565205792876271952478007273568878074549741316349914630555642984465410630011421923533293112119806619570259556330720712450148550536666832890330766085040160867325575897832218225305547450483386574869495633267855940413570794575766045522512873784525210867812702900457719130302076310464122144509493761399892538845494256905245604725764564864041038362690774530477128716596573600077704756422619384332791777252207448203912098014899327051133317044310818649611639686062509088278018574793260509938790455571832712468293608976042434117699513755443418537408927708923821392125520084030896194836686117419235284269272873321501390687795764898762516838370296369802960785336863054547845991830280252701551683596383565834432940341222298328993048670040256044420476634218715963236925393547941682181512844484295227370448108999155677611383266800424027565522026082584406858016091877787754834326840319221894417937540999154360176889247791539352024935924873375362933038860156355374618437757087841048200930290085983637830853099672185701861265087421406477662168233216473430959771449563925642998521288111688987401358186405749166984043177217436705753412105050008834897679510458612467429324237138407052299068380158703318920295587468176725260770634817592476242535747469680532216190398930300185988088356647993890280010039386934781539968209552159661329395890558892677723925710815469586244982003635048650916107348309877039206093127491306321243586191623681251586725054930510916867239030240250585120356843245190756613655491378049802204281836604263793152767702044098843681628112282486488780796442236049941966460871057490057152634290274004302519892206984585078931211408077593847666339421839227347590330911048864470450557078269617104934288942234224792680070402770100265864479406102765216056248433447875162007108613615750901971068730742130021551078278300911273645090244816087121912899656661072935743807006586000647100804916625164117327409038314399217518366413008320695087750900961069799217549002639019081551853724516128771234957849054763823124363384618575256296441051505310433677282336425300592430965733371063552330452486213759078900685553578602573318765803584678299757690914398411907487486883662457231996925094171277340538345556250277427385609134604551097732683673096839156802957820221385364640980854577549060146156071316812214028415254007553552334177656087391652221677321129224629153957973088900802361118200196586070943136664887910021896405338533012384897234980784353340548070090594781897874123580893891578792892564773563722023929233169370542914903688962240183387581263507134188285703913834245980142544014356999348656492846655383831004645259009664006242834584098321566132352721532113872002113158313813108126675261490952086813568593271109537364936382056821645936225780859455381529431495249284209090929538321369006816974167592670044545712466730347312631821662767505729381959546120471034793528152133435749012081272414166908335527722726822492819653837402901474543127486381946609346074931220739536873702311125441089922069757509189256660529263492634747292999283146539802358281733206938603733923573473381087017670324316625325529330522848611074618937856972298551873102174354992237800419183291290225785226809993249606370080717641749610168150982403722378596927755482643326867271404320564127337576621450535293004146134476685893751694724946030029349170825809456933576254195637878631788223562050953755282702121759158135262835016992327865306495093202911621126083702096877319049555474056420786577037967184851278225181145182957196364400293796446398365920052026422613818121179490597875867479436898244536227106878440014173768606441003097906555335184984963047476195972536650214238513035845570269901834205927601120762659079542590053929713118214172319483197647811072836468726129112609494548845814248806427804991213664299725324181847026422807561969248633880120566283173088601071998357512585560337906489073848188703451464698218838530175581398470008499381204723022573925530861029481638847727148264215830067355897304473020043958663384429180791611700915157099363375462679770971535231059535020470762740682540806728631714525786214706249842889694013671734127703045999801907062606195830435066732256881123577803982278119777723891867129514646252492384381661032244112330669223851544463617209485155127904139401289012430045485172250916834535678932045298203085612451769076214798106555462224960455610153823698022552228973163334467658433700823590671531476665375553712479017825347036953185951669656367304598115869559592093447030514876884674918694982576890404634710430413303868910797733811561230994549240172418607932203047169493534087314780605698031180351794067319436624750626508548914893035277111610275918459517366163555410759160782401005154139059578857004897087488728150965676419287018366191057878355702581633592136435193349414721974989634944153490638208545487014736078395135491381678688394852527043421700938240910404615949165818512365950878904409321895913991564692192796028452925845307541944783304448972982958879085735503786069673075280372596496432733694110783549073028580631865708670880648194411547336256825452596366378939089489941780280792090241888070234938774603945879948053393564837021147361578317287148960061776696219623230441269149991018234305802590649184919247589895107564444311017485673660895825656838079728012425574802092123821060066479499626601420196952758942384429097855099340286662678573974940427147475643122276804060591674743702362867752759677834443773558551116004459226115943334175399027145795935440353853701283013071893694163887555732671556020367756009282276681965878190396463410659794733297731208929036091333545587867064208950781071387400819196015451470898766843964285176791677965855419493679859156881163319065747095454385378116573912626725542717104242631560056844483655486219158666400513237005955775113762401921676015708547365853942090660678091353246126763086622973746779583308995470224060038208908346116547060065693427735758731936406647411116858810358149642561049564136371455701097434690096615911960236008958687910560912210882923023152165632082691706285487683744896926986457125460341108967317920784381007362263288135246436418467115322769923919902672137299364680408462688224376367250250746944442888299168310021998077602275765331246423118079658168030396278352091293377600580828400985654263790657815238748590144861957841464797763474843209634888306320949252804530549020335292793641451927173897749570998554371272800639241189369965256867795699294682816736603151573296092558039063027026820463924026893105761890944681211748812006677529480604344374747010594455534497204993145126794369682363715029327043856950248390087485264513172593063261994781928180268906590129621827822820235393951408181828171199935815566342416619238457345762769621529684335363291396616289037324082264711241296993778975078528010623462589911989572854032914520250799324094152538918742795470405485123074367159099621559893940290505301542870776580833496424588545953414335950336715700874940910451205654274661198911341184607122085277826705742781040913185595364898893879532664509489196504324925370958117057756693318605284285743780031593292647383778248467689749376128415517169782935018041297119245946552545940761862708518363210403120680311104844995854228366424895293004063510015933511040173008995982077683981847271677020979425644215510587334152496294741960042258935859337950656260966957005730948114596931851923580486979720146377104840332524728582231867940742469916920867438836157120635253145450585863955632562710243859375370819896572767653856436700513398122676500866277622133001896242981368260255391344588476362747257673605148664659325261441005443110578119108023932295092045153980828952666249368635866573392979409387857529877567699724111384665226855544941434804754463783078561861903127026214301247163337647005213296853841917655810258696613380197863596021646448678896210281222071957438258803028541435915054105697160684048793006766450017096130120246906763477919447593122829548408617205954174410369749095889325335607904656827514543106985821947814690790157896309649180831790607442679195116940534257356370190949310061036066204961215172913827014540751748293312362898479189008729243754847202921542417602435540181766549471629486371578323540820688443052840160205557542194541228206722946943262742950894619412521205506592339824978587210636336192642524030776845193995077515525082434314121435929439659747692391237048735785085955218059732841850417056021858434244431404783804267755461218626590817192705292772962040561486607987135407056322486943299736360326281066765582118888192282121549539240714337886072196464629175354103238879630916204947826787515437006209947396397165086679384474812062794089929048989702149180879038962170275790438722350609778841771641518294456912554102906824381614377209115639290191047030284178320972379116431679881401690648276383075048140879664158741336019001878532701779158868864171151736520718820330584288223142356712165079083164839132953187169013968620789516989669858345950607100516777124801633996661309698665354614387326950704938528103819366178180563282235038355310928887480538099266444127033799950971271804123372842743906812427782844312971358420332839735807661552219526840084597159728138298033884380275352524351716310028409325325900470075623244433117632287074772793597796157259242216795077225414500599502605011286356076446417165258595417832174008052113920927371813856249248324107814930847317996916755155487581720417912624877416164934368074343622769418714520640434581085273667969915007446419425216084658916742883117323685364177269830011797513990129757044097367360591314981608681231692743657804836668391730752043589246511015487249322967919230145897259063968197177615703936384821757835970726389828941147639762032550228716988353790058417049933012606859304004357070936262565305517302415175406076816419718832321696782100259467681614586274061754764507395088274070891132308060040019842254353111469371039734805330940862651971152466231205954168277010104242070683481059154120107448981689107088075976776794556206884822640140103646300848197505149453534988718245038180721944571792871764926069954216174495183162673603467347394804851216009844892662724362225970638402634976236614923191532202449921828818520912128610992568228590445474368047484748801850005781598801213325145214370741026226118770511631103020372459949247019672131638530294668506121563544858550955128664844306045976333781434284723175291641619997141837287765272485487045740169746049172221432773365762342264803284061191299769136917054660988548944584223884202825363104275268444890722895996468459691182424441642334470910219744366582087148231496691504298634731325490565899283166015035869694132691742084142264427746128334482335369696875628232772647363347398242698301851820797335553234336330484757983568191987756499517596823999345894020285024282849693434876064947501389707417399545622011803765550821892582536513675390745733940613745529957780239548348677135229777549290140475729084457609547412503767105374623539523791789497231110653434567116774420681399185451811513230479398624697348534074910545323759191295581902595498515257329429792001299651588493264156754465431871330040942506342035853676603935828086495693762194804890467141008027056266443653397799309751314710325918283848928961921695374477096971915091756647299583873713043498155391331091913334661797691873171088143138024830105127083700855904958852001812709069680535096956194977427200983873913362467845289210341498256422145454303508753575465451573545084578128501717915174211489077396973078237480672426112765754119514298694780319842539841841257210577376850821048110282617808950880683979394116656188082727495018345937553322937818784942157200334696642462616100935945049904174930558773603245222172661018487039429791758062248100810234497607909711162040433982234777743000882252161725100407860199464299178851518230630215033665432998558710637865828136717145698990372115348849863870357698977982104504641824157169874067313153111098957799329384910148391021152765149626556102182621743363298751485082157843438966646560725516446349138803663235510219330611571861177433334644607586841176095445578034951210598889287007447444745766632078891023172158508449451815670327610687653453073021660422961903091035612423257921860082809382302609482522558410319784404247733384319972343818560937405212073785028865614314733258040844800468240199574221068316253510562948738869723183203317304417971107113092282066182428277624140890027905791202207386141933772293549353411812231333398958858549754035024658430568685002859092854634134721890612715029765424841588772182785592737424067612607570270839607655425420385098361642739602823999873447726939709946018684642807947935790079719640159339066159124598378426626093085350313902373949883606072500570286248067052392461945059827946488630889083338849260950568817152171526608809468196963635478018000652732962787942231194274281902624554194418795994975748031042820839096650882329950750456372255940086898447842056999765288907675162817261386151209273938807254857476884776592029227337559463054471580728623585162627823410426768152935586082091441247450449626040022676633442791841862227262434074101084736042502827940758913104683074531167771129211764372496026140096151007246133529347368147612641966505024378697458979428200846063915226903627381289211904121312095252691070465488976281751329717591655293605559681274629091631318272363596245336481210965777947509797441961856444040428615583383348005718672336723158555610595929878625712502163835071103983424918303075096884017801881252004193760359319658212213634249470404313156544967267945844976427128247427607275163121877469862997098340528343505825816852458677064531145789650193978080285828919834400375274360045688843523535237189936655978235648527823799842625139374021212054590050073633796266686003821913726252696463954464267610877414598700164013927932515454070633212600467240763243483429472709609322286753394562360129660473609494967739311800012002620776970124773340391499608031895561513605170689355828071012008129483351215199203435454940018894078765653147490801595376157432497203667287602481994362289061986707337951407376904239838070399542971134294513915629677351882925773305615564643022236751432655579669496109069579726178971030284091470710931034848303844616852011621456444916343894705595765828724245762988616003419143081596425949434031998919251759192164753677347974056888062680017947019736934157407105405205912771358714579882752802741957087132328465162221931060996820997011246846610794294452034495953092185643795797880514883990501699948099154027700886276333327852861815630226656180252898648563502907199535337395972199930745406035507091698903733313434327861768247167395506095855484104335099279979866946923593788320392198790642853624905925636115604518080750906228480121868776555951536447675564166611548119713756418088781004873652137163997765681565138612174710932559622385470550406338689527869713731128333613757524593044323160909529169985473790413133223389377926318707512323457733976170616453565960089803288936617504108627864790447008920481341777305969406648802186633396375364431854310378201060544638774914144184067376056559455859710144011164853524423817637751166581062977370806920421432969920040749996502549505128969852932361732343436253805926624154083777411564434558302193436679802528685369754619818018388273900462188479845995525552632890270663857690565904734575969226905924701737182119084797338537155864621105045388865452425747311772710891341239505017558488657033407734162180541429512268267789137353463962610385707818007488526858445885395663234591947365293495882981706726871557664512482670156656742494080812464255725490841135948760713589595864744783425759086260108197751791891247256647309246790263086659730016439436254202223059431528526358439905378252765151820186662722607347354036310577001945726598485783412293002620184165787072335437472280131118330928208543972535015040915857066134379469113985384531606087691092175461555875739372108208354689084652424732356103508212746205300835550190805317764635590906403612838797431212618360823158412874584243865497525677328014060948693671893558934251122429089715656627974975329694165047622928989539728907733635315002500978379059651755593840229732122156229704555771769282793101952718488185904501068724479565558332640589343284721152570252653240337278391455148547957555491929864904770957308403206876422162700525352535182829987417693597997681758897494102157659785538997816212785046641245969845220415878893116339805264010509450910547803061648976523512399277884371938247296029821655632639202990102743730431141573713000893522303753609476506530697467366831393195746966145708570227758284334554517420384005136674835026752029796775354973460360384981941925180664343457800243545371030331086472274995135394005114427669913366063010182712952979387647916846527033339295948830634189958025434924902862067940593284655077190271912025031359871115589262988571567385112477948474826419760011505076944891092517548071157390485814448972307574593278361480460043196263533835367134876476131041313849143389358971736095105594179894522633860828486742008903493553825640085031845430078990620130791727629368240670569859507083019367770420362839285064108504075918128815820167635509971296655751375419106644325459615842254993598035314601085317905247385000825486123799867015372294696703792769802773999547388296494358402720678561118435351784661483485194296415696155766899286293259224537863024813343531167839007004705288120172699478310071475335838606126598767017427184355106461127239302307852675857366246954954223456591676413531062384938407799555141651970769284420575451589879034966244945597655624667025562825459414619466070895259539053104520088311603584657253404617602857506061953815924428605559674664569236749805670160713770319269996022160198941345260340613634136396570315676153194929973039508342700582998678318375207499579335858635914977360638822999355253783810690938763754920858944963719195624112432651997925782516805390614062038909981382749372349444314011902605145484119276392640665697819352655852166991032118300452425982762012428508017138871502530004428969752512177251803627864309137370901408546940740683221455516249615485349457977669911437859485487383951945781597295047368665787898699139870937031156183052608079557315836642362416079348134634331823087769813218260687752318620723171437717122507019309031207667781261752890891443380832815797654664904878215718350855260775777937279698556782784381095074440334548872337518956377381906870962630698991498165904160541589820726176186149785794776648265986492278310371988855611136361137559802366041373057247928088193750504398506962226283169334491445088899257205569442735559405301454462078144702708358754429596837875731207781314673704746189014362867992540388384154258704107007916662282002955865694923434315434496414131995966663695331191470931917419879331671188190332480279707670280257853832506014650952884697115850463100575889169279102521862470013483196274222335574687411649506732277656907034475572779015906256009439519343032201649141075249555334289323297467784670587307213416141985409035478074761837531667155306062143122170004574075000617018493461739765316102982152303291210172949822777400601198319232025980737926504234461400271377161709171478542038480414180191077010556841291296021025417771227878863425176022452520715113770409175554405606202827954152556088729256460828877186636703807245993956132082802758533880870655278325998805064476872727171734795008311057457277645335866205613030029171771049800572335840146156288953997878663094176069687340442351247549387941420607861909794317009084195294753174199767131929882078035473804603166292381972082336429558000770392635851926265832601127734780095233623996344364291146419811289338783466950041070193654164936094621456167438180698537371210535687508430993486975989098831238871286925767959320738004751056304744034129959407862185055358386542599210284430341384230951745915059695978996102808227666530075713063919900568653039685411372802955870276528186341964182882257656825279440210103970802005480113438795599020159464800155510844546860729718909049968923104054128201097845491773893980921679111654368277558623142580299576936402344645992446060171226823471803768729660838202423687340592229634581344408982833210101581340379777609810417362566205935045458340729831495950754866430869122143908035205958179991663058304407497303122303152845104361300072008129939811104788436961109599733785723361372865796625487421032286709687448234233529689854732488036118106685982074503893425655691560283026719144349823234109014204165190874056885487559204455965040645054201631427869944872657122379320291895187558018073777478656052236306597158400882750810417317932394989405340713631284465177610412329306342728360804283732043853323645062905039798127775602416648005479494531414115807654443045815122997482866209428168575825941400568868235473267743851857366836646805401678379677499498600627204338036785876799522541607629586907637287730951279252545273680685139864310947212181040452521581872694836737521739591794281459853221137295221006651734333887414699679512504819883657298733531278976178026277875046590398205322470749268226221231179396354065660561330535900808181964405719253713676376022933474259367801077660905077606375346054983746557107039818224327889543225527458723788888932963237928279640028106591305774384829785179244999756925845224796591416545333508822940514025844902181292618633637726481930765390291039886122512991764841217390243761825028396641530767609201593347075475602930474319437526781736065712472680191233032525353243086040674974160450228022464750276219420615092185213565244264302604693549084426330776116931469105093163940931511016992627235517781614734542692598352719930909407948128352039644049487448136838276079475914515284088072868439374255171026632440565424304534006142709447168397854534503148322500115562722251981653936441785178689597434195493879568294418413708626369002128055829356623203220886984577023546336406312556724986429712922257793731977633070139915829063883907434245367362825244927508348989007403688394175993676304318399337414471574160025678748751044658151408171857420513671367009049876199056138994300409319290548215303002776693088888264018477619050450632469602343986673779495511177243678773534268871279668179942260602586686748746522012322399726914698801695958220391714741864840992932474774228764984682109037395527829416903930734693658957275671430187979638268434205413709437158982614025761309587309171959535993691872515092016599142641371511768939780402082956365182076840767538880235728608026099717483582569032179493280634403721536901190463683915007294935228143079837799122712335091309631063507601517191454217785896639501183028573916901991022270652860017851180523481903859700497483316640616747677135244589971412462938199030097679271798250843504339706274200052855213847962167107852965213859563948548684178759450418725193920297561890908668254700082375764219212551476603948932224786337479877692808060701184686660990878362102495062753968520363000460430343138547897498475411434425519439076115062524212930441315107532579610774647022093874096198096408594267684908359175722499472425454278242707284439244207739692422010228880308666933331440322449717954789580854909457874486886467681579452742769453444758110708826128702764111630073486325692907206006107492672108593254251659231467282631443640542159590614547746705420218463510636344000330222034171432952634741175679060230499823383507115682746325061421237441934292661776759185263823297322717632393553489287108050874980632655649117726267582704580554328599124988499150508688621558184442360805630521800451891585542041352563537104610586001952276769680963750063627469033075835499390379711006752666883937025638551946613092356985551426415672261415246420136495074059759943513664625709150574625258162816658320170540848810742230662131292597084899946184442676534017740871283036602757740935264148992668455316277770037420090188708270733655901104922480997886589098906406726378624872828250930210889616270639810671097777042018070537326919361118190333849951126574856556225398141447910538972857194480096550637639054580462438732182007579627503857080823132905835396496836309794450986456874287213385214371999630836433108624245225719940619707358288663354447469055187891136446668250026369336670492494335746566931035486102785608586062047114941149237386613864268246541489677015404149452074603133134939197443043614650349865167546602923642330728252637582201248956307822701900559101934669136492797355040746534641430954038598685946043364928233885058141850966967124531229760851501785195110211501365848212923799643208036025351948897736302788361454813540049575067121171736627340164174033140343024471246162179687562573380802515931168455575417547043306289777306167567186192349389928828619985504665780264995630811592204125476342044325038106343637855919539457321823006844089599421455756404837069318342227294918920489657232654555089724717395352978239145909161186389486478573527755830112489423719092968880026567805095806666794587087142047725342532473008324700986299728556590368353098634709081470880293290658718668977372827597643967369150553747161969382380475477200720624350952775482705685445622863933435763925803685031235918876001398278379038717129153152534277100223825355098349554258672175200048417269599195574527802947542061416768408924843037460760177063015545926705722351973654939000862723551704516840511941389639439033113350738126106531849442888636614264694634691902526475880643635969265716023135284248357093758417456388306898952514342167876806926411897371891460150203727649144649718432703579086568854701705198085755549937468440651414678822632060984928265014935982598001395902010950827151665427705849250141529102106510247577471180050834403346611036011672286975540405127713077551287925621733063269615766407648887555510570005738999606828861392184503638919416988153616692856644750994429332370628684199385890370289925155201342002565401569494273468112084392526814837763688400914932422911467562258347373832260655570706682780392391829497826186325733711256526084066511746058719111285166353754539000050710022992585781351934198957510221524563950610880280330120119837457505632700927201413901690151012650129514387337359663212484009466264393357849345229490107979936466993122635834348955927903646410717735902508579717139167126119452573765480253855880881482017375757760166819335239560085478941619200429833351033742329263915285596896036528080553878025683629173477610837912788907135693052782006246743323340097976707260978782535595200155458066635390518926871544350833752496566000362240174356136844958350078127444024568933868257354419338902199661633956338976460627492354757817249432901691642769707394537964267486011719717456011543483739330359337146706832747076971519791871112535759744725270932190932144562206822532534398947117969867967549634273045348510936738998914431803645784385286850529281845171186557547558279116509898333386385847474624836246951833248193278151893715185883011794699581015204032221338179155776078080983844717791696360420768757404807140394499880140777148336379338252906300804469478445746618761398844189738430117724883442830951331712341282321437494911932863736115298127839500303726091591782510866298053681558986886230317713612469105144671597599120162217507496115419124188287949624017068850218642596677000777223417531643276571117356817238969452641162056778003205730823653321935050884994777107581368528073608618497032948442058079316181833864061778907651923183704849631388673738310804976310848582393632149794636765693938245593107633111690959470120091516220503907947229375521777894688586315883901999023605178460738236438086892856572420624993756186216100099985614647543265273732540398728429393092044292424320952933144426862052766937244241466861925641863849530576968624646271300218285329408284840739480009529113297856248336145761899291365024833518685412493357078642989826941475487655412343532964394836020930377948413181278042568084303633861669057384760341105597275524080156274622002740980240837372213250583740201806708057239105176998960333670659571304209179062578941670293856029071898388769968468930054549377912576700130164084386883866102175251657066328192746677811140930860303981531323425645289210412879657227645478131387301827195626332614245918855047012468418352295425078602395816012247409203688350579791173737356730432900129617633559822029833821581417846993601692640448373680036343977978422465272089665861280072375459749863247434620251755037470961908544627221784357862564800679822080446198396554944825675969489491383777749315191153954239245083297316456383717634507329479314753902870618493768394704568603689749366293777195899096023252363322782208020741343156320694500414750203028238658937495846323038150678149388305898693912728449904339535223281200500647257474124099378640346196695232080015529513991733720841835773714997020386120742032295076545629924695264640047942567307541465378009946529051790478927657839631819050284292720208433972265575338500122154034846889171343587822326710077705121192384576730109803101902525114809854481860200627915834524445843575746392989302567038349328231168821177685580921730423561545055781352472148010992218088380749786122268721228835388232303012735789616362682895634277264558598559876181311025951639886317617454256583991106749656848834542923253459307582565997153807441060742452574689713329743192992851054221815564611215315331373891814846431343491571620126878072377870376484870102281405181145734660181672545521774752845841382859483576700689218981640375893479778072259693332514464208621344856501563009574683070837699663057277525672826383909504625944426158172208954451738742194321695414171835172220776375842790836371186297788474671772383472106176530842118376351027242962395816251094738982202703913853290133330501140085374712107853804055269110447746693859876398834499325109593488805113119864171294934002700674441439088728189516106325369818933177030499808488677971267335285866893727816760392818642783495178004257127121190122167075663359700332289620531502709546132996887334207015375420442433987345258718147717483192855541005129229941985458493492051717524964970879621336753592284410291552272528794191969904374681513679442619796195883502719325112228728677803336562812940284716197806267229618949441643353891145100841100162883913867380118639090225715546640355419498207558778282245996330314397449432538096519846907381367320118363867320492779993659270642085544435329791887593666377041194417338430095209478994653653186640055879356618331176060859310877852975934523579715354648917905722678312505141262060370501448381782312168822384631710817666293852781047918844439590574505674063826474935953705105618427343148533761852506102438965954450773961123229054768583211687689090002740249227650892242031619628000817211759848196973136307649523745266365186958695192854644554929363446675781960550498710194605522499679863167283011805215815687852877616341626307302938456368514224993629271197654682146332846375579174178360117853911068182122325241877033597101025511674780879123947074697917770119594294662267941359547748445512292596944993055892588583355181452577395002459274377244988988909988337651514408021330316764229440455876414164752553280896010718231605187433694359544300963214096386215909203906772857515887536967793949390608271063649563659713297153610426778085393189294731315813195389192184695901275307534543359901378600052861786564121964062352053279489934619361356965688135745558276542145843610050342568230592531962104106921244598792556328539161708836111195232303069095050438000428507477292197287380637859388825381942096191953470763768936609231048154016597387809013884002886447495959327382258793976508928040668982744958687438716225152117400490657910535508926689264712839918444804132334039820120031759315509221237418704321406971711631696025977139772907785084377761744861841880532005402767761838589869111844273039747197153209112821914006456483751190586761951238348573581105846137328313090214362896376456692814127813165932625738126134533674748070697020490002254558239096286278694482170361908795619358289747883223867140936214265550357626281516274223872835099287334437481522518535484010538814069760229994037168076674660819852771589720283492886177025399117705325463573937337657827431987756099940431276267497250415807942906040587350623487948626230306052832954686251163156547876594577513237894244496292957277227993024689673097697017802920747919349329192100972790804748072244296708326138219163645109109533140283606950850989437483896107828824780182591209876144488928619374153038078291267136767248139875115889039513530096533914582619296135664030679951406439910933742989961544251003617647811970207422475888135194719960556221064020090679346970719800718096221296522172343913679181762714328683755481304321852957236746626822722778773648275814095924321062523396316981155193722551610825315023107955483023498040999835216069819893092497418435179701293195687951442788202039980347357163911385535414507376905368765941024902807800367948520233677809551164704706980001765109285248726431784113986451734822118668969334085017585488759181775640559758265342811125190026798661688599371163712127760274301729290235317947475612146019742378123674276264356165970829981442202836136358944655881403744061096542003038361550398283821800891479798013105911010400477091903156702282003621578919124393770607054325801350388932619769040786718517372445452608240962421803828061650767291638551051609749973790784217916146523317952302832459752095224906156299843925980286512473320493027204138253426575301221758071153720328223249663233114571883124415150217435192343507198787675752391390309991320780662741823790510054564380375974000534637712524414401478839860088874603910751237708115281258423817410231401886858348237592232283436992605211049451070640522125766405649229927089364097605438596748560623132803104269691189798531210741279371840017240052099808419411422620042303484825488771198122101112895477696171464316810809740192745073855364790315117802144498306657334978023907020297820519534505292855496516597959170391955159867052990814408458359755607496839409196711936408452218557564482876592247643385925424840160104303429282946674086709547278881151122591055700366346111669113882618126143709452469687746456238907468764813657255398900242054019961201411782295130514332540385535195011397659401553743990591889338425566449571212512110420368468873491875119103713406476927264523504237628117019463464339387968227388487582948517409108100381599702369257119791161936128241057649674510550848959042487957463967317940449320860417139826872629496870403251144931116118310247190659574993385810161469312767312212872521798816380609389025527453726248632162933677735539098485122682922317761041541602488518481442172157555042677428947095390222425510936523627782329553997355995346573135654716812084911471824152153113267250489414294600148201474843326931369540248951192511834556593749111254617345545079942107677209658007051562483766927423785064443259014581902427640034726653448284158347936736687357421543506677074600717214238271747855925442891272711416871305229424697088726419997402523869764449546048549985415569332957054391876178863065063571188102733767473801052827468944580284963960662326493699131774762227315257391348867011623530214038651554471195019228442242910554411336115444644405063448833557970386487276146506033725573165956601708053928047575618815672682442549456566108998801015010910432238772664282681912395683297949514241165110858288282296341644261705675799301980605839153278094625815396585930815685603831989212008092080896276790595903225432720681319100261671342482101003203979473846400747728882982697544931942206917426527153681764892978191666000478848448734809674975076016427767450307681293012684596836324450431068850044757538974184834856694332903921783643296666483439717502342108400307361330025252155016568470041648379000615664743138431322063320402212097610769635160444031186039016589887592305262307955431404244148074182537826442991793459966968884384436990239148912122330348393626309224600218434222613951573696632487239701434669035984289415598258718632753149196671176212840407438811808801419325685219028054434954640685284596990052717728139918538555870725139551359943933052041244873549183884258421243757497528753955937582312239264330577716071648010698662590795294916195474473391983614019619646368991921153246135432436225464843534882977266406820913347212374608758992734246360472404195087942081257557692802393890580051672271209900579602037019573675003449364209751413682242385553588167557967587663448407642768963224546995013318633005209392987119620047550891163020680589193456343044471415591945420003486230972854419650703973997045028783292538165129047811167673315639685963703599189026142437170351241804555244888152501020242901419944295488835247293198942604802868888501339537185544259061828915322301354419623178987997153063328548704999286171894064688065279475690525389375613895713925536795858322750717331499181569226445172403797749630245273798244382119847612771413818040245154844495837426941171790730268382304594344270765144171762527097698464902144207529801573343364131613752908731668585201217730142063079544584241076168449898123013377604182566991070368973157535285030119661458246029285108396667403059425865745704164531183140777613686902593443376356135212820122156909917164726212327748738925235038435867961690944476746658996839303882600886237481026070627225920873510692558836355305413630707330915992395158882572956465239022863616634871311321144335419876372724447771402212509923387333743223356289099320949071466322064119220077665043364478784760862967873170003807381925576318711179618904908771971345456051496272011754000188630756988270669585454821129148694811904138698530070563929510496739104008867720629525659029275128290951713110144417849936291484077327677954783312191534140370197341193623989132713239720165459010575537831076462796019408249027583014907245805089339690885049975774259014604552485489013178237113868764264034184806036072288477897641349728152573892656380452687292183089107707309657884723466383100750099207803553995098274775334767006279943896473064178117903763252012948746164543684972800881177835359776401823563068383644717720640767879661163375825518205594084424938363658050625637620352178841104464302195731782988760738780841961021815652689201316514694805389251645592142556682766198779370444399198621187552292517502013884310501583616325794267775271849111294611170983936910592198548680724276410496718443041376365895832958542650688106010329651141927843824478154780729964656466882817971264684476117337951668388896233996600800771217160666739925281120040218569817954708234325819906509407244323698590917317504705840276351631994902489776946166013267127672080861417422267921216881496664799081218716476512672137222660052326555058895035893126191506240242535369777738970594721789013965381579271012458403780939016103348348440734564303814260949315776323295538996402370387615779872836149317092223258510364407164606585382398070133733683907013606096966845447788600208684938004283340524343891834184737926372579612931567312055918312149232993219890576833870926094356739163767296196511641837534494118637443432895232100291630966960085499621596535834336030294165588528493193628046188074762491121366278556498519936177475343855568743680522536625532562333770961672482995314993341228613307292567524457920822997919429458636604284111021724746120801922725788313345180158793182502624501260073155651727609778327163470757774943407615794552225109279236608665437547599489856937909257240041365299561872277755025389808732459986149133131468532388714917855478306319899347394496783252918522125177386413717770915450699417142996451288894025401809973734533061887975898701347261282747528894897550831552511027578225853362623794222711828279606300595150576463077966393497483798206869079225399536524498542711041874221557395971442352370664669935277742183250572093593168375257999164936056917302485919091293354822141708222125008150614303349380931906101951937363207277574670280733789225200366990964296452141226966479044081898547429597853155757763455055832516118096955702088787559672022857766806977857910610858188611398873063653104855103349698246426145487893460646809836144450904650807808903831244514366398768935063852716767700589397601047455669490315654214234741323296991433192805976878536502164336604631953952770199404371854461774334642331128415115808350587155608480795795313293329768071967898160960037558212598992486973232170398926672055469906834666293338500754333365759108208953430839276596910434314638835889952744438748797471701855277208967504416511484352070997344404738056748653504276247764410863298458706106354696359217305854592508837692119518507583413017990148329032038788585419257140817315660429794734487792830474184844255771605017359069755486193884361814204111761922570413324993469411174406056786373519453917213474703009409620802430804449053683929171531916483907829788356803184331515633678000945576744337339702299860247846537566359557621503808752837504743645576883678379310619419894902592897715314814443630115779389695462019489737034898196581483627841767472326776117093436955206680269774343114292423894296054754905671984599418074815408427745229044889199833265069704461133010527653080662607140665538743365265497680873912843576526636930071685428512913305740484572260907383720324842900762071766529267367033845153488985703456231640456227817978161909015340904124297848839801391867345900356627202787528575586835553474318997105835456979546568144782178264863017297957858840209264248757610396610930791761801772583027479486785979427047215842867776524609891177166392132250954910766139973345418809097943944687253346580383311154830008103323809739340327109931630383556984886261533773915096255654976910961926903590328175742823733388376153518452411281327564878031526146044743405739357753398552276463373260316816855768260577072527020387223768045618216189798453073826638549996078076449477593818240161739616139571680773604304209928595296847892597384584294726204106143423053722488568375290789277224855163931037763040650105311737316984995796491397229502005688126547510509699726122202332089110134915164730240106986530199437465018653389351356977685091069167332155370554888471878990202283336027523651370974333786306725016813517774392658418650926573493574700214835023758597642722906676956545288360352410030727849151102934635661414108016291214694340541116551045288183911312218788091659056094083862242392624063258691121780978592854206554853952374667923992631336629322851911512058464997816821861802759078919113948116740739531053103200470700063288260010820052057995130356428799169122514602647515123167208814746766414587957115412943312094320999517478740685200999454206419096334014076961291555365869765239458656519137802309399632337840308585331614229186480021468702023409306486966647311450867548883429560734001806616581099259296321941378746179541795784346573905376396886828407645655793667489343544023854728224635143673531598532959407194263266866485052659112901388437074110391772893560599935199162675252520357708436797624782693808544293357868351451799178434782955873356522302840559366370327267522068915067814482546288459545684875670678820512465357038736512319047597502891562550554206759971826215552135347998176030667552405272303875481054392833989848181010464594352252892838021718903818803204060811390373462542779384069068780372161191767916193228490221952893090909663228011530120644185124015425620084333505825773630607184708221131743921377517428004066351796491731335000938878624200544458045362048025382339111233381205038432299238074220656179435597022006920920591823664514441530543613379760020971298047705022019541506107493084234344025158202056465435265230728627417245627990942483138795984534571249172577451312877451898930525385389192199329518888906322603541088462018670759340496743980427115839972140768460268177748502551932394395956141077356061788331869350002058076117316059873477738653978276092847474292526735381897690044177699846114630522516144270470384349054261884823867074889101396544785129640747124603426186974563410306760247075004739989782393706923209974363705540568092511261299496203543509879582671305807883012731505427170125294384375475988406861010575203512723093707042525834383089357827025614187458445752884659551046160295810895255497945307309726459363458588659249345470207074545288258711154538940280216470303016013308443217351507056116502553811897632981110305466866691161872324794620961946686183012101353939989323429109758294328384588235535425564794670863808328236226140097956161134524549543736478554512357125253100434638834618945023270951655400392457022062349759318987528289366236663209166225406712396825336469000805798293896088517530951631846100390096582967995810964511550120697735394679353404851750044155195337952082274188952966711524756472924191175669217733808880959560902913037863801502454179563105829711914017103068358526615827272113053313907609803994885141695570340153425317512542140783556540221701814139380863499758277780342879690112317227040461287981734462721563535338244488152017474260512855255493072543329813313451993257424385834703408018886042280202678767016617784453267217484529343527145351435984481245352073035677798674305660541696327185970513525714694544130270941427718773448700007298550632090003167415650232283157755833147039211372317225334772664102854145732580886243471032466262206104135653034259219144561749796227672249970365327188658922618830353347618481254553991195808809212784429284761047255499908923306118039558017961910352326123911295628943487531079117327801914492522436340914807609392832170320384761735349390810391701848252107588994095082494954149654351380363206429719295659642699274526841331336109003256113987542748105741952800444607056946427996811739022063249385632318299295790588671242337257064330022502141074600841948736780965340454981907955815698483606960743617967187195559356832633402905350531798191100105283307007112012165594744129205626409505542381964510562984597735365119220194128898088682226816220203868205986381778556235204899412427218327796267538730717427628480358730176687189458059196841101896637280938305526602370615041430950625335879674747566085983572085716869745500449565930458175415082974868349205738162860330778109756693932669954171558887597718342947535371788787050164573546468737311090897913389898322113761918269985520070689202395935528139618525151276408606869429579877150760494140197263184845721507284547987380067464964777921404021387586651045600144867011985660438549474779779327377100864937733760531157223224920494627961067247953673535580119762018891945552433894034849755017558794846532146398904991275741537257180689560978654042992741681435727782460257797950322245773154724310906821533210314300145089185320651955620604549776023043378914159093994468264370931361790803347622571628216393400602224406401156272336758807064115157573026393797732035180180331885644727078458620361463819200088325460444512557782584025221056638061331892334033843974896027912897362059654142052486655352564843032482996300475547445022034370422476135444951752640968243194748246064422859967349771033073244598111190683766482289164718240355583804342730726073787229124557714911293951359774693240566608147308947930165487042034932932574404835390119628999202331075548750662492272517843340898219961658446897832769013792988444054058882220263315223651163324866748126761369469811963848988598401645026984455640094681391662578396331763810148207748638337128290327491672709470766877363918580470272456764396459354475627108698472527050953510162545286690857298984184601536705969554826177152471805376661140885728385195670192690321752036554693247231456864520618504887687967540568787534565544234008236925659149230742781250235637018285321172363511869619381121644885056006143763793822204470228550327871455820255420806826430761291010790281581617280972454403628409303817102917301850791511824510053946706392754055862523706198467342218571571377149112973370727008261434392451493469077020582127792913132940531072843769455407452848054316012127385728001137751015721518558716960185692744943778134099197685636029632869380578305492672930368732092711979034338063494137869754583250542212179883578325491601296312991023803093032643849354099963908428547359493674404749726192649993792699139861575568952551827499762600141605063019751522970597775475228760641336186648148556220148433407635334037835736697702843396433733497982791793046194892657532940432212008752827629778748867372448304830115921428103231184312599186654497202824740322241542955253364953251042876752877486117406260342705092359610059209980556950159483321338708796919350539591482673808881044587545624159052311933297412883469027199260491896519540893733494562112800975076328582788626320969489597454617344881923593406365127652368152554588521122349132348523539603132096610525130492611540131689412264874426623386861326915345754681574761124018000803889360461040138049283153138849842031504441461556447501001411031059926575985249231891911121458004401401856553697241513168607308647346158958239313312505441353047857085188785856097258828920183868816476395725259439112814260561006034856670926092035492992485208184036082251040680351782214425205768895631216522872466501546076633973338108579997335851049984619156631064476088483563192673827231015237174779505813312304310298948489900289064942176811080861825526798837996079135068850618135836927495649068261657317964308690085180950484037791555267231354540702584785141408815587270485498960932898657678072999613889805342303535324154503043845378043167705046548338096341855649560098831180504634918517450286263724001682617951935786743840102542979994270591680011627333520209649475892751585015377488390472123643965597210892268524733775860063608513990445928874271420650048245727275099766717448223605358014893473753407508092146117874206117416800684881544938715310999737544328860557651216747183967510297201871351896609478409338965459312058137919291395720310478824587078964692967921043213949854237523997852388043121322965378296284584053938079275119932892398546872334842789654870502846374423049878788488578572337983639400923439110150202308498975159552129737006634406034623211647175147301040502500959429079625204486286867901647641140725738639314002851914289079104755995928451687454612675518170199031652285420835303507840365529968534767075758137008552643562375229267373310182426719382551297599712790137394673886378393525735929598175990103268767681359790346183821897616925530061440397857885975746575034088615547088468725557532371802098398250692584764320969267665892897135210915206473835262049371159761862120191564182946930965894155590925885488563765235065394586952179840869287509402443392510829292776410226691647575028766524467882322079107746348800813954687083288157833114288542976043571809120013323717697214103865236925326282350768461252666779065484568577047068369902319613977896073080176060341208853433146408167882958523567032990924874220392943501516906596065321263449557200935003356552393610858107700777650318471579002179246378004900704250259714020805575651004715733192546391676940982344668949242994314578163911008839363166797049557698796362049606537577639479161865080917570007514105301929955705614322473663223829673194663163979548097881808378840500182808536644832547820837049176933262796806552078664936834590707621428636467058776290855311404824273575313343248051738515798958632205561831329101046703335816535526459685830379265147414100661166451587105638808645651576769373696273159670385988703700681520608165605313183016384568140706998838728275622381422917397271979925924085094010611889813585095520907368927129433385336677133490431802995385114240956236419139858531060142393750832381723119874622496458617117672275704006401571299875869678395047271704915086158873116011542856186027322391760496581213493370357466194171825338623743772788086799088877410720916144836147648733482447279539942517568160710797855501898788880350537500757929433345179568249024834824882704181381679126514890451994891268122129600929977053069415132155030850050660029295191154227639742578421038800227286248615041120513753151553692758422480357791536852992301763736978212985690264333095397042355592787184927801721244492007403490777302883392809487429470913965544973180065256498016699262524140975282470583879992161952350258469778022761316108541763291647881782780741851974063226837963643586255663862866194160135333147689956708139529866846514870595073741030363356822245815227049404785376477882681806788946277168013899038515666652817267213683294492872219714797809500821971159162178114347197885240033416793314292143445254771479565141053349496598565784355284483248841758346495062960619682275001753994034315318475140033447094520726412139004322761879499391830168804599829031503544980472716802594277732634721741257149256784211207480494772606375674269812797363017072345643189073336155865929282195100787463350094492104510611067508231777434188066558082269442594831265103078873423421990676101863099712070874844896380091128995827954012906323243837713348594110498381878077663954800696389108685549607131280346983414974026682377509751508451082231760542104222465743662005892046641095887708129229990604630334569284738592818230270841711061880482211749490452164751177718561340376359711703262389461774674433018187145033691267200578934800992473854974997068481008774202373351805656304115312526104779044392248645876745105919322654491940489827360181340031714876843038270458375643075887931386265880318959692335169144272883533520158861597075091354383517423056012191816999630272108266470765217849059876774173282438266466931779658248924569872466883614922429824098467569389387975196435652835612704064861123388904139723430080417403772306190421668620330095669062575341989353585681298841123107231447129325804041427096267710048832873059861561710101228788539392541279842677821081638824093921953430499209835494196203746293051594090601831111825051657234461601245693397022146599502234258867183832444911626638695078099005374451602553385687707824419691774644666212778147876957914241157917320527178612710575767960840019704872792486103967975350374520853293738971113521148412804526268271396791900844841209149215645686428295745667387355577896790005322278598715888089791442497776234499030896294024651208235336086350465022808887239377857857864985483652684963412542732701734792866256957955471139519428297216774143366465862913478496027437846302964062882781179492630625824445542626661908969781069148491584039426697110811107558126738540058665955699800238327505271117248951161609783269013743028389724935503723110687273924239871966171994076518892001850930406003925620878967878689527880370098748987750674367163191414322140084925708336656695266283011582104469478298327139032552990456919445306313033259855215862561338797429684520092305326762279137227749468389265265953642683282182012461497743462409289959894927980833078874999123422345995341060321749091466452746076451429223693418712486720987089784419811049586369425393707687705812388033705344841801246932545758384695403637833493146329179122400560037009287619977530464774658093064340313962067215624271285141145435538509018043687542989912220201078737506112891553992735699098714283664604699295939353949347417661980080644163268282040831658597728052783992782029460171421133200275122471751758276522986034990304291082290349241659513398964527576518665656145397298508349525289308783481836452656835389322315156121374334164312043992714479876350146068342646132702982043722741149681466274592489526492703502455331164503806557048871743741390884573587188862323609158585919560352174334610680722636737884177192368240083223581638058034554553336216446331266686240218241170235670005629801369980016864893264404870994328593926237832956401789619616790419132539481663373826051865534584220524874466199163246212373011468158987479612905173797113415219216976414953044110227144301313887863380354114881821712997901261701989104589021118719925742891714301990309460702957597626783401358015533361647731433014675927203756231164485679817837927470829471150621641760014790524577375233554955805365830102349928035531277472056773072823983339958514962781847157210489960860867900919992662198948844198849888487787355495687947187708164221115977246739757951609876739344155053228247351553985138540711203549022740816946801098642841415674606946019330713324098514293098537235435759688251250924582746435489758201276055560280244138761619890743067429660558153855497880274213260613161308632056976914285727218169130772088338829729701122932058132781596183898851717150180934217484436527261700887097698407380305125982721497436390628002881064470703158552120412964090719352873052042514787780256440092662900378008595470142620412718499066111887453834394491052298326499768100250263685440483591829376468766467881524481602043784739273826780223291550447154649037761277794641593778899657146140796530837582631338375524610041409580790599972618691130565077132348967669161902035536091387264683451992638320309873670787434801315715651724268443123407719741514524714823593479520519012096707548519415531090871096721949666080403415222256852980903277773569949854569371618991856039993622517380266122254808727564424347292153701242187598378761661562444390412225833146116002076264312391600008454991473508061605497745498409580353400144606683119253395129701757275402462393643845897673306454766076181834142135134006455679374990872374547414852715492457486313468693581522113310636371091886125468104440841417862516718111015602327618596112243661695376498150298059535969704211388550540296147719463162376224973720374909989151450172626992893555357231500292888325615926694442642765062553301541899010197426772924439000897167538034922746622212521006419226601354626125931776367228344980727098854759382658817458923973221253173958422961846088511890785707767468570898096284345676332937024508905033930214306408416032420149073711219907050519133465082805221836643379548691273462813587660154653844340544156040128629122783296374105589708673007053464120050215432598666978444036642026104840646295752694953540881073901133620637740811118592750707378096254778352238500165704303691571357985678868024963535814203963481469203955865334870262360444239213003640893017481879544961671299403193552541891326852109808612267639988479851248862724021288538205101379778486383901003412639976410295701793472620722492258285529317207186572219440511858869047252052992775464009402833522983505296644794321580751609272632111123263809016235644006409863938838683213945075464701582260271294781805016367004223959007230423185285979144606572191508124447078765295378556863490424462182422058717596378460146099809507045510275030952076895724452705983239534320002950809929827311372490227903409695109577377208902474966324910028880165958715949166539480911242943248724755622520355738459653980726605640752545279220513994007112121745814528011615099880574475570582715092379926035671625426294313995619349817615955610391477661380451717441211340795350515186492272600939617235866182515175312642659194698966977200911427306521435431420395816189808803599289797206069629617092700788249692760602160095875819972253053713471695211251645871147332172039536705910669317472395080830891160764873757982912000841445344708192013961938897022625310365414416579180772164838981614271314268098971412825707903922197671626314228928310717501322565298755397871665902092148738027470490464648893009448747194766236153594300443275741663388610145853648841853985370686398015442784880192699835291572918397671559443901827228580850884847551715118365051306930820672158125617300963737315372162289567342298465450648328786365117142444807718771252388300578492546224934316324788384358087529798899603436949715755017768764480414401558780089002686148655478919783470904538963206967188402904318128766599745832321986321744491639171511285374578371516750614774736214661247883525632168448264790018094167601829070270635710555881308567476007622120396412403803803363722188091720612398839755169312405341264551608543150101947252580915878425912329347115464879664009455734179989269128480958947419675350422221093942022714826922525194936544983780576453941390337044072982486575082573122716593557794041219393528599501487670053534694638722950542226423529718726546598762896950502250215626557815966405271051724580651894107693068715137429698645604994028699500133709244266874598349662238057751054381519929228085264861957398103837922764065153098024169390040268748240584818970849891087506295944921477125535813777414352071942922823118394379179796442178839967512407681042357709080329992381424320782070778686909280692599103743219266639276272257285516554880341434506281571320263445675283446244628265821885095564947648102686900618090314683597851693907983577374015135055164032629586960815477860286712393144767519140698419958086480044485336238527089542732611423503179315264248538976956529800993195625288602899249475228112110884829060610570451244492663305005422973329169210505501021447224260113589385832515616406934793749878902982941358383275728001489825915068030954039870226235398837605914191602949370599148376457629981483201644301689598662601070620974819950793848441029571234878269945437089308701430072603218129869617816289576628105286202318023527231384431024207011366233812077943688329313177486373807552294103241527426764138530913292603327818283619153661257414541212229319919105693760169396947040294718528493060224378880981335043192764990785513359936523757463726288374639142767632554359230118322263642222341963535027185209860790418146116368032403844149964454246481322308206483400794925501853350711767253568783999209093186694582095794999726908134619523193926590034375309663292086154393034076965338576281259812508227134434182679462561959767500082529991159282167630844829051797632502456829934033870499403396784106210202168745425990668658365876596799245482311227795037921750486007988213398830456410380552320175694331666815729556532070333005388025755759444225010470910748930755841108789734276099399797233870852063758575903284432683012602670020174235256632409275562647779230974675003137094782427646853332521784067744970608850226792495913320910470644515064391506560574567407997222471949440708229870898550703849162026514617266064467681884213702074576175757795875501705540318122580590547858542134219442024479873879651975459985179078478904814564060656740975908650415593243931536759377507476876405156479813150314493679935314850753336903776612340545670769868771349469129191793180652716202384260024755924533196380703697732056231211435273374027536608690055658646853479863842201001330379250134154597811596829696620662285638648412417154927566349879218428565095707031978375771789380865170428946189559668062193630805913496432756896704488047385857482435489932807557944588412406579639504578844887988886843192880989861055223602405856399540552304952860162702004232946283502746845246365733920794287903983562688491768339257671056833909369684220654293014011147860386250115835532709036434459259077268656165283736839053011977346910799539762411473521067211118133478716669811146592412858534573128149324444770380963907235312368733155956463387008108822004579295379000464811019881823057389800160248814609968648257345866009263839396208782109607484412662471675558124242206032913929379105420364900304925904567347042911797869048396750254012178871209360763777913402052060711844973916611370262269687421417732904706238437292172846307306445774270705623095421479348831443172578389856508888307835189177629381380918117020914906116264235951878944820956901376951478828591074930757237260822431552785282454034302950620610849906628969410326226180806461708528435152914916774467410935007387150538482679109087730550133463501219299944510896254710887631824947877037470491465723448367303625170724671642426882441514482938323630120056973515460736313910039423635640299628344877652319067481467721168060832914366315069533405593251090525790171079128211527915121372543169367435651059501361046198816498935453030003167863190620179034513575167532713542992720230564239828450583709502248412667198153621639154871684974366654567066496469558717776672084472573958971501017004923711053635083086390133511401513778963909932818033180090733929468060167080512149234646529945943205193393680072209600254686432992326916550659338404583422470519629450222113236820426494614474185325886440620463264005651195167834380564232778853069345255519181479807142012315413564246074537341611569683530848454345818759696990955678786883943499771979685403603113103718861296260605991011633409002241067127592494195926192001841186144746248636166287757944899944094461105915116240524783505624106970150501624858814388650576436966069143055415584603117772279692002187284960296538199529712880922432377804168922664074121351965706292146815175592107979486771452236253120758727549136474596953273258914376101112858964132681967228515548959274682585877908818518128534590528336550778315985606092566824735497534713318391987142786649167263314817973378415409171918007984050793412972020616649312565553691927222562091244401182698819322400399411984444107182167021702187865159064239285157673941491520907568625330362302613092539198496666383860524978435621186579796790499955467761159849314346454464208377168990414592266750176592402343112694077936554205556873515632980651734840200802200357096474562846247155646228718652017638901322857083217436389328094829885635780938876421187875336935447306955380336282347154406078339233569697895096581920369450350710033585712566664269160004044411340886863161211253663457427712336808949754787238659161964118158979267840667324658398070322236662428758271141557716390379046782116684237689553951240960038948635849971271566153288782504641437578216327739727308811189327894446603992694382200460252260467830393218209103700274985348388070662003264241104809642472830020009391090788688626430604106373532980695636063049495806084221655421133093832873291810189071367798800939405388419851777291430798289791447716396526765603299937770568972704603011476215849745591162241363178125933279230397719467251088531322958110720548237311322731437833400984339771188818129183975498528751332634986296708972731820705546835347485546064731170190543217273763441058984677621337604873377425453143979005467802895833832877125081672752353381553911049584953982184402376038499011088049939374354202420921571642640176213030490261249953068742628842258688134577244724229380611521417960902005857813155355240804126422919286686414305802388033386593818473998870122389562841497947405865891888725394857813442063203809664526741285713816886559068293647697949539250559657991234521751962113071380133599755862646390907553267862656954018487136415858570563723883550037370633640899819007238336290564951131414341847544153997648963316425414220896029646972221329947149807495289558468442494117444760959606129294300280085758034775239163730980306987862882273921238763145356499342276971581188643589196351237005933162068166812170448010157583176131625530122664596465164362723539749403234141178075138948736462051185986957508207657110756718165716643405510882025650656814598453867005707440869329124382895765907868842991523686744671678175900443955332390502040262539558545227220918992496543365125818373380320623569216904286950369248286393939008249317932505841166813973393771526965788297008156866108264709526198248177635424148856692298225466635816356472350704032180517266536624593679570724953759010907946815515599276527042316197376204312077082282402485411544783448344102472772991549776643913490984552062114863134535304478297823049299565106800145661391038616763673294302753089256681318933808534661365505336091603855484664891491243568563340954756032273188007352769956148538114416458568635656991664172317440793555186548032053205565022464595538414811314562342636040100650255775140907472427132747879114493185072794087859623977123215053858114355497230480773795640859265409281426506458273137463280414017273913360764742523517964001462348827018647533558641180797844164741271840200239595333931564544429821719432692684807237319044445073684746852430544098605162011045949960376826548943878762862039637275182223069659999435521915262554703481927470303638582034149817904962461469168050823121799853073356589401940119490121426400833507933162072982983622199808529844928166155592130954783280620334776637626267879899848757865933608155585246794326261705534998265337150173409622773164118135410329298775633475767912858998493790790554809949557254995894285613904176016818827500188005546584663961233088533387641076031438173578586462749807070635194589722414567425503494056351232173429793136545967947098309916758359529742683631134916130177323483149261697037548682455499119775354001762280621623982550612509692531901716029399312105503892693073794448264163195606388247235443028026154910427018259552712540552957123742213523648831975275108086853068191921278122208190600371675869484317183156538937773963824125637030817554093306036808694572944808459016997385310495031068013177886567934394114368210926526425075015053767232476772290691409773811798085082752938422050255222509117190252699688555105842927597341111653194535372389295081782630185535289198086259339129605233492374501597057346611652445915810604117938633514594310740015427177111548475410102476309942193972978502379529852473594265949019699638314711141263956952350005946977219658218118838647188370102847976247327466965209453682249746186379444342216197034359593762614360961124997669292093159334947328188054508419623427655513080496771267486718928123094164177208777067288572593995212935072268632695808970936288398396616587251541237361019359648769990319684477211111299243463944366080435769315729253952862973493559082126336055922845125434408694138132835815509781381751537814397657467915066055340857927971648055352872826662939362117064157525229326143741248103815049984405343508083612978040495055719039409655945534257794288432929314717919854046259832686289766060787647579731221570991727259518754903165596917259463446769735650323051188954904966801085628300840521425719713980728243725576667567463545375507373880825318048271051405898686528355925438288588016808610144699975253773954046071702443698040031734889963421714339520726605658994045717325881099604684451894821373612462162707326656435184465759408326895929528960359248122308549136463553492617574553637455899525590391039520671619892984744492531803304220802322746414661864013814195353315738600183311239469349846541111853291944320042819458480206526192959473180706685122323850925391314568281260463385532424797893370129794246550838716677249872877764279904367657415929177282561371910424195716778169242359184002570616755569521345207199674588731634058676822605740002523551165419155313242308933851654734732150971745297264737852331720101332092258167074341073798078385057091669481310136711233863844660484385961255601166585092471392210423685595351113604155039688866959606602501528609122370459749892477043062528250873253062907835713887751162338887427159171224756394817100625550613208542444554920099860965326171485996287615308062860823849589081446161618856694434007029060384758021411832789322323405450830575549973997041668800744147430732165568100774393121547976249041023755361177662122240852904724986777235120001068400509511203734215839078685118696212377199022979681131277620935056164847778106176311774861308134066776846783435065130679999617469931607297460466186776305351765579345099039403821818750444324291832314772889173577476651447995057313345227408688649198973866559022643892786787210606301350531766723013090326400675036163777641898006775366001104626449567149039329871739343145782264199853113331016900875567766614077700324550683398244741520056152205816914915644654407052586908436353175904694442324651388156037883223700757853471919024438745133353774835252839712360848233822098083882433614073179879867731551732537103601036704992878623815841536797425715706488297905240683636670627548302808310308677213735681497444296831624568853836367537992763557618903635641798200530624288872533188271469247557105377614199059046565614331974705082640372961525042412617331121581029249129470688138027567761358813801090411507356647734910755084079627069161384506006049851090011139637774399436003213129787239813869416235186667094077144911188835039554502659115791763544813162498031792856109457833280971414782586417255824726702510605216156272278719160976399092863315172885542657910837328203067762197473120971464481190381575238186657913984102919128388541734671044985195535869858584627738711126057152386374841267317176438740325032762297116411744878081227256057402224428267039824069174718028288010106119789405339718263460836209499655323382340460901061062296053178407743829686987293322899183130324356432279345189108440560625919117799182419643986561598059020999077372085363425480371262941033161352655200299500332708984289942502392270244552506727500488234630931933433425943870144937985251268512481369686858388766328830851319880810561550161022042689944337945777236071123303715930896950352582771750540769440222387825894679357938061988096092644407730385553747909137276399302273269084592409286468443626466188430023447349659987112595669499754593906565001559101754972620795039160652559112777714746278544971863862371800432306270269344404981520119306997281225525752900142855295552573123429094918924854751597788042567825175401103791073212027058030512147521026998445988073534477247263326962207946598914507103508425637943799576777895145208878851532772786453414537448084949488284556461303342906098284981189129964552672030637334682551601366551498684762418969984667606471502784085434990319516009042857740768779758334114648620406806350762557352433013477917794069986172207128433366173686371312006978415383079990028290121869860205462661855926814393685185834681019769226375714615416210847211926844983489907909805019216879452414353399144313512550285802952393815473130185535641470421229368921532886355389518531959342200692713138900886242660514513340871341705954544312322934436305762260705411548831332551362909619635163113690688765638401648851123125828643735397205337335605280643202311820697540228708638439799700130049119196885824159175863720071020753858851092064088810147204797170384608943751557205833975801252786258351386292227980533659085892144365919553916898159225322383906230819706176421351244375018813736826216096943359917996996818013178837493023432747660832207044423059647712214563002180293655902839466274880780151888891577784051412654537808620758850654298823259713695016648215787576405323033184500076834404623200810108836840119642668010428588245453541447370462138312058391589869571263365996575658283765044754519981209585282355898405511717668544606503914169482304525543211296298139940643376514753219429392946460850981997087492572830045999897720751700616339805918822861162851108316682458597360785340424034495144853801163218000086777942921801830714964394170170099813660653064824495738242103870170994833649560876066509991938255954489082049171285978964892264371394244488570807014938124024811669884086789600376107901684567027977943974174358226423708788294277550045357586861667641153061205522672888002628291147763166591451391218948867284700761246202782927005901735528775587362936302345257395610089734591610509942270295735262258496048708251070582291066170040891289956253578321729513156615518943916915206001208908330302216562190949330164586816832244196246517150436491197950976221228667611616387714629015053360203176868351381031443256899717274103245314042027019797184533467857365031153755696700046619586108236347817627750619390848035972255423107397480799827813157890466234073866583869658571763626409750780937816643506938120158190549607862054444574670145905312598557535904863423934805814537027613436023287579441214053551187177659631344077789706781952412459482387302592708248414150116840643647717403047961108809020141408851672094339229509872540413728169270310047182353727468261108708579909146961841100851547232064302058701885255154014382071614221064545640269112272558211665064479448867890039090148534589826226651353985275973300470315095059087200395241832032445422853388758093708831957037294490802246567067926762697199389555767451164895587329987778653002698270996916474267798507149981843185238167766779259051818051076466707638776599727118310177866943809665025332698353067182401653265252442484769699185691826112289784052031182570502398428124656338148308350375341953167013586784175554222341796857913289793022421045146757224500850562220504218608879064866921092052104092429139876416529558025054040949319665360180351431005293390280869462758041749726434448389375998725455904196889177006766666854303630377877939792476056516654841608649565162670848768987684167395758129687756166174223085773892818038369295124999039017577536381995780101490620622691263662053745174697226454960606384494281978751875808460301652880197991361019680571329502200416967552138114717247104038238849619028906024526384502550121937936138178823228365439213859183541175772808537322392814008087307271711876754715007915084976350302409999974489528159497221915701599508111200348244331211572825333639391783687682650816205037922731713978395842079209228520359757833123312512803995420675928015704967221672446359526147719053000111282478797889011067996471526954614506282549596710462597754501805774180907616373123440705114682081557601490627754395849573387453554840966632924481457321061656180293631166389684042570699096797024484625921738443227972510984482911902499181407307650836426473357342755820960075801896244019726410736040326305641314981222523935213906079314647437193278062386228434435493834622639216607966693120331181824477607002082131965080554160602445166884390932653328841378196106394040403563032246558746202462117561254901209960937565289877190808258973441520229260523881781249266141510473582533972549875556567532123639300102163468013668075885260805706396644546041699366535709664970972142182037407545269348429823568855752843841047203315015742469804002157449130699010456929777397289993590294764846548142564601757167095728765212587679555138227989707317931997675887027363500535140348177394043372920353575328333545337203631277250971939741900005870107792395519359660106185227967884340518997533788747527203531651486584177747707654104700596073251512730575744858236507639769963896117333013567209537870720908553559808691162526734738395274079254315604885321223102775773616892644328689805590051363408787732750231477343162293446686753446398778552130060052593234848765055613821364356586007140205398340788723707254180886568953639475361033510785501400814447739144615645995941895266339887452762235513205124003749722206026240933724530948723704348739895068568136423359651042404331845758798782718048188565262667388660490245483971682440212628345058808085312893155327390623531054365336969925129872771288392324892973605196588621687187719860120349268911764750500995430319478356139912621575244662955033294873970238014313625707778472329819766379423480640061206125921212766632773390025264268529977262251200314345307682637643405112950586969782884933267923217480992670360053597413771705307588447479394686016058667852829070089656366754383615209613591488742545400195538924438845553170904115464463688937134703665807701836922526704843613975208498517955867298488327928326188329132679735855969194290588054206561789080155184212271761229916382428798569504086627582104809534299035594748197332083410625945349376232765217541622478720846682745934976904989451320143165596031798249059536581046330654143432454539844240230685666370549412916302617015054111081863249570590196585920794829681323174743408980723141189091036770569230446102971875520802138265612791995079392353397012985568651641531679401100670323615055530961108939563141810602136483759754342513680811307005475291256629849993604937566325352977197217115606692241614965882594280143496185881851719445467197889493276838157843797192996790649289233808681378131757128692339848109455436409086662616745686160352730670227093424734821623567733353923588220956408231202500901372271152226492507244209755488220942577514879839698481546450667743874669927828668434164742857551178722226570781086447955229516709618728521651589993630866563140347336546772873501893684519093566224427961316587751575341763242719779406949730557863354077618844772213887181179503576884589712080432730298968503752582198882585915741233834057173716661098623295705745416654793749684690446482100449073505774951773942230212346469958537798891711463702969521940713933128104117952159396351038543168219636970942477836604093985675610153837261830561000789924556406979454612095899597758852028033099701370665944844655820306925704899512415318293943119627307106617035011920220318773080681924691805067106310010204115363520275321513464060370801043384678644690004674401952256930665471223025653801698327178510306894505476033107833898762356324706166898613812056517984742781862266328325759188862275007360463676462232278126175367329113008477237838293317301250552676506658688376479693558237151125310288816003013027275144537896455233013108528099185815418677822995716691427303571656067525504829771727524810154860014234841325651716005038117528005442113640444072789086610665050300992175888678197167699788733307657924346844049747849211566381114386233358407964971450079322118386629568802647108034633917228372759043085567874347595694738380557871613656061642595413192342134211646758149443087278140725676182253772916963959143549641052480516261362219943895585738686791676880005019084191486831695718972564306429998780518105295161282490893196106486416378252793952469843104167522389586452554902699241371048716924274289583952427329175712269966538441826287715065888495346150358397627938549387884060278868821917936359451473354823674412973158084200708069364982818992324704970164601783602061981559742965418718302372843300998656742518911010150400303906798294890299835884356521833721845250389202368213376443385845671718896038191485259555211907118897761762802626750507068249337542226488607203869859375138604061326240830274303297574725155974880956546680400961923743921200194994559356527961303263393988721393900572801945060812554061878656954613921235502315780400611451654750475894206906969938090202638144538781824418776543094543660242539682580765540989989590189218734263947442241086918302968694090174706306621559149782808192434180643753122208038444521776384533978886722742733093541510142043899720580130382694372977601534911557777533779267772720409040766931517367857888917434061366558400177011469670456348768986819945671738497764555641931449318702350341031801496705732949269834013049858090619998743845686635836437300405866261505948682745389835225372056360346599624629428570352290590105097046009072419835332982587507218261012060521131600679527586539814160652101656299709055274514469340238196444593651934147487032072819916822455428175223282393882176612961650370372254523796452209594772495545832794835610287339904562384647894571858527636619215923102224567693885896987109132110311589899127567820058093880080079156592756073365185243590526360254132636283539810389668000785103995920135162637897105472589211423768431844029290388986873012352955516293384596949301843024364064109535035681232702627991685928673623907197383783881499551021641952699933478291889738652943683795801756107502687195347624778205750410790196542011820773632651163630249071760112620397272944058844584698654463976368901905127533491501185912933845975944752021601045579119445648984276817311385942628033833226617879310623281184074868479462995667244695618663434842242496807458582954181588265108446703269597898370384591734624502880966706425996953257456266780780932774258236502952240485088593930682408254630776746785365817738142102477077585134065616992623357361714060398142763889152220254089566388643112732905577734388764661711381221687778871341534299841801106397214403992191392348765963160826921583146531733015616520098723731434166005337878917814116927607858071883915946028431122197904366626865875535430996742670167392133428784671919005080504919600602022575916873068612382697677117505421246587350693358972465638884103320764033007766038219849843119920803058910354491080939373889992539004823023750276582166400803116956421371614796130519970993913054583016522710120823049888018645265330592774407087640959303278045524069815616364832545757331694658921064134816150813054933868724201032146143729069154909522113592898270576348273463895291892303171257145579893034715531548580605729851683341530035858743681063612097389803966225912039724021463083485825621885285911320750778558798961683523935719252170917742671651377678917350441562714331358953258916434724997044145576418403005023280296585468787116997999303057612087582048086158278181757719938801145777992397267907469198659464109812638677095671789946411549249946152215602196994597848512626523402995791824902459984359365282562693629265656081534001884312578305765823439585791020827671730543861151051339687229842405259507428728343357197894603386970371180089112926721972707538118512285628547326840851345248872341673630061597008157331864676783304716488446401883030538876572947083935914132478904599055584405016124859268551821859491107246512744417024568970921805595392833532290684651296439231943351307141920977342647802451777213900681614135363825466121170558382295273381407687022187179771721223251872657768986214233427537872076632328878457904493302241296383961885911083881337871012919168914623484710369218743281480988656665280189996287475450791205148428913146521262820223328403105844972780290735887740271633277620590565592081838078852792317363612141874977195320648789087027024511173506417122153615704076702358731207594768309258558932209243560793225493447021570670435062363994084491122088743902594391570186106658694591255082328534418374360153353508685804704802913103680305746516951377327385201990647210730347569355830442376528777209260780655682546433155600580357369572884780775575611499065142320889004820168230755458590986974300126682674480379217710611522478874246995173079077641494595240136684092125712584578575651533331954708587244478455678261700599132019071802880310508644685449344612383863242136104390677176763744233328409301446867352986045433943888127641620214386815054352391955268355701363117221090643449608246716752612676490828065974700684827030629937571204349855163821276819756903404499326137493216774984484734850419386865117220179246202067583430542457060782241037437677712133124641561170435466732802906683899536979863034906361473697056311043620808299831370191425111919001047943587664751246709213406632183205028286877674702564542002072967088419746406739634543799747981077294662963457247282521566213553102129290521623400562186223439485449928763590855122950426100792424029408129174778691395392244717509353140742994610931454476052468089201300429687733276264267782454452089706856028731474300274300880198494744480491972178647853856090919349709258396917194487318354353059791982026417539203904337510067446638992788086007604133995895798589923042269595012810869683934882971693805292021192624595515914985637695016117141225783038979390287441839358886305989614069155584254333047941770929042552494012397062206327979448296628496442740322280916569559392230046309354537461138222402163094779891346941407964341940016504824189799964596909680269274030473196709552025031191097867131561281143669206276204582704166738901450294747388369008800177084584398300614200147518569939887701643575948108537761707120221301867714176877138585734101845585811195891102386192579192620459296826942801769580118556457239839020290424382328924449053840163333070102402048172976565921640073565860542446816498196874705734796672718591072303176167346327379076856077911903194288301178566463922183677989371960216997374695227116067498536317534298819584241210060981247154726944333522374683959913476346846283693953506375978192870831188657886886093167837788221621140526643157692454807057056068422478952893236226873123451201156712615957174020209591905324206146647311724105958281089091595456341445392258490951435594393756096271201216374948422744942554377057015474629803495547416519861708663351384050934844643824622490257018753405870162360479103037902187576202567784082029912639237303754913284058638953197293017767447141779792425749284367498323480095552033627256007851607735424261518380358480295841280030354312997803189640946529316804298527228239108177697229758860895585959481382327816876767052191239769551889276791070262392412890241957877135048410240273385002064710231873677876786159078894692377385739141381778860523816038934421242017106528743489072186008556064926523649817594356626148045657033228404737796022110452352123463119300881585522471190435818913626378386327938076709231591289949109471402291226455763145461894218109457441416601734058509914169360880185994497549132948865806681803903691138872268256343847835570482480867950106748234383079154210411009405261232262267848339169411990285466892291272055151681264178656080845021804657186531903686531279912705600435436307709414717574505297513503015834952026215356713243171205709697168342624163675465985781802923176428506685222287802416289459850964688275891122330637346285537844185833241261252131526627858724836861061082655907780298560227439034252552235434107828877522727009277894544361888693805116317359525555290878525278107027254408833495899596106038113518522742569132707190271668685750399353773406677493728634708899660911325128832318759132344753277193284963729325876837076733039701307466387600415316497765839599033343464511246573436735292774141199410754368254406170761047420259481325495100479809632802048048294785641114297337663275577191463733464897280279549137452773313163774733019434763190637765258670967699725049149911395264645614353953049336690481193458446325936899311993342100379446487927265747762190768654071529433391340565297382267005420532863061010694318042842383372585683953116949408306962054202887446866294280066511330501812277818639308676655968944756920645617358072540612748527014303197892620107563678641558236768795927396866930799472532420316581035815172467357605201903106689317502823177670685347528054237321485462057993549250970133832756726799581294775839892715939678663968169595176904403641199840551082472993581931077231425573504469406512304950420831252341902314301528182155191701044022108193695124887734688734946747634241619403502653106316047185289033315230661380317078031147895993124431848203168733762907083670838043255751460950757615380279353930685585160936308109868054457821618789371208187669685742724899107856155445289057112118775078715161692041764349454870646152607966833608929870915111368429030788939950286615602825637759585925206600579310663766966285561088116308372000248981229187329222813895098250487030183096500157031686012290036596564550274829148878835527127652833556441277588549168652914931536266587664707504260133160901219730693533533647222642993968268738732779464913454376651229632842018855443114199849873030676108016515543298686862047841410137067523065794709789896534691598747774648622552566922118370662043753269535295868887192032060513793915182582771469003417273292228273085656346431447752302891741143831546118386931987125371711931133185275748442828923572267165977259817950236236935959631271709856779213553544783866284116238502565182700378809591690425744270728390356615094933612673487634862458318540509020950719125307103692884070335368723709689611757749809454864638904225532506636616012324685303252215899635301223950672798125461417124591937864619638952204137681236841018809188484016648147669419545943530693771579226448549593978615941101759392036184870241047957937800062537254644373430911891382318789031876878518740665800059188431383839019429622391143806851502251180339250277315886826699401512072185309515452535614049185331405074892602841189066547719868267469888770973265576194468590029852353481815790719452533399745596690956030003924745554316865776115075640365755212928793661852426608196025531377317088034988246959462841802283906457904768227005106309086197878143416538621704349116431372147463362015747752172248987902502250977810522205142260526894504868276066953728569369878000587396611902870138522985333858193843484589963975270011256206925555604962718525388811345928632035881417496056984662188863939262776238937854651717681067002623334272512074453716624452720751563562849059544334019185256880509881612390920528427923272471410736419260094930064751827584642771000395836761361449828951275191319316054917830702390248274418431614488695150236677538323136519488358401036007771962379264426935022102626844731119098152511247542293726048670420050331826421468913528723824105045204224246916863794301170646453296911613155254761815752630056969844887068731086126075475816467792952345300999852295776477749727850844459714016855810813274804686747419530874879897654196528028042371202400588380455929790371877484619604940737229946314495972475805211453371237510397964937920145008103487128721675693440292772566220094973540797669942102086774406721426872175944469753742081150388749325452937883727804329662906773377370411215492330154418946832707166679348657331871965108050497914295494961764482720330450956273779322612084926104038484939776656091479400157369801400092813002302081257604301838396110688164363927927503337495231859719386859334814075946616888424770712734246571856611453903496767258224125889293707936560314302024862982983596350109754917238918786454065532991376680100853623826741898204794090087836169541133199239293659884578557307919538255705334059043685891336704613194208104930432343938830931637080103251143099625760137269528158393066635621508660321659644543745147758998448734969775749393130469156567410268022708704888967917872254647156761756991961397982738687468188366922895223082554898457152635757190386140502227044237135093945766992806426328715850580860101976260421009632219737963105270195491222204473619050866141375773791427677638889147526888157683888541652001085120776646547331100716069616669258414949820962371538379847036507376372067131173335873480322487500777323323261472858164467943196000478662478850698144237680819411930126681399463623213714706853479433263388420318671456390645107931796049400074631426485141893081123313963639602269491486399711901855176268651314385538673127194114193653617519250651082270700628018369448893696320301660962423066501777952684071336626083748632200005842224500838679149101069203398793232177942304089013573011253005361354291107512309142352179482456800759904218028293164957880999360859348963769406067537627155498567118866587924598786561573851990181606110994892546846931544814670726933263367879766089934393147074237123014918402897991255154241223631515706709861201600839805591490458337075064128911750141214890931044165824093610524104602640772535720815999266751224184975794223657859994708773348337480872693691369118990911904758347499874431777435828378620246242340650125693979262622962805826513155962538240846000363813463630617151798214639780958734975491180814989049531431609916733338593090479787470773970600968134127822528340039812358102320972659659868850425331276346316484956750755211740795312336113351169751111290816797842436048530644645869506697905011464012125008664504339489651145775328770439815653695728139414824559184356538697902761092653570793714188666894399564895444502893042276589567438074189460692826505070461372513000716260766527422571910471202441035022118247760055457056587287330577657546661613704614260751769901155063505558046955457604555524288138012958416692652002497046098104689830585149998036106939153399487609961719000269609147434306080896010424143837964650049620373663233125755874185805297005953677443707160404256364612680099015145917974071181960674074936710292598226108483649813264460752524405447027029751008926174949868466409346148407950537690237177136523754830826685252019371380756023192735767419521394233866091631717743021250948734902873647136384240192923204774401697619475333494848069008544896351522737879411178344175932252638270878973950671105385656769427883119547247246664650700894895747926345984970656583253135448997487884475573193203513988439199757590061234770100647180351934907216227264552927789584990636856799273852230363568343577421338844628134078630855516311781175372160623220716342304483765788835764409323728678740271279002341901980981116273502775138888645909641177063691902995298656233096779466978038093567050769968955953881681988899858848164515097425268611322820262943924367824830133251590258026548858275415656733921158521103608893896938853241834969065210697108978098084606203412124581599063953103838784668395385984214663367003148544502129762473840074086686664876451876995316894513474600556804200168010765819852116575641962282963721751061759277389826645715269009135767194951210242967443470660203989704740906869675275435920169370529087449214844556251324565120197560249917066831851082049253173458097776160469389092429012250052889993174341293012394816947339508990392786219113936798420708073870382957715399170755029789874901658369316726263962196019252991440445984178764996542518894847427876900056928599793720805597358064512391380051138118672747424396463446178647332235280921039828691966875933319003367039592038844083243881922301761657453503315560542479095217461971265727414236265150234177269922651801075155932088404493502977848557343941035808376694787710572627598490968253113465779218645148503377774826441407175938790487802610189278194171919922731762704664356043707068721574382762822899744140652445570371786586281052357052667504598704412255833151998032959781162488727421862921329585758713475930236819054377695446458615494101024498147023714749246924095249320295973416522863669535165910413223826008446900918793393860595668899930258861795166181906549798037103952371672509608552922054288188247523293148760118090860413130445803926781880939093959836474823703506180783568214908851375764768480931665032169453251448974128911195121464929557867719927971715925927608576637856022187822087958359536323218038461230418244886377606835377194407057449223918702503336580446830390586162319977705195531431864896806083304270173433760951357559367889647536913951466917737810341137710774781663346029207680817010606043871946417173450190967055392946879354167694669002591022604721279896005735164378379829770142156178120644525462520588515493544025879574358740018952075921703997728706303055401299637794976359615769317407063167718820899520971151245468373015480222941445331527208972093096716794238333272714473180336955204706432391495098853593427215747853781004826977504903192721208349471764137704722059269614735424973245505654375031330373224908334257058588854070583197060415268949318423097392077593694620217321626922412082787917600004771382205264531581107902399089088502590758983242048420790079624489765425052528020907186823049276430608324416896409588286841921161198445453212543649951941141143435169343415076107563294192377085389069748740481159533506791732826132322457878541536463666523981023101913389445205273913757092688010374509542191659067669213664519518657136190713905404776798433106855420217653220096436593491585319863729788252821430774855903214069350861861661367356063476753050951115225534343806563579634080132023538088091016340913772397138570686706590915451310805562966644991345784044098441002844370925814274995968852503224217165557042826153093567123276235373574566588639426164757740982225483978708152922754060931644548419381332850838527982066616938476821166140780612970684349086054839613353789763265971122132820678936946633716956176378548654186745849375865890421907204845628097861442118806439613581084782977398998315788101566767223975973949116678718312733361275475641687363731970190652272581240236658446353072633188340282492481220501217655015675862958732487907063523168455597808603178306838168297032348181206767722922007993199324507575754672363321599474871876161127988317575095409308638977442058971210307439903164165851568268039661638065190774037973044059441270905406889119390031075468959802727747436805720855994314078762205618198241631844525696174328839433048484646950723642134218742460389341492154537603769391488483385128937975392839181360904807312120318119789853239890376555961921610780309587322439661315238511729437840847395409031634614830198647826074965975401489893753454379045511749323679719655980997840582204367618001264772688245663496922683918322563915050253291441279638242115030516081015374842901128569162719042843791538088917040915760631113621396288396166814968376818157994447063444949710607588419365299377608938426847767426495093976352226629888715932042367525661481008751501959952194950947720602527090480882046874411041940547347906791290754197601956045204496314836479996200068417221893629984603516848751034841661073591826592234943467385470668229459154709082487644231008817887992321610445283734829908019623139439791232941846441808521159184161855387340774660702560223412879477358738676402138223120247581392215192626251614884230572070386817559588453451558723468671589871425234364143629982249855948513828704893090348374992657920386547693175113794927966400409403926000325262936341007746879406473671637391713696014686470814448154903593080411925351633778831301332384503968305717844988779111957373388274768929092329710131215327673338535714513819862861334959745243300000389262510296062287133731760069468683933033875994170565858915133382384524006698664955564412453465645002957523021726902095393077889987575862428795774747470432138787477254923296303799803864489426173442270828764543793155946771914956942940476381223784572793352001307680149725104872531690612851707690097940320876234187042339806229695111251554079001521945707723625846672627345605093615684445184661142418355724762540684112746327361271614404033505084727868375331158229225003060953926025164974319791013617694677267082563239278919787154423592418811029815111263219083784663811632421679708991349061112014812124687139414723795297896769921883979867089489756146482221176239557439693332005077105444937858947573584059311248274622035063038700728595026838683279042151810882472345363420515150929868763048741724389711749079970084412718501994333993196575138521886109674456164561826438352601352051109503264631853502164157166344513380353825168406803839354021776661450434882607440403812849072091417404075136847622245298163108538594923798717442937059893072170235225663235347469436843370340720713800697264194629963483276648754113360165698441706112757072009814081229749265388749316224281924122373550046884845226268021111602007330336408834520659738403588103506658002869642828062838918527315736719062535173649535292500589680630561325347344255707330059251805989801352388085844678566567713772432283804413116323543449591857579648874925376735877876070367335227389846395042123288510819484760749267032067244034557331686231713535271074162392342295911469103717263696381114355457955448164119480863224384114299312290876019376057847373207006679948217469092446387861158247464015028953883303247920416241050498896974855383380417773186332077999706595951153035842338975790250054067432931900525956746981391261009158759481273703047151353208949161665027425097030459518167319050160140406211506417092839993665177076494087264039866920523198151145930773413873914899272906806730374757067401453988749179092450747682152004141562434073627230304183153693545875329040481851443604880489718919571211615624789139991186505710214986121623796448830868446933302008106281849103689628319479966740738162459198917325999503496078055731130634557802897294690634595395234193960354487070487031856227038152988044884623976828055770663126314085535688085400047679535867205260675331365758808693865174568943693199079898147950278917239776805369944138907679099664272028853831640896340849709453842165172076970143659187444637453795856078611412294780440146498268620596426432201586998177222287403283498136657997104651987416307127544125633440912131702173240340280469264588256283225332898459175817556312423292023051272796978025596695732425177541268552053211466083819375867757507078518427202476222404001459612580947100773312039128872247070699289063399205640627333288821131458748238373040691739678413321241961234264114119325026206101106307308275513817527471028628168491420181748938001168830966665732483118287303369900974130928175403359628821350360375819169064486022287374335513722158379022186773941951996615821193623207550007076257435585091521102981704573943235854785759993928385028550358730307867190300206161808091797496457084951508310095392348012920802020548165744094090882836166195813365747335490259034673872317886673938992698493797095001844589857306336051594416539290832325472401419878098432268607072932462024228659321029536890025697624538100817581485444786091148537966775799741022090179737399358364364653469402345234736882317295467742071958386495930378512328911202097343108573572483498699745818752935660547253336542277524504922398376337722458669660988426761457121909462005901124398636219171563693638545022578435074169982862358266007751496098610901540612478670960828290319073549053755671896360657144626171438696641407219338043418397380789526447305810380113865836666893925657164231146739934669256024319696467894203639990317912435019302998021454020219422686816818999246143884018097343235506194923265030995893381358660297791764151827846233202225791917157340439202306241790381370340823516751819237454883851278709762073255817857610776524616219503459542470468498141041568170467463023749056240828230882982603552340091192175279750940622237385318228693079482929953493873390153371404434658530758905256514413772947231361731865924514398619644538039895303754150948593012085340660017386414804203946310052313841165540803928902253788670511583777231843742633016499832785340752172169241872496259794048642036715007394150259085009800127157577485077188293560878189563654126821435026769284855569357483361505872123957955978926027570740230211625588202951060695570222738980632808538315855206241250113419183357576904452468580878993600074907094073062210720700674033227619121300896324665458785608822302458253836019230193384940986840168099685671063630721330786697057398307157919068992950403510180553246319246848930054519576878207478006801997228581844498659917157584929057641001673448960545737418265137844612187047105105217263418554196369472558910090071528830011931374091139446681321060874979577591389285420563678594860675602541314844426416451343340476238717112856418440309231520262369814908152692211711171605033733112954303557889665923704648716021329703510734894694814221647923334846697363676337112687976125745272093708198802024597711205908850890893900628341290327979102338630482893533512161602501295493258148425891089773389805683154705977183915739728651639946239057453090439717770690056698143243998318970688204494646060096936052841115583057592067881271786026148427020652847234606783437483924425231896998634915620335177204345059588250815260355435731529745990353014892345913624878806098245164906872346861629911441759980706387127543107903301681373563592990539864584275590804988548120884388832127794730750367878918519840594132991058546130342756732660423990796598595192212325991293777899806327173893276990220753849821709942521349338547749757322671204250246754499861265963759904609538747347575665830202358306773482023194421347695077008874041911651878463535128394238139151230745887343755432628988848495410936989342988869784424398773318827260923880329742603949425221954310538184499372839606374831914077676228944533429602447044243757656991762430356594056638028859720002223012014245214006862445674155752230086039944147998239178519227976752957801442474399317152841823480843344784006224702213586070767966135009910098988390822310637718149284011130937264414097418271381082715835092897072541672516236040702255722969817967078777407243032019524418081189530676627742904108498543106120450589697121987010498678414243369621301354556057054145962367650111335394906031309776934662341410507048186509003506613867920033487728546744639047446173721240411629887468506958156882935274809680113401589206580339404944958669524299635344199449193295109045299094126303277567187728746347291318727192061592924752473796424384505833242596656499069158816007116035693320915419161374715900824990057716288169776511952589747960568690952031697817651480197685707284231982155552231874667625343396136951323447785411791358385528309873215848955970506816748580198872801189232231133639837723341282117879729143037808785304464013544781260274953775792843326479494021921740144214325168673914560713797238316407540992563018371397905463601834108512308007718775743453204009531742929597164510918342031815960082220171140770478462337105451720292292401363534273718836391659357757247167924837435731213574564378105948661116572433172796721923352893940255451101091592136732673977977475305626647368260976052268213316928113446431768464403675404089325241340750677670054330573639531598720160783795090349330582869992250536744979768596921047267927964980779322967445511826758625024533634394113601250746343723851858003406000773708241116558804747685006334516922447360944685933668792052306409430583887796358452960518394617059487238785581294721909397538135035694101367350867104176928365638871419943950602830657646230859317947591881574708342997159778159603972203960375256963688588133663014363737333365773363043252477595196111305152722031778059453045122731657983778532815430086581723485078379513788431032328538745336225302665792276170931770440884158789534510046181807480158628198508099573004445511025659999933098532558239900499656975568114129893563675024097428574397958663825456769584184545204336210147096515497026566215205578791956006584220672508427646447682280279379865689927416786365012705481267719275112905203430212078474888099311193133658486695405046584572678003336849474716353920935960593941865801397615111448467577116899567059691039976687487468901498655293058224552896938661955531968524362914314979666136690562173800338882913068944624117941273684501505852027073937623244620806152444859453923210280074352375821235370777882056619665057723191421539711784143069067889570880265005959429999566304030067467376942661138423541634406760901861072909612880703262420979720623619359258946355012675180522413723697413301099225098452735928133854702812228371100473121080414674561430488898469857766518894425548539873950342647653243272518983150084904709808551345922826921261647126666281905923684490083850334526981914609725145426140902566262298253023053049689792372097464020291540378788578429503040893436407502058750758648364034498716461133842641623690408961375734329254291671809924895524608331651899523083589097194360070597042078395951059164558926654640539847528752250575465477762314190692040377439456160615175607396560610588168978081586123871633352030229675651364343876865239512163737906645984285032529432843608994176705641945911754336539719211095420180937655799563368464484809687135401208971799210011959418188354335382299654487701391739051817387402695223123382339166038002321922515933335636371047350063413445333592792962538737659397958312427972234570006235641854853568979052922977839940560126954992377460590181662524360525123472501760457710602926363751724516360957249781999095510681062118614224969053118812911127265088296773098108836429890932281609920659256128987462083257107155788303393203304339175596626565831666562758518163403687971858770713875239320023607767156876433174911453085295340634532187496912892336289478463357286058230348830698816291361668468351667053024184160321536462872410452922168512558260687010435383785830739852780325313543987975018638812101920313585849767346103389065885906657972945617772175319002594491015598807585294836404407413444540574028618816178605427583800558488728629151374006762592287722700532017305726054383134393232350607202976716431276217035658500101769014330198545406410499010859732405688122490021850828891402985489665254584427347753912043025494032475041498313211575202369817278583771586840848752793148715670919199547465175630744245888407578514180785427336414327554547899892761908350801412633780164202792602903382150847464957129122595918272293266614337419383334078683749137647789132765917885388597162794558846517237213374499512509983043510970967427471098672847777397714818537626490994658685305443081615052898423921662337307895277352402622790694317543241742332284604287054786780354732287842666875532928073756281408335859594737809631605496248823990047846571643576812832062626109241473233000171372466615179231196203803304325654605264072079009299169711352697442179384689859824758929984306222921608639309535293022867415308122039172499737239036399408009173508155544397246538781473697016328777223790658180570665000293405447360964982963982570210783557973863314760483189846931019132135083313141771023073640597465204671945303902615729932691322691025835794740887190070231891018864797619770991144138254477797159252131075533074130592462896418066293848205875868216859348109334407360393894934156250597862554233743317649531348278753626163881232278313143585814999367687813949761727139968712948258623283109026729881139466727137260027699011704130684039722830700757897451151807809197794892174800676911353463069153003383996823100472921358849072386646086632095959569154735032449504313724891486451717208741565265217563605966392640306842184898963384930984721589771026275361048393150450884482644980294097309244448202748442773158127032804997197261288917592639893034781555272825020051532007495656334132598581278409432404169220205668823853599839710863820661483997704034499240131390438776672489594042168415571970381868619934528140890600462037853781239228436219239799221852827139668523370442939958295794618637522854847081058495180590874034920632540510503840790472248537688459010355902985972011336792394433725858081194985065284211048968826059734894100182778353201558158252553508986703499322958148988203449114579203438349547247103095445481425653742281045239421628766365146562442404220380561801076473896555048387804019744465074890107453354846897476990030717580664948065423492976417042788351224872244731803989906437321094132113070865972241352311512872575238656953978587580899252123437440268417555066139698467595977666393270869689148122017800754036103889530270289080207504884004360895025086853436446167164493971594140145529808526625861153544767521764429021891727851567199607029985466676404640939458716328303473523502225417915801699761814977806590692072151442514617586952930370385378082017345415762770187364856668998112305948166755730320306058837259873314284830710609455754315065977430143002892522941328678319258338514769939689004631075436010376371355758097617993590214471194656400762303396174025012973087915500360470962769422644200016912078928715051297664336148068691089979120262374939112529471807650391675270036438947159234553297742275658653016716740487570918067979060661277529898770976715402502488625507360008067111902566537715556611044706845263152658303574511382022500505041106033915821872201601709021120296496189170313346262761888074567046870184433559386128999377863983570353522063819568993101696600631992022774374496167060069838755293868724721239326227425103899863142649619512072213125068596377987555473962261901179990906397632979687943708938577837821171893282005295541071042702723210845176359635228669516116647516262459494028049103008738991374760452439433985543353694910204754630087725742958030004398976625306458407567465780276594242656635156327175248883931196297922299913695291168277454322183496766558735322566743604500964117652933951366823155975506682443176129754995097120347266041124538798725643956506781752297600955342881919216543566753133436856065501429479171389948478828565302945203917894334831232139931754750740673584020456339211623226347102135911722038283583606785730349249923563572154999277132829489600784047697803542344795018852663633380626291047250608908460837935345898876944732699306154193762506884295413328859647631382795402011522932116180835828511332467249746807521074314752027750536777054533020647168556049014517458203832863056514043254749995621137256831044403462061274752432121261377913251338034894358554839869878560704826076328581545741364559503896337425652993031745384559720448467548487790536228753651652919700509323155350385854791952329570304923548587709175429286134957666537700759504723140785508895731219922918983716645783626415211295118734450934340739411070964618673995090368665468656172205116575685716067276859973504787956359170328916226142003971245551945522915612267389797296588386608652065813493739073532370813426856886599339420188098681593422518423296731957225323821966633114617545214465185450125157617142114904129276585618823089369463549188663541217199246569823271804877997158212855487884215841777099240357737883220595035077157745911882130647941754466158319624054631566575199152718250614824275612334474689607056448452399444598514713630860659866809683474926602066013069566108981141404026380187727924201038839003042959050118930640341631969067492525734144402901775908084419491863110629057855072324382746593065829662519999192853722508897293166904099592040584605447071077421294097274427663963197591717805520645546465904659581564132654827946318924161139261871553067380797814998991390336162393251090339095947718044358994562916682282350786221581484691096632562723722267160997798938075942258222741747240191950563051380931457887648272438160893056267423379035385763511953750961804920813669756384612287575824617580171306944063733365700825970589609759015887187303206257398490833404450489261156085919858147386530422446005751737183094763241566853350210794278988528833056854333154802514304850187023902179138258830409734884073047724749104501968483821902480732294456166305361620581889509180363356235455521822488324320094248465975443395198084694121416295545670835621808274121509646481214090217954312861718196023732355006419937742442359348750973686645680194531150286884948496006960569758569572538810953559849607668179237242531478665307985961661130630725623457812508459831264256424064155069907861093034201264642453793879887946243373185267904219889060929343311505007450334841690507701450777989933764252274245386645478177607243382800583271284892061173763996021369702519279814365077242005866106191682491989788525753614407829128260064434827918849444240107750453864477245773018740801807651547874798405833473870893531493962175211642271875854398870648251135972593263849889490534071005327088590523191177747655063387737337710979726886408141544284660107193380507527055489021044780656663408894398634984798222325775330759263990212461999381397669049584529031800093321312596727899240044340187561482181634953564436508797137510952270784316750987795468783364335341258990023573909520127752927159073811268103836720174098333170573517088194628173403109089755159820090056185841733808026384010116579968064044427312260777319058028224978299721934166943440104080751268293076625045836750508730307294856012573920038402491559753757325792942721826842110681067968376732179704361769820753677818979069981995331366117410708123746448339357807935304929776877266548992177825935675892874554847822892478429792207379675950400661211346032077449482991805781087967692145714238384805769188718459749019671638214003107984636249626820523395897932116036697766341004187771789185247046532761451975964632783568979213869457591993808350991100891427006641060734278917700760806155878765128004981086329073814504274867326796492889540443515897569294551052918105166515886173452065142363380629256296348943047538727056491390104069821320940225164125678547166330752267279622406672616370090904993763795401599230568122478317688512426683028192326733390944672147556131498142447561527516889823346190653025559848995196262710584060496289859003067761895399541360996107781858784962655562164693983198429301793843883459342097105379535844073985336840063874464310149705452803910671876154430947163918215907924502643779937700183629052824274856918208141850079290178617574917722615459268875670492495643310643245367697306327838968936616580002602888449595698180816212520333518039161960368425664820006106989000001957742557057647030932693344990359519072760517977119855100521939218006867775106346306354974609303277550255752045992733711296268824033279887083955674869834856993664639788480882653291138967699547589748477305504387872435944729218336375760669419056075319507371948088293099049466254855934810117716764128195361640348766320270555193662428273519299209566427874696847107360929205969536420487431928641305908776572811684609117029514236565082265733411370125254802534979829527237819359604125036354147292374803626075796878702384600657407735374396408818740784013196953728806336394239267596862981765537353433418274187420204263706048692901903791670240469712044886673984689030333269095686788290645593980496420036265661890072352909688768709713057812130782596772765282980701760774995056578681731293946478851966724422464143157810911955652036992632320819812213252146658775780193244949427457092358371703684505365087079526903918663817763174640722091694856819472929385818279982232670913548692429430616372192449338380656468220521339028805954049024966799244077621514040408517765389907282981424345227863968358403627946993083136194118542711002070082193675186646252023833389380788911056557280022341409109115842494332695050970571432325246473694653572046025695009096520171063591360351113025058006015350734997219631633222297428064980145705464857817665841663782208825021710094511198272479338544473959613054314089936678897697062115107956142940774127435013759922799533756954094518434408168560453795870750653228062782968637517153100287054477991991439597007205527134972256113814836086444749936404924087327464582895880301535403837266619415044552394722234491703716821027216365973627322264766970742618876356971038985413375159189741706281179230702349883012126913965769207574697771787344375938835292973338068722745456965991642744614959338115664349737392520470421984817468337945372227345285406011831506247954804627730866957714854634304131271463533706135102146827614009695081532840202112527632508752911274468694761637832214496164583239225609671197940945410339607286268196846178027771910809240246477866144880070512476392597047759425677429594023382647071106198608515855941904944137225572709197369469551425881658241588687756786908399600360936301737045928780311776234499890287866947534871207549211822466023284929904952342157889385282380000619339775587005233908291910174440453124100482405657880270830393069075889465123394839324297037988285740490281493664079389018574441453428805623043168508837292366573679700264458672810886779771041908196883543048432373944198475532360225345402486853511916920307326270801453248846435701326649295121042305168029424034233866604510769736070214412827131749742098719634942606566392240341593882680518793251975645168419761155705219314998117696969436967927341564485654501518831477470222536811959165027510778675413666114192560508754495591160843050624344139054875799023074283628404170355494191492185638519666044383767979106218305373979389421603792982850849164841049400048682746433679994078742314428332585822228777325491504762868526874690122280099121315351372016654494966288149222640256988540288061529140316356846147717021389493453868321603200338878429620272073121036541003041824221040734918727267033452318568946396009449819623937325889341344108445644316131591777425931586414661049099737775722809259804944784715741375636970995612958667824691605293041335916799514521918430926445089496148873356788868442183708584867719749362894875928107464408520045025301589502191048699954230336135687043027196244909014178193046378366920957649110461131208026719024840988641516711796214812482092575435640550395357318654371514719934339175787502121475266670201073316044527485680687516427048154769952551951384046883138402059801910613800165581747212750250453844406282921492882676934898648248893332886246319328753809863466098673543687952927667773777338779820154533151924107436133127864776758323707167971311392600798939022016283592740084230471631872576543070204619591606203526127501737704640350073261980956000481743563518062830286706676118249255868921432701425282877968513476721726017767865315323333493732761146298608169864043616076865732628157573178678735573597119949333371369085583418624531198166426115616177161169024244862438824734619612778757684729785300477171460411827606819588978778608254903583661916374975719546993758437055473578037254204434776874834657681061142096475157259965848569810871751442484744431082782380636574895662835510756069479434501547608413092465108500217501209334286221256938630373554689543094651582757695176225154233556580590846665541321196635857048549459122916193044636771092396149532347817420286623837553456232417012984948838492492275545244885582447690980100171524160354929145549117302278394708349170384332634589283260840479207924115049422949797806589568098886184273537471368264531803476332891512749711427469104441277880960562523311482539766916116608144034155471247997400515646252186027976119991763309222211980328473519978607979212938493177172205098182927633455359805643926430974694906730729178278691523754910745933034473596860157961743927331970819756004494640546734329639798594124179664644167402235911947202158281148918009162593421373187527517428616956285632597511267063646148924293683340042988284632065172974923939609660151739698987477842219535193874744149444687926463800259558332564680590835365674358911255069578095199960135741733147688527014955308866739599744291695058584765717410669657514294789332517715216276522186052248377642945796451329894380544677689071760880648356584744499554670891910011955517715765818011338923852471130098947886670302253564371314417818963327364367369245883178384192715428202955844660941710137898955832019658971682070243655224947792841605606499810810144092671127361887433956221105554024522280414087113941542192848128179713797409511512866932397270620234752428978562057025445577278152778576504940237003132250416440731608213651963381181737956330080940492025597728734170536019739334468080316197967803122583888746393025546139577152913375065477946422523500132253554692932584430642965325693731766919447931572165181478227973612204753874441725185916282395230886179979518367933935371397592525542136175230485352569939800497269020225589198918281585882738350356691948710921452786308553877948294358460355868946078427196506655884633794252401972873224149892975905401047853593234680187849582537065900769355085505336549433482058430829439247076900203316551005894006048190581943985785323929708440388101493175325313911354142787949460468605439208556588033209247167142885075525597174404640929945673324134137630511626778134916135748264841044679770611329373854194239997694388080070354444147054622325849640930462555065196717681362116607544932067026031520473930249650686291852134797640388202898641085155973958841903552626377020628886057314071460569069008802016250974116098170068281088809963883839698202339682832601384757427189608075975029089563981760313727417070871585501612096040231134358769141209894410840462777676669075992778869219136736672758828083005065478005414917470183639225151126992200875282588378527657375671115531062551268680521875181294589118017006791695305401306781035544352019574256943534961280772320512611810108842371607308750345318514759598782027230723964972363047585391591948013142046103669085854615834484196422524525176419393026267441924947619992405979181932087747358127600726837393516737261392410736955388903088498754304813099319044250566961885229993513036177316660887149022908101022746596244767892184439416168486699471079223279962536471122996805140138096038540033205152080379545103986123820970923223242020648153783899608925182302829535852619070485599999312093553287795853871181691136341751212435329662702673665909565769271988901833151226264093045071088569613997605772181419995421871286346747234101327385677201855146213745318663033847323728764554940754622149682590829565318755815133918687367315581530266759456967481634466116081897002915252152226316251358717707198423237775907235842651421545993125375248927977009943938592660991668628741068371718027303689117796840700518855636015221083403114069683471352005014974373393607756697428079767153799014509720427287848758735826075963505404610505365036956248207213992671765836810079058242433538994319082818829985798329678418836379879211283689058572319319495014936761779284663836728345979552026760804120092007219941117892998445109886305750684943148334357516361285790187280727201646931492051352150298188216231760199135038654780733469680031141760897692596403061736991137448644163156571639441245101015136665697310570795080493758393910037771181823102938740121002843868235484363548104329499690924132290923574662110432972836841211845159827499390712993382400609723634117415064214692438824312933140724806444985862173823279508156087474070112017875351509500247521679652089929844697078883166819921897031174828072471582337288230319013426999023565681575383079197884754128734655761461023391940046544253719213580976978962445683604361375643538157740029572177918610300118152348606678150031347955278512714434992672389235130961464829340087343269534414024492116459165806366655449928615685754744102134352229830056979371521316075475418168810854305583790121630901739704870053069696820033923542568682558889865348108341065836230895719917660767857475515895579835095877970395123785084317297694805660071501874840323974924630949048745638220698281534599518058906118954910056112979138356618281949368565024049245817341105816478855350307700503601016661476424537890049231865913498506017776441129207826829114126728466231127800275030125203494515425259592332529032405007731727156564099343111396555744015645951545710250161322093027567780078818620585991243474876643130707165125675288428362848458572432955200103310790385493123477000619216767948139094343409428181321378307522302112939957825029398635553850773824007158794743627092905996539128088207620823291123702527583322123194817528233150809236586572013121470748306414502942612383293262510844078825029987644531237747260391633903694326007066021565665850269152301248270455876415264787576176769329646611979600699554417439421626386292549924946143419144042395782911044242748117705173449459242218087931187135578756433106591256993735544284497965940412793473920637131220189401588343269348262922652894841442068732694453855998115631842243594708649980461969302207514368976925042842662317865193719529972835992483915313127745597912070770204501924488556615448003816183237162538353740910737553195878182607147453554358370931818591251363155925109809248481025004558630460858472100768457171480948531797553262553962150759346936410085399607566683079030416197127329639442738390711377231522753660007607786992522782076666588676683842684812682339600945494719810855986037758432878763408098201865318235859889558722011302445185452315576050122466977024479865896979910742699580125471677944423199125041009383147303683637827841501920774934211356863383593663256473440053267432385313434190424154273384622321174150458773567487459767267743221924082377189241275342353372317927653458884806211071481504356117346697992696364037312146376969847676589006604033253611105199947877695193381389871065703308116562059602769566727479910713506630222378038629340328489920170524617328644878704824035700452042499660279229403160064651792141209469131238546982484283661731836074437278780809430278937950832585680798482167834687856514308104457438049777163321896983055634130457019467088839895650386628238011343734104885889466213071155796976621315389041633849906106366510871238577820113766133846387563854841677308910624299639825693890442954759606952250452999897290830245438471915872669079371029009572228369175018041686609983638500300210966195563889928246047088630236907125061909784226685009153901096976284864124165522454541704294728151454423736810979796279205388955735453498822873570844676404974095484282143172618974127394240688994830826368501198854425453895999941363831782190035537798317817062813512905736553403954108303457537272208979185465328769952016088314671918043499470599957547488040966031182225008079289614256270264544352420039199712586582897317710788491938528885462402386589971553843786627154575700609211320132422220408801772482340664559271015396338470826493821888475449320791431871594137409334983765429485144644357404717730082715210613441407778858769903463385175427443455424023072224566242689987058700480991773380378874533874087383101658535048797869787895008149971268300482504672877750654921220302146282756999650545600179360434859741824242313731860435036166623515656191100293156953263973731169861286528279993130748509580643833835747210103675591685724655149313287071948695409594772112180736432434332994806071954480477568460471168307816893550326079742876066717613692438336469521799717270101900372970154823266929182561769719436099136742218073602878804233251681699236022188997700582594389321924245009015373114805206954562180704683335694981705097585962021044095379824825450881228988228591277409145760763758506596275654187782668149436826844361011064228140200293541679737730668781848551634359595505085436626309980860941823915923041350089163572663195117676521936870006514327684870999577336951929780786463869570589458065370084800611246907183439912559348919887532734346885588151110415688893351394104715385976546330923175928794741158477682836361966913960598550604487322704949995489047137522808301861105743642200923028270435023076377590488755779555257793552449958572776292515665133611131422034523280021843142237769245394552281118035151205851971751036220236579580300531844580037552921395856408820733713766420651352393394819366827307966119069227494656560135533521294491533827878762920621931153816346515491638076399786942457590398985508278888501336667945426431388593821919048629102835721128169059518457659661086158506049380007406309356578408824397817010171895048967966642789126689555212955039528588777149826692510123290567231343108193477029696640798047466162711113434984085932717972212126705448750262963599201089347374721545937033044033007934764866320132165943054799240462863957270255078837227988477381555757593218612556907401117819642397116277767383936191027665792345206356681834079567409570774005923482328415478235335459389628107730642974067294389472651911853369669223525074866816448698303454093300125296294935908361336430148139246166401683619870834375544714131099438271922129854939336523934530811939795850294619012560654921503378820423246726821796149828753703195001050220827262030198976339911418681370408360630003816876546803451032856364866019237688348907687288471082749742944848874578728822636187245898687365470494689844420807965198732319394456268499035945003879277877133127757124792264328756101241239094248634201495994974331711727160091644722864395263449899280875586569688203614177081675055462911746200800053125120547427215899871542990066516440505667658879556623729555034111100216801001283188692086089198219835882696081248036475122950168917928223680436147618105689585946841871847848067383807634141492429949288121169559131873680480197859779671030785930274430061096000781139512664573811336152505526480148300017717215401689012728661593696090699792641333187809281251804811082310350933753545150738917600764807915217250665070460005617252028879435318843143446211500572340358509304911169670891764975644127715067144338024101543790615544275933946867138983544412266548419519144801019747218001381759799666907358699130388344246177411990414834399844128119481488400129673786281691723103906640931080139045254837961037963117676937969092747343868976410043724245644968819614277617644984734811082527177852018329258378343990216863930186827973628856037381728422181235630017233445560114945456859759622727501223505800268296929946207000796970252543131882469161628644278393678657168409630683910721811072060160381273246575528022807778315708280386636600152545129239864278659103649364696391476133811009499259699959024077794763779342382377893550831309198692476476600555854501687365208921667247684148504370818783707791666614226555690899374164370629231940020814308280604271292254822285115623866945400194754424835548786452590869910439453461985318075363673111751098626538565069133815758104367881749723085047020148163065172970637288500905395069003922399038827626010262196681685756367985439280329217388471968202255109842785850345978302014517367361315659277547544568239703120367939319324540068649586840957108969959380017023973662030553083662138687739642723660774751986815719674125113559328267727888478525176467320173387642365201212064482998469874897615693949830420163921080006268736309655639009567120832158047949813297086633020342790484474433232755483171740471824609444749030292739777009978401417499506744507861135070146689208414040620385518546338484571733515130889842952108483125714747095936365061929088843936255592261994884822786217073630414731324072123414616781281854641884463332641127004748223465504202732355164318508076106836613035781051634150816080340564953850732580983734363268954346611131031217124114193564290907431217628985443324181194827476242058315232783081566967980818961250338785617323315045257163807734897366156855436252320238176618169156826863307282752758784159896023049133427714857955587736754863965243159826105890135042117724924974777589074033290497443137996567146280115905828021728385378795566040900913105017942084626365930384828754859445176836597487609053084669954486333955135817400933562785074051909021994906544439003591221027547528729716068731466445937861103629824048134676434938098788195194381815461471201191859173723813445000122069196263152119541572011262528299580419154373937380858365910824623704406194631210368015610004439135534793433373416893908288268998457351189023939733391647326878426094141186206522781731402818246219935834789448496292881314251708401618344158800243479134307142449149074336284277764521422653340841627450490244641475926313627092921541428080467369741817075839018021072803381736800894170939108177787971177240014677631646030124204200580168116174652179620520260986654364418041905013106056320737886092792734656652184522300716684430539094602775237297970705382831219796593324599028059066916653640932168197332658941827909677824471998452795389395613327308850791888313269099179971450773976842135444910674184000409977973433909282642181108868511186109963158799450434760559859955389791578740187548443724709312489455733700454303803731268054377243549561788434198536004326383962678871473940704988952057492592281016364561825496783173706411884745457684171043678318345256104913835939152643398755495186864657845393460204332332971339455282346053076340111596804249684334283411590847425971074811221671499109290786137592736378556538658455991773477193479503668351682190033669925125426374609091509047796392849781286894880746422363759246691118821571137382295657380433390574126920561386486232911039483488336177853583977535763512608870128342995706230890435232897471535163830657977362998342765631504413436602953743641815867171684471767190067418912473979727903937614807429204406161458044595252458911472922848610518131237620252524187414987008844527900868097456821035418038079740775886853914283681468846065037280301657189330763089119131194105290470866177108731013483416117805993196090332051632240953795948323920030582690083996774496367598222604021858895824551853494903515284057886702209125953368553242691822318161893717203209676244539909239942452652010540594398673964941221800774466658765308064049875320855845841811075676596097084507091482111107185727588649012288076707665559750591474648083990021194939687117429267920473306133727764447011284638359629218422950911822667788761459262277737598819421533959241347274397202512052633455930491303654376927109527966450956102548678682630605002894668677119668560182523106647146994459958746404293585649051835724689703925223186423391580666182374489407993388051034377632736303786834632465953583553165690498739674352105218019354151322883513585722227063146398742368960963838904823865780576349648338302196034455908587117163442656231378467774277105635291150461085698855690906428577346336250028394408095708584892407213124469333714281595153834748965068053364463146516180927196131098128932377775349282308154950982899431149263303685638509951274636732901924356677581776450638064675087785662499042366414739188183604577259555191744189770069837173945643477574749810968505696909858854232373613137992924556418676753174841195595784627108141186478331808486668042720675864304996356007523902432064456190745530459755386246533034000517771149457601935834359546469278345920660437735428509284022454578461220678816308839064427893030248314656167311268616822837960298109659236978939668659833345834782642356854249580283477086288441103789422528202629729214728090423793715928252241828938616818159263392755076386893275291253379162400541298947980741291112428825509343523571967314846216103004043574013143213360049605227700337039883723821108275240789129496547209435599178521979934860710464710603422170140639951564049795551257838227355418257646543188884830059713285549318475421416467996476764064795225744204486456557488747408531707086810374641293732728056359484567990930068625035191080628876338945965825284596571536804528012798362448952321605982469863027985439580552852268305525878909158527261761261160486169187827284196858234710098925480222900076183620492513448657054774518247263371786172286041239016565326319126626151443511381243184633793098186909815570136791748372946619312218299892207029241052750406253149884909980463008721325016521599793404447299267177231212279599572718462665678441699644851770112321819677530614481681614622025457531447439025369968585559676598912116201415184069954359794934836542198538882849962014908313400064829596675633173982137549707278239023098701020168703737306333919679792096022127650654215153321236569770082894815470210092905147164210877210329619939429289123567364019303369915132124384591288718145293453176114027191416868278105642389660959142590915031403526655496440929838287751186698952513573713921609644063696995039320917514679785696653181948379381427492201845591279320671125241768817838153110631718349954701151656255285910099707623695870337617198127122585639528839496703435798074832745360141043098647014341544215249568662829891877986497658513634567664025903927486924662477946898558388568496932997681024048360951582894202649928097274899530605895267360731811589870818443342812722897782619799172236740688880368125546081464908243182376557078778104372546993323143611417297173829586874353117332545656712662310968063856158060370117760244929295794370208173239455087661547358394876923041898621271193849080969145110590438404075052541267162075499292187405904947887203117007921649828267675535365058806081207198601621655850370326011223019888205735446173516681170537985322561626524389918773197949102897254093868947313270079623082673996827592240211693140176383393319068741243718981461679278906806987254054197986715667447415904897231521894696018297519239432439328774254978492032109378513143913294720738243932292051827139234754467193991118006449231800847273253455348332912471870217329975134043689145083322511024453992353046396791536087570858368695150215159492382539406646530277227169836063125318047235437896162518287403917250922302543967658116937403488113200653205000934691662713984206741126839829194279052049108460990873534012530997524917473153394855357784693111437831453314985217119143277422160950218414760951797861224166784956725885189672957234869476829471374546001712907393475521944540452724445040974794394322344132618524240244756528540038582105634486975884623756876102535604234510699971412046428244731648339295852010198320761826200858714589971040688518116986926369748600081717365956397150759065611187442729427183321174786702397875959934765070693371268742519385381712569454274801983808248193232110609870530478703105892065300855419462829377846834725177176105763881100495636418399983053972954404572738277073281827139292818158928680406760915996132968811258120523464585753953862887340770306559085213177754569518697831177779875401997420550435922310441647924099508437413539447998398005994014061425874464286876918067943230775380221093223267015480482643606744928086888492621280453465425211844801266819383331179959167105666539164143668414095436362302538405614280077900701793489529119587713481856360221646802226929546071019929834374143566428462674927322214266590861175148489988729596898454526890204849038254318869444038162104884491554650342288320549362714561193934318108053014741488231991190903516402184551935362038196970407839784291605354365356167256601217645478934741309584064734740072053870878305676394787638190958127244838042620811420472564090040625882278470131916714405633412552843318515119894055983748532176136067547019966962141785242525649812712595061781864836781297650876860353554252425914817814392331363660971670659612238823983721172507449900150124791644842711662653913507190161579547874985139238988719832080677975088619396788110472576325650038111464408707816165563684141521001018959078369278607562924234749859228582997362582019554195918887229265549689351055980141365162536438629709523987840859233633773267977013488172929681674808263996141243914474925103391513500855019799873788349045852826052425415667220184574195233623107805309322109737782134842300172456835244647625503514525917151314333926132053951237781257694815430505654706209277981278252467271608245592016726519874448364402383482950846261551090200984218016847275656018970818906312479348661133307909368687064835489994674061119760383714404220438419879570617462040947358527686531904023137627861018394808679516428689228239304957322143506889873537960788806009480900771679360186960758799822027886614176476392849959927014962259911096998852650616278687961735306514827877476447910738006426427346964707597404249280577510227321420921221372370635630222827698404092312083415443205494870384547293635397050972155087561408156260303315210056574401298023625590125920186472239609754846727598256100563708469367411684346193471544480136421017382769291091887002318916034148512287193191528887411753943410980385926316188186484186496829621752431076380936921449121931689924861160393476579981540868486184232891486080952650142300709459843543779056733059942905732831726195250385856350938605655911570666896452230073102849360959049910203302654472383289151932094244928270239576499288570063424743135788852146101092875209105023033016769691321985968600810561375769251082184156918903216922707437138903514999095727400050367316473380642161670535240895042798660394280856330632202705964959137441676836609568844987425541187244939597570441260349721113894489513153432312581131603719623934573084175188444530875908963881322667291082111057471160850541533817843735809117357874813946567365720235492845499838758087000185324443822240059088917106751675717035323589807478369966607107424218193925973696544292219690301948525292689552899012017304254903447186484873671098614610886383267692169551155515712814089602831045484303436357796081823253040188217314157489750601492742750924406845969536776247793768833129550698678057610295540700577899414455305784944133844115152586934534061801507213111913889899625098443467890538425017348326957364814123828347147888315624076444739678512350158294639391446842550063042526216111055406071872546278408596902242324861525732330670527407700368350060618531794493705557711962428168859418876295493139470275601114896660970761198815635542839536344554976831764601710510781710363979094327678400503092536390860942312055309009660904897077388857742126059230795229914508825751827517854644552896875769998045657031521434077660717369287062995258276004948897079446082839916239156111729799746786180269046981871666706114620851718356237879758193024068913226857334270085966198431032523012761539426774046497549128025305069746793917061213914672267927111608528186160798145066939969815242739571163054361842735272542560492414814110303435650906179339553001014067345308180058568647678405428797961170880398100012870212725069038116319305203368367253822231502177830578427337349207870971526306433701340298267009846837546806252177495312488383881621146915065331014189868937819664628900883228187575988156277368482418394002869099997997948343375032052551873259453912649248602137497782834044337351254274363976076440677638055671527383554764248099780564492357631276684396664330107249241216346565451630684846800880429561744901743976400386123058876031012865710524453532895667692926758765489927648119200124482697648802151162965233502661294956459957419141339091802463738331388217239674547027536808850808960359251062791966074232393564445083885840879469822452453557112335471739667207205315887306750713155314233099791691100297704919389701666674572742832554729168352782355753510796593480539272044241740737211775636796822242957659620859533461847732698524181785826792294208621801023864582906293776549280201077315574385533092257784532531817739018646870419295908598113766240819110235524872854314955313135397249050335726577245015024696619519530505718427357658885076179487000898450254920915688264504679138540298347573041716765872001377967843884683212208089173576683218477984918181701576694488422658503539423929980129086838332759205106646589776997331317577362099154288639151629647016046767350788696261144569402158383047540611758883596227880537998095081399238934433822733285652501192447080153585794447555756673209072536404974240931294745233729744032320906487754876801678649848336699396513873652178036934253043153135907201349983327506131434784280290066283881471095900507499476382642286921547301969539224540461841533751265811942171012872891064856712126463395395496285069308158451380270512571023360857307199971295077960722758700947883291187182466950289159736707602270456356823502413893704551437410750332202675845259382784144128432517211170444598481741587556972292297720181289873087019176019657034353557303554607470529083304596385216083642469522582317259487547740724181283459286201936558077773752077826676715733210693842023748926450113892376070901210614690709871040047475149102820616039239974506986334702046368601421721217992665477356198749962947194289852302223161634997882935401918333232432193223726727207295524282901182727944366150798620770305857663135439321247050193823171313615354577204705557980955877664570798748354905513780712163531407808846659550405443575157081587907708156036530624558330071372404072787057593903474632714963762867718789303014787342752030262080401427588494463320573662900864719163982451747250196791355631130624274419659781220110042092466074979891723518278122702118406530884891195973749848528780423329046445140409769343136245896389442617672005571588242792013753765594953447775201418115462700497196960827046005690839487857963221095343522184999344760982542672584389050815777654551776734925167906914720017016637084659816060672372655989272891877478094610320233770965844693116185868483843694861715520033440771183969896772279358484557365077497980391378202887291546578906723791493705644913047421154347297637185053572912103090986676437445927874125535443405771181617320575468507667101813404932691681235286202958709195628980305011247118876817035419948613279806528053334718597239315963191057988314468420509147577789660689619012143181597403211524582474912433517837321274466127446719141780045425043618566440296579632696168395905329949361110413560255902332615081275556027130659981143017097838645916805166620839751823223985585598341776435872227256687150755177132805222181890881125897726371172898806426915660429852239406172341727318816821818209515902281507996211528425191603070684104101091179873501449859917505540924718290538447128464217221815930136719049725023048132842084320369175517291896702507943947461375613736764955644919509791668185366820883591671613331860700669939859587881145053729696906949732636008741463779738211714768202916775109888912589116603720192175001887517521440755747876891441965626255779935379729425518011413243906887540093009756791262025554390645707716707372062704416267109602629136077296126154113295259847596283844383303535556964015060521375104230973155967462543053811520787756462125253491297490466266177164126248727085872629675093901037214271130049198541352263050200982174775636448034589475952295496347476145792370838587120803596745477322275231373277406018197750428263095998543505177125509768899335488094842723090659768768652796271333037910869018908870163479174102697589512385731100247688838491488575751115587515529380788149419979122826398452311934352034729435787134702722951955880874841417614047954163052384015084200040972591557136904572110747508112632250047828261430552373019083399469396713639559363887086743609183345915478583142306648640500822799804717219217779993296063968417089060727393006534339488822493740834738221215298583744143044439147869510760620385415414497243981977879778143101866067797708647198178452149123181147598515961718709063840519906613614392506507439801855115755773430877562165162866314715681929756138228605866042163435665529139454228645906376632288738303901301835132977812621370235978223367246710550977924870780855790252542500839647899138624091492230027005494929072795857729381092186064529422143956775559495183018148440739217130860036904135709078727437435801112797267565753515585733132349369119629324608436273643731250162181254601990511515315054752135244925481513261915824481021482400933618708160928904007098793533849788594546633930983739403545840845605754417561558496747249402538103889389176669853744416032846403305082116840258195203245092158536853774232909709937600572433538528768452763990637756002797499784218555269021382418770811051135807282758982217150854169751728363315692682065153893619818131625175006798384049456776123465363153402968319052281698797426422046451322588819084237848546996213104278160427974762601906818497985408014040251050133152208636221608255975514240028928299634262490648566186644453625524410103770545538752073564264637400024239108113352644165159193398921703643969773319397980351250184925364689220375366979868231767440258353473554940328857301118247254159001139371023593993763280733632035765671955075170268259187042439010201599094165808029123154849598470564334133016529076509749391031400697168189385776037848276567351281271564461269374280844594822488547662006375522870986257908975366980800704703291904688154981199041366306007020877358786497227007057460649540044404288447700951615417362217859220222915112374375850179677077522267496868017780614191982860532648793372807187841849871309743617883056588403577566401986343164427106561836893107776591623341481237697106567790638243069236409087756847331054921865965195820082408293567505257062722817323822440816591878397729448415394263717277947517884882961838241886127599818123523159590106560645151300443817528804467579750802132115135528012530023675613540523496857057814360632434946723354291720924841791168590945805263479036214911619967093909879698841682159799588115810555689995209988785619832321806335564863169304988439226627325527692392371016197089265489047937523503284348663495271564290972920272320734936964564253909542199470230460718637924313202047487111881388201879679149629116972734338712072505115191572476713981198583362433111408335547033991807709743860887431834859657599903437164014016512131434035412219581314630515262580313286685078159262374651500966193674485552742943581320400288042183671991667209413574923543685536100107574527315610193762424854187703071327566726848906076933252520673034643581487534860199383557194803735785420412433906166753123946068754039279553378194496369397568254595951536624979044502537590150600958062159154656465174521332678978457141603732865589566858484465023571197716270152967775703301618634571175740955247298453568272171136463876513848939544140419892117312225197850303903822457060457393866591349730755040718159795490963168481992186751334370734062651921234789555826800738285583856461439262926681547996794838401331793801637130882700504979330838751969121695000449487118671830610187357541275068061584442191725497393070564567524274042179924188881903074120113325592350910572708746142522196964235077884291374923936948054762707283928125991385079748371286923278273863324612850416463458873129799719017161970427037262469632289798838812726348971053265510987506909361208075409659361092152601646034060221769591990046519773639998161928038848674094271724338388263602782452379457075659955345496537553312285750489213100621346350430218224213506908763344781593606040235251472430469791929059215516641580369980909087396399009266313555532222823087431937881293033790826692179774886082169041799532272594157793496341063385746593721600079729566474937008858773656480902533420522904703940624202947433356246442683992909797206895936614836203432346650258837196689842011908481140116737165022795662558085663769866017993447231896780747997150773120868301457548897264259668578161003483493292639936800126989692311436008377234295064571168851589848095615247148689914000702562008720253783550281456401029261863650213870962494878025753002279975126093468375334726544381597835253629284967782470136841212456287133398146941016685673954591293979001879998096338356051266802400472510114590994997765630474238330303476114292809860085155188572128903247062534148290818774644203507577900956213444828752111411212005268299617255361829306832590229797936108538401362155075278427954218610983727789971859652665462572708220455588614724477238590099734413679403053500667600772010137266848476362425124977756253860641170011329978306302581117629328225224086625713221021313879952917323651556383884228671359372959416224465135771346902704272584203340937237545993498886240477288878125219360025438812583285917863852956973551783424723259647538360489014850636606697137512760481976183686256316336368406949241915921105628490636896638526843627231751341001485508523521904429083955132537181831815062834931777105758594753150074686270473387613707720676228286402999237198172889278384215683103295793570394873665806005057701279815880909501226193783191545676317214537589379291071911212841358786627283646543841728717952703057826812589398791618769006023143590951069269373867468596883387920594444716544615310474599045019026627393612611502332244595978818218752732699093648501804290613763446677421059754038832963299069655197860988607933738395457132143979178107049137562522531896201846266972970787911835710595527381187461246425367693458647650830062922487491719019059467635499964482338873660512008318394440278324574331496278915238601796364247642008777993858975716523063323843432460727229151284185920847462630997260729618880995617488999710363135785358052996026209378922946548681646234843156038952691878199510603880689948995598956185191432549253078465202329245631814786398004432769207039567984582444840708112288608606187825932046546023181004159809650092732652713718163446407228701957274864198991081527002261813505701221667389974256221074313902641790809404205232496896058643310018669753871306256202078106862068532723298145571633547315679947543700044552749269680541126897539020880629422227371265914809634787294187707220813476679870612429339281547490144637933103932109342792556116551274096528269724481518273354125129905186479860668733774433308072555852119458792161852056010383446351093688506006685790302365252498583204440756504317239162150480681810796392801179733741641344028639665010619630879746344031548073842337501355377667646680027406278451200445755679240460094976468423791967646954388289895757762717430373233041654767359842852191635889367896200065900044452815959736490160451930690373834479659691613086812586338574358253237448708371032219120498240291262869173157639020475404705180735235341943791806952660840230280172677928213170363887846423237591697251449348729429885584801672613882492144924831655302174443197344153787942242673348542445307075042970864327718695657738304233338283218569621908138984777839329154508837651048283092419978750600511853315082859839418018590603296816926718540908652179251811879767582157264052074412036341154653273906066642489630607510438352430656394304168125162100952150573879476695940812805470206425157148432678960827087794943494826678377935251815101087675570907792803099565644609658843209451718535286834800518615283974803722267417311198422970855474928544906735541437200359691946511214683339064188586411681487786317165321064980384720870977600023837263357182782850511899325977636527157440971837854722528933262219357939199873009698241404597711611156502977945203168228796556396404708978458723611664895226591033262750738782456606143892315594412126483165810690847118236129381396825823532483695045519218265429781654414106589577429935931976995142276603522115877343211088240814483125678236181544707108656619357590340465894135024983243324336972185473605292806550548121152251232241794884761801476161807359692974871484699111696537279441215124554936855358850731810963511480064414369547055202717965960570135694961696854590344630846821272309569173984244073245964074502999699894971315198306505794140100433543832397252989922233724771435997355501819582893183621035209993176405759508886601944012333265459420258907777431049841388736011737992893743449987954188312677391136625952690622036011817842818616992051713270275868240990596996730028379604225614059376386105305421117582545268324558181467386903436401474552795734386417720025956348635882060357592730300159978353912965893168558210818510405265928132905372258466760894420064740519603204309129248112546386352790416891623121410575813517355418025506741702581454877851700194009622598644839263638734029071622102587730854669900405773166171662825263794803980861581709738047830014106327166733253623500538428548998668495368345024375479004022804822780801480259444678005985495471057876679891326805554651805512650567974028345807229484022219454081067280857398782312571842105071339824150596586134663427410728650660896237353939700286397313648967219766185599111265094779321021379650850876899803409533006902419368025855302495277510540341593956918346372014807260965481009348779268263219564875998800869904350138678214733779722945384621901193116959477163480705808265468973641689078352310411897994497817037835740139466403050173544241047224838517082834962358498737359360633274228458471401013625250287490474251203128908752619001764426449347796469558747408986545580309246566934199854406521676209471943311874467858129973657931329464708245149137347287245090338894387432493576891126845237417794992558295283510368940467082072041923045512353555142547166984235891305660013463308378377141378715755924940420965346752606207423031356391051344544873272904711253570346141890228613192623636781671634854647285798769801367398519048701242051156145947389818428619857721052844439339987755555474689678912132501267712498191970292522537785954384153764092007342456941657940624056750667095123082040521681753925932908894412706667568125964123044342230502734193846431848141082507002551646063552225625905258320590934169988690998796761785515218382518990596023683310905404195893773149089834133088625808695924091475444238253963665725014839617213579331418888315546105702281275229110027390822147003759500201461856196958811160104851394325808812489870079516205731399518303435907552380743546041426568492525191531003673252857118632948967837436245509690887873192431695105395194916481032351308611009556744569364099087782601142835316636902625974266468446100347740424489485621966087175320109504963977735340479384929305290273751460431836835269966816249215280343388985345139034904264463223981930185654754403312992090676691786506289863451020328819508707133106552108673271591730504802337775602725802871179668927228940456473625600956199918371610481424204105164432191736375435816772455290883997791286750606084074683352506783266049224199882202439573370746788397225402560668585343174461894229590674917226762079445989809229751829556318982587324605119220158759000370047932662861460313737258058144924451651065567450689744356419757236513512421599301896537066491682981828285772296330042595443098132429352541946419484566424056554283015902873220016717506353472033852214861261275205417252790453031660767078489119414572346498008881077585858456234431619769655776795886829895498094325111996751903905273793328783076363449466363375163275116734514844679755238323524650713617710190376311809129753395032743602335080809677673696623595354731870332454691625464529610169811912559776146401681403475517582583653900043120934988204117547740723638065901113660432882894815116467516199874478869986198806975199449617005522645524345186742214215698964176189110419477392113026329488568020765435104085179247649928507913991965021772160891872994373832403598194794919297094968128329943280625637647175287837021194695626912551658663413290887790121455308451702684366403568462258542778042064996585574737499076527632813800776114878376516066611628183451019212035856940900084473572374424635855256867149283306126288891340647721764151696950422622216888677577389485024349771240096088539143558552010309806529123829559964594325762365191117140611823315183796042186779362288136689267286652313363835909736317918847947303062525161157229845829986134712817968236731093804642337743345263041746472235675985368329326215928125567775592822592173453900597381899047697400996173042126199027513779432243150586513176672363947122231090405606080551297688614384253551909242926898260093629550970843780035088972288547268526203542344058029774528106554145165964210275766578914459115471153797347213919295217161403562512782133406592207395613364219991605606254393136300900141306786657862409046242906195955095215474795606887644940407102609621556400310367010727969939360018324316375557234630687174811302874214165250952697575202906233016760626240381858832844830052773745419079832632587838864197435798399773297513873134552621834450426978344002072590603604504287174630722416047036608175827187314277047519777627021838806709433656343653409379255549074658732564997495996786999154745629811219241990414092119827809068521983277370643853196192434071513521228260604398685317454747927616006621702748761735941862557401213922366630340560376603177806603781385726942830278117878413440642754561224358967631356998200783861742964356454231940074360287962574116368789103315174442967715577829433959167919989714999672912269222209789399245541237946111841537444560567283930238121651966372018699190303340155556045823393529567529169724968433529245327051421675552618094800075745993421240871211857962969414640786516070274062936051812926551854339473381095648179444327930429299968103055280149408473593222274504405030137172490865370003377647339588978163887587194536608066735766713100086558072837380623827336684005380513853354858568408110536268187332199099822234533691989263117991513802305313714921728698227111454457733789052914161599133206374234444567058893489885159442487881867740200155918676932775021917292286238743073909530569461681252606461696659706552073205928320579994465204148372237652520581946354028627906815468484201903112714990794837243922482982789580583962499108754415936725550081205780117800176778269750704838279743810491473471139623629276825957609258403958581696359449158255567632437227027132708731938973961741957126795342182295225845467867636247558065257492716794726796057466064647239417830842341719350757498194221545843647291608334221168668531404189883712015799189046762598232838572344795014595704523546229950320162861495311615682635606335037653797870515528242885472276376458600119131115348409271196540797989154060797798805971783672447288023511997614609599538491529868881124720417080824037491881409294745085853306914347585902119568046048490535085378344436568376738619806606589386773387512398459651474818593337378472898166704717298066653696258641671252628414460183369204248947605294213257864239075182837158443072655550129343420569861057535224803230751435347782849404787867609556820223954345854194059405697283100955204546003357722465708458396313830286345003325372053725930126227327311516072007021497679739195283055857283447510121991140533292540134913209565725007351214189430239182300247959420650046329503391864446526821807137487089223307640091018262657239191729734794371209889895570344183212248794780146310554248967314818419879683236739721882133095250255965584461847408038808083931884119411287707869998576940154443617949581412239542547063104243546211839349603672698501639720136137881300693668675587361995001015874192835275337969803635548097150736958678797884841080735389762753578289557773376421137979907921801517100948230565864820651394770500759540261222486574885537854700315921918154404758011285581869537964596987116348672633506996050879630035542511553581361734819723018198940243509706566624497474427083489768670582243953677874333173416716765760380804185148731723141188119308719481129875767006745548010181912030007832150128421047497435689602456799114713250106592537701425800103062452180441718506505686611657771232666886487757196869368272650632796611516140953821094353526515493743940170003070468298781923995605036573973135918629860381219577406777303483123561052313800508250546227226068427971517911289483000570906578256767789593490690988874151917031573831525820566459412869499583646159254774162657401713994771513008740528132975343495509511962087259283428042536908983943200335222257501398758578748038011537134301057430244749624209934254987919129672995107166517447155005487681718637891816133205797188276219648720059502605161300738468668721702600791706095394853291092947611797566112025791454712321941519734199931986470908753287382251468182135315157184568532581389262853581062536955469622451462465098642837682821569337290097019525877706004667937679733496718609718244519606800938374040293094062411548220792335236509694428259124745671740237001092330945243378862179775451364787697771128735799001952825608732791776611055922227165151202603021821151257938085866647934641511344423955440677111906418029130285327482474555487704472931684624455510847803585154702937702285885308795870069734070902603094780907512088999421164789699354001430076957475554944139979303174365547920802051691670437935916695398800771952838058030035312322328661784406868378350869011652857988623204846270505042472294758116818824192619859202158601611697177341727117314385074010322675508049856324492738002374911351263604184663355830501286052741374257519019176766917813226730899461302818077162210771048044025173732987205229176327794054107457650403983461731295527961795411878714074342414500173480270837426565701616833017665242964887489444958005969202681118997326550665541484361601086760839788221213857096186360942719460947636521393448412812447762078432847823339447564053261386293017385331349424997107546844017821028016703158664441351169743037262400897509473026745170445903860175598356127353358108277312505125845866728274688277457066164550009071248164128557366590362842326158734815462813975335870948859439186363772597034314908768519598554204924123871407553449673764845018182906169292884254303575741384308732014080886740808616496331151029253943035753990855776412056328816153414495359356471807450625164061257573775758905537846440642162550806608292786495997128124871064251276130882892159722906374162545241315016354162445590880113588942645510892184064283602729210459690281769969427205294054135429796895016058228127588118370945300027977727564148449120199651821053478482583185333151945261306700574936701244740031813606021193206500221340208710689511149412518694817188849913218792586238162312973822764656564969034056055735123789233972727306154114673604324533005155064034742408025828576920474323790377625970789413346481153471114844609377862918275052358103401925253729146520701986671084151757415704644842466297102222915352404733852171934129793741772204481273483913946106827366433466727487015038537593352447995112373281450662992324347417880471776458658161283407151217552818328947183705430709093036488939632925088665226279802612646183900976050643687129514484397935176258694896783411299493288832353122859495578743826473351288011229476991223737483442293657359551845685143793608393154680702596279421802846649155464577377694702879451771308054119607375383951583345930383271714562511718967572737018485182191918678316300823925106231462188312495026041914554467100325064152075010946984516533473171882023945710207958440179443004537408602321143472649458499358580412636549499039548861126162998850388278907957929501289557767309914563727474798289198703936580726218918351729756348123148223414056807411318341347315767802700948516960670050551571402367169401030020709130955881758196083103659364434015618406024941417824861419271896296263224543344455539205973353365019763213932758934780495821311319243473643581079709734634716781527226581525374578239712015812466947473343544805651051755363551294134395565251406878747564649018653803079802169776816628671613824219746162488888471377496674332600051172835951307791514703972751331107690308150985111431292440538318188778038971436339921587930130174214156925107279580887791120303451664412161003269475344742745240027411994319899195198068582093037691604750895485758673850243466939662866322288446320685962271242029683491309176804276350698016292068194165909429961081046859627647254862342687459942551248221306712757469462590191696170059085220933133242385809207191221673733195672019136559061925307702002510426596302682087771034298452062400158648836345254812444817306257283473450364810150706071713976060078577946535267252417027860066155576982166887721710321776881501524747170737710103645238490252122243160543971041576413519650785336003705353105800623787624192115518930855047283791209608209899245159175658426226764681326878610300630185533651870127130965635477604068326464613246203635385345151801992654817971556956660290826702489359836170647594593015606236083095112590699022035095402578096596961251227025908517075720931356316484700699885708402273448991322977668953105879255039009937794088319282750277148028765097143507964476337267795288140934482142098867394598741448974571607737837169213804999668255890812082664757703479275858033272148432635541773352450613655616919327843428944835215140114735834242636404499916934953543196115345854602863775949269751082482934870433885930451181050205403851692004752270626286842788737110738783050373307280643675776361798822716455150619456569886022043675646939719799940005334522996370602453615966357639301156257921791418700078333009105136254256968108120279217949927604471969410305969066214125301125037003614687181359537414469733548663976839680963979431571360792020294492840756857174271463688920781223947020447730908612576908071178129219833055330459659859418748931408813322932971101979551506538966815058071836955008552642104610065000215300027633178098312145925848385687092915120137309007496257958819894891789645252887166349836336607733119367200036279278227524528760732944944655676281223778462844929178340048119306338721048350702652113763815350604630835005388967328356938051898172509485146759491086539166558867338287756496328126072935760512422834872869684162360776252834031977796334554319530233111498683211397898980237972004354485546469869935739125842414856216436107943564942852874077010059610387072678753216375346210602164880798479086160709807718325579714797421010545325007924780139190994792665515243569377521656371279450902825180108552658277743014253956952595409623644734626846441730970678097953567216155130342628438909204421526594667709611147693796271722482941676865507891809458152497324503593705634005571349343860645652289584460222289378532320503134910289764041653490380469964154763262361741659036452472968387209155066601522545867257863507917096369754110544111418061000353708352071436402567674209658429992490190310468518153631237952315909885508417773565688162607340784452784419408424988668794325815294265372656197497102052617606294287890519255802813659099680742579591455099790275134620210973962315224958971332284216450723971546494766532882907040537682921075477999557873378475092232190322041505310211573783954638778557581724802226956251971276910069315501163233942223696172561858563738865460833230916690988353005669913018429625517238035990453587002243412688214622542010340794551013765055981177820918125680124936766623550555770589594516137792850427927628044610778302454158274072579815744705759455358853695460788347178724188068630397660972954152668513887846106134629107784074768199954921567423152216642985485887249459193501929453129462482710091360556144278965874378017152174157118582855870993281174500198974597510700234420778345713408821224033711692007843177988674542530575112578319685920040140944780216508713859574431446359549111975795226935871995421411835810836423200007906362780070583751608263528274401807587824324221725078383084197093285032758767723512444296246531428104600755529219015589195093619004149019497400409664089973285827253557294295919702942418884564611387170051757351548441410798891200172860504060387734881008418602772876779689460861916776382283007903661490328788515855890438389484234704107544434788861330528343809679657002066361366704073076337209046574487312337717069223816589535482056419748836004092587249000580098250856211989243042555703638904316395993534419249160552693303111459792381845063657045191305384544737387032957886763011033629615612195663857706255407282745464056465038457258059497050907182222087498813656557378138291748208680733029487334778508447363123504693776082118854416548138921931334588695660413112857526030803489030535408891430480098771057704960619026135559806509079716789640935703295128220121729783170488624248852237200586739139899840036553970622990371066864573652607309917928674806980943015893190240719260398819957828804002680452086948099552968343945298004459695555047751351829210502622811609619197635356339563613606971754868877278885614286695913657383782583403440816122784389762144022396002379220848406442043330179270925165962473745124796198232339162520850440456865863029192896903480533030273820005800767449850687994344683578827876581565132368807844463994428141125988786985341681867845962942195699084543990898470817448291655270949541823392419603672845463593450994999195947888793340373465667335475639204212650991017189038440459289918096778937911320617568472156795678278972738549352868080132679236381442104455762908342152592754538813143380508506939031857422690544426876932243553662473161079655786602685792667382628939299229273307277143884866717469493341641986218375110906114986121091293790660432971223991946970231080279846234520550215404729622855257928789227188345182144199108344315070178032198304280603992426337921364778421155044017818838689939064017800514389379499494095330554789295457903324088924325732683812945275453814439537118176109120073931736908019929020654715896088674285769523884570183893627435952014379818847204132094143258461522213983232906835021905406245055737115713946218515160091553365652362037481117966727589830798530859353541560996004781412107552403156592780954186890097710506684090070676401267155294708643291120910672093309127896375779741859091468977905153229337427194784696387793830065461843421131756831556701065480477399292712115186460506825862839333397259060145987295094218177085026674313309883835217530098660552204227989074213367004553474144247654418911732642219765353887971490731354157695900064867581935076521840593824192194071550165914114849917407492810681669585042536165923218188103572948704200867798691373020600216389395117017100025244211707452331735176410701157473617953577672440676703045179708688757569018893587092008492530306002534847813837919157740809406024610483998924303456341737636700888569714448523859249502261700975463096487222393219227597196313479199577355062430406272861152365017894627410946068031253401375567603095803576514244064454468868126757044156193700521694595848117060576413912110423328451806024646624313022723036406629055345677436145316692084115850346692285898392288570666831464073917169145680114863031585695158959449599065108301291691932935002886430218535559454398910246538427581511493665112290240072796975242154263028675102205057048232786548543486214496351320042133158158832947487484664733900351435175771541871558110459049316022596282256930834305857409495169074929534065038275929420666295989443676600749767798254879850598524484958805639193491301405902260732617707713595101292675561909166252926824019545851511511083629967159247793561019288839307996240800815448794910589207188243244550935919987971450286155325440473041697534187971967242587895010771188559869995018822071874120859466662078705252206290459164715959208932359091726939407448884633102999749786070851728544807492626265564350125283520252897101415581692802277454892736494441347000753498506553564726280558138982192120335239178897967180393552659849148086041688036389230919560579176953679163826148730953918809370596559667561486508678180829352434628019722897400614815309059965237812343820371997191547671195376666843484629522542918199979472284480945895576517921205703890483716451707279898799322967926220043780494261949523864520967471106411161604162336483838386967573654789491939828073737372911492999568081791370885246157502985141936507925397191084230023194319073412854415873994921736858167450290679997587653992067610156040963408057375101114386748792396476905673999358042145341242844720903667128167687197209618084776744476073602162046281442429987583286333260135622698245656800028552596598813069194129226013549390612473814174939800095524399649984016054868310011156885490635887277911404248374121975535953651726304601447469261088487035239385910534402797029286278568010234302097343291130813145678187128648280710549987178478822085987671336214857592546725529152112979177798526263343861536016591510731256240727794591823508641964991767149969052422565159275294935170360758296825271669485259818305657784577524516289049748929275122819015167269491724674348014546727530381222581123468430299142350206276278081566925341445946136238141312587340338726724733697788307663401344065588890228575261391112686762837162120394735738207355554811343867350180023705512387075730776217448929246674853538781984802980073232134556943078727722583241522302955104768702616874751702835203963498537277219900602094872096427906765901084548029453252235788610229356356353005951220289594891229683019127631173904711539769468933999644866778541043474602001896512225748713452427488383406063607905059884207921277519700948661393204537428397579535753197702963486480768947740124024683584359593254687154953439658697202987589596965244089851959849625652668144968875780478889141617388804124433974859433832156361202417068699838009033633624389797077371288599381877683925182021845925518825733519194811752027939470759536897294679793060040492309725852468896889872302240523173626675098160612215746842486257142169084706791465361510049599510427023217295524004877695953803692808212031767714121810200139799997258069862417853320978963002309449086385078325625357466106812717204575997443712273589280919417252549437752631375568680982694328718972107395888576435725487179025142981935638657432855554353749059646002771561039787826816200988994198187813661916807840146478343336189848361880465363580386584288408593881387627347786915013982509415126690301705057224604765499574688099492700890965068577727069349093417117385121167741781426840096275571261100527656583282826107773545849361050267904423401394575090675547117127750556023751181171635679953858390632047942738036054562110544143803254621404528226827352125361744903163020951019913786374841431715394502584593628386696372663463942197336457865174418372036472367171388939570299897155461377389213670250928289759979264108153647800075894441628407806565648827426199266028142863011439157052417093303017496275689673576214607140426716964395334934974561621915165759261688058872935145256225289562209589429274193675245134523455495955838204466269114298111603016511000069962186352390592067973601138358962711580456141165441950250318198218017012086093321970069372464079002374987187084747795230281002098803776223419473164703556034397686176625338010209628347701702367174179240732378754434077897444217326208650749670726342621567922449739940323818382095804248894721951430263865042759199079723167371877288406177829398124313971111282577441686102414439965626697475188113906513721439041744687649274935021471031183088658537675923262412010940830382626185001187087614291020353875340046994658006204845581441253666916245501620595317916811631082169285294831362905356989962955368898563104028255784390846115809470057708792109519113903596669107750582978472508737714356141425072501418351571434123525632055937911851390253787951320313818058532181300762180884999597964627369031518742205267497854923722343207421751463465956105746097652271038427833901706985784861203534294312437841458513989949205005033260150211502269646279795002462204800288077572956513359695732953770577054914047694554445884039565467189587204915153365333528657642712804701540844529635498942276449610349477871893902737711278399132157608116287404183687190283655593080309790781127523596609527096664906138604299995967554070967747964533290949253297252422911434164846479172792698385092117261139398535078226205504856332328354564353146629599571623708930391712067402246677280637715861875218898725314545266377268583376236563887427568047798267744257286537248531648538528123598091543797224390506404131072636242518487829958190044875514935780197741956196496663576575538186618000482861558898736988103352485144694019383161545395416942571131547882212296804158158401042568375883898969113739737203139377934157197358279689707499276744173155244997610246447814823635784997904218888272563479551756810921265461887815141459768543388138046068076390576790046918265307988760901573643466862042100980164315645734024276385528920285341104736559053965594460140732753872772835605972062866890498053266766247471299569728059154785506616888826036738868896037078917587333669132695727207254634505041090332702204509650960182912775664787366827154539947336309467317474259665321798792886343742954852209680626344399148032544203854262627709578678058615860792603908800592391692858163204212270812760082628274134517863370166809818531585035073311551877365450527690806283880404171740211845028579358889091263341914700809471745660458979829087836475532138003787255938540433642889434832835619374908683840514730218260043734573166334065247695663540298124050180076941635618844628028140522099178574548098514306503750147561208974858469214676309859797408107910394473660206162475018933065089920413474268060970074381298499485031122588393710567248722787825593888131855407736937223522834401631684126901461109214997668286648552012357677519981014206492226095803945922499945442560501314729645670939679987997547262297815280750829872721541819358433950933936488335574145675589750005397985124246433510836645949422177098312942153125715377757912215165796044282480770264536591381522112851551013179347588804310398657432835747435653263239256706193405358291394289148839696138510614851958659245235237707948029069760376137610375486019150189488780365536378757325064170055428757596645465210515544829932734751500714811692358117213173769200986643792564715769439211056181423925720166328638276955655444809167520208310722346731365772780821990803935984545849326028785343041146242932437307302063204504527336689518918269459803505002990678869312585993388280406737384576686884620828241640667476657323332123900649217112747996182658634428948179243173292456508518892846963098450098145653561502454882700286553636276230176251687714554772443218925960838975232893196949013613064652438895993938030505934426253996776872980950105972403377685294155872019841717912932513714418944844813319811328909408578857155942022518908083504759371743122073323614164793374704025759217817140436761247338154899045287728884263803993526742036602255073553276650037955828006708862403170658506508905261930044327023133100839274921892651048159135609689765078772803323227385936811580841508378172437371864752720861681276407935253149862449216930448612088264756465580749750258138213314656437820340128344593179225379551355561099726229256479372019538439230079360278560729885533615631189979722676140091647650562168528591989681744531505541838194273294300854606058687231289873328841099015419336886223493680568154341156593027892672230523432609106555511652732056027091547343895868501075266306899450681546297610249487808184661945087649849450377625440019846179414293851943401789778677198182331021607848533576629295711233345160847660761659766004180639289899562995119619289721957743461783526084384674173115049264658111999889707832707936507258527966696300073889797252370283650046200622433017963419107071948806513272457935733132301019958730742782622478243946706813091426940548738572215906641051560540586851379604323086230377322608550315483766646174245811676970873383248763405546891046795418349718244918931015398896042337817609194672777400142325835364258243565371736420487701128029408563268020521847757173235728538923667823678069716838645136492818494915748329184410955153029704536939798474875147102825478125542342988256342077285300213413869397319914740969001935409414674349630206357048555987420762659457652823597334235763140436006815035041248846858260783074557629105939153844055515078412544011707769099891554458952191068865703350624411316544551771160425332566040165160408863088312407708280569277771353956350029832139184924525690875633339737718391006270081288214689478664812371884959791182541690453834572337048782036891163027455309899368099130209127576360826447243961904530645300279044843555077701063589009295072562853670259759204759560027781024928857340243538586161867327319423243721125626424798869032453127846094579887691476144661467189542740574569431068669949088475863260246607969169254333143175706187498169720171241311390634077842435756357777614056173927003605869352292681342341957885962190830813213969929941274037714129919778411224821593483152657768405211205363568276245716425330320915573150676629541553115543343349689045814062124798897263355639832110558304248206959556722109676773665738940373077569978834677680080587973599162220714209981533868704203042412966330972548310606811303444529112062837279845614257500496190337757005466991203029170845766458011815016684750498694436811620854705337972252616189484332047414763612378819097796252985306871340659442070046598341665198526234690240941262230991868517159603244614174066642482186822188228571051883628025320272647245887172021964505932679249055551366929487951381591039263270766416191321781824784470802374194808084623132114768216160314765226584904326051175549291219293970855520973326993760660015081481370198251333257168288041973071101021180926961873289981710397094245113443998027208467594474393860226942748238904550885907529627391171354383150450432634905948110568549835737300706057368673072153475655415313794060410124206150474723679395505945391929461100288180111183685401947827205878217724814330074029962945308850282614028794808599131319786018765067777801752420215438803235599493098889165304155564963242455755590929753654480933967659675460138647090140518483790481669877763985435307203609646466205710990788651241826890366304404904966502550230265555693669995717430663552313911751458830727757236827378835761424020956200657232049046397159339324751422159971595484653262360872668965397444503770280821009734404614860678717592541290753533959481900393449847687845110333816629684966449972040036654633361141312257424429350342322687812798002936088082496421808365545002080416462463884881475783399664667906014747452762245848611470856983826057319947385829529717831108399626630651262127257916806776298624852913747750652133361880530425340409108092430308846367970687879258956142157583360641725572470797349555612031916796487795422725575381540160772602139287735166253197851285461348096248896427693406564945931226576809311639750776831861159004060101601169125664604652373707653227087169055444515366473803264097198983792250200613516267556655566329448927745930186930121175486883986677059084299709588124727205605286934119035372228416888595812529811543060511757612883081431281869918838102188144383536200378311334730811585406751701820158001584296084236179832125350444711918643604128719683723234114633671135058050834701205807521598765820787696864522346271332420188162136727921774857379950111980009406297868098734517947451711684726814804847539886804112587537328596640772226523224506288199643175821091292370386631179668605824208801281720284382822761839536084415868859800554504488263598746751447487258268197341698159714297099857715412888616135318776735807881381806333399254882278122716052694718858244708561519351899497575554024919933355002134535059327413082676752356218473899527160072794990359964558548045921094664516477808083414268690991856644053447635582206230257198121261986039162492951050150661250515095912055856271551018672377015214795053204149939622377035215786286532474168427280281671428734650771939890198846389993488227991398966937714020915946928724025377203162262936941444090842916024801492205103508459175465025694927276580635837844618505582616469214044406484295813714982782845241018892772911901137039136489231469120555520287571822525172439328983817822300268300654644896695862763530829824765879715304502753555015554015949587312192690527002014397791670236977640532664839822467162837077131076388452394553441866775928499450985288694208559554072304613873297515874432324905089254103658691835647531127973575505184699475299540865897256785745097385078502528129213984485545104208974409269356351845924655288689871611392426454432955569580346658219286028219169578042574951966602027714120686162992366741389989967238332176956140517644147023729328750214027843483644692529935855228137024808447292191750560661075440824516185431993403522738829293172493218072477336500437298117254549616120856392226800554350332100497131764396711691651131999385766249312406455068167371122413109366113403938085092996332400633262225664170052401569486609157653834084488768590997442042840475575363976176579352396136624769165324419702441385048993725158699918501725344012713960348157530473865637151338203242295469457789432020404186191305554851105714263573086041072083963566179675213899259221236014945503278014301022951803514739732934761301567308287618172055512804759455091528007292486789401811605230724288932537464609975216719766371498090308023211459028218779804545083742914486179754390235558879963964870235071035856883550809466276628896234484013202801830592619246460994803444369998993803995373667614005650163422180109068754856441618491346390662847675591735216009323243060069077451393849178296185489507777563164636466477557134363173158623889253807688043498788746112707478360295365363574601193746251573724527712828929746134775501429303453755766240772933034635072188095558343410604540299924667790624022852325322645822153785315941641478379860823196997776382548834875479133778128069801607826972350629373695666037415851709311184690200076717492653291961720958578127808443465921048565616956085749416258750509733780127338392981699398573269333043316015302853006592914198934674435951396150098639704913382702321985305859243610651105240641413210376219640192381873322034315905944908366238612348728364283119637657271443301864492131903072348162119689979982761814904355626413277286495091032297884065498973000653916003822705379335728711933744174068449125760994594563011444452054517701005576095876587468186060568299150622938695215101875381259656549468225979238865546813613666751046116566832118645583571454132255269652068405108810239025944448132925684141662518275549074559578872109273286599930636333047321731135901397972398945845355778556191550111195206420074187619057177161503568708061297848363280749178460084687507390657677766728569352390692498357100297784741815590136498062693929391487904700928440962094447315621780057609764087809235092406402766230210492559896055120111745446623485848496175044151560934885857279502098370565225670653050296077583726557560290420101512629665758445596109223236291646753769792013867519877001943656589167232961004270471388936734250849757903967468520482107593890023413688453106329105639096016770150103437570028043023015796147111460395127004793236130888863657047797053560524133238427198712152881223260286839913107393369474490993542139494089537004270699598532406315349787472352463518654780580892677567605391758885459221786332874792019506865094620593178768662176721928654908077342413792694150989870808858931647692599551218607979182591700785837497611984563298657263185345379872782259342734159445969883110282215392234788680985256751792159537281655586014496535742141231761456209150423488686304685245033798568970111051590858771089454778309148463054127444140854822198272055004265643729638201929863814051737187518519655142863948014872999057986604354924304931604233518686812982478148528295901599024441702984454011656360480043877293271364573199893634628028039923051847568636659445173001952709167167410244320008357010528114186715717153880100408653536660957326044617087976737581103318937879725600538945073722255248659451615133028599831965903072827853494931661808310537805957049351307693899988969122503717982109309037969655718498131979133573189170762217625591868694456759102318292837259010148585227920775625743901703877898052616447968271588557837490706021761193425737934755337713704059900906464177548857915292994406130319441752924107098214900853699861216496451339356351417271914987085673151957887723465729636628253285193616393299226381663249958717636360871487730788894581640301023610145795077615496763337699698162014095764804494626072291728980337180524959901108668301264099321633561312786460512714146355888143111826049520839111897193258887074253733914720860453405726270858785579218015212316461834602496729236389883190396383148364156083672907765581704604967703429441388281887912656607558985226190957266276214426454348206112726904807303754086277798351185848517482004881333047722486512879820156098983922871311598386297621858987025173605966619784210837923113007467590144229295004045501441724741236718044291295728082746142487286188962111273709530870302783979064024289978343144543727219790766741067355645312848467031709105467958706372756440009945730370817962055363269736083649687509846337327243069325010577584895604933779045724245366877859617691848543403661598790480431836101902440850524332556308890393937291042803809409317532238596655586537091106776471790375528927896008612036132036204236167453232252931580734754443774800173703778899060201529276488249615320787907103436361822803217962152259200287459555959836985662766776754566781037551161301531973613152790809010226772380242956875669734869056765383115159976552539651065626834598904827903735377145741460521236409487590180201343549691968456613312051237771572054747932052827932089501695822103072106246069430754465033212687173289411604855274887361228483519484140954540997905738478914736953968059724107609637535860048038081804020072804330105278795297166887329355261649600223824756980170540858129918601268790059396869220046925219672352703008066155484277620613080217293006242177248184439825402580937132951581377289957045424176919976841377950493309590538102112487397243656838288332930949684285960976926815495891059751462366618185345297365829462829949585814154563122956747823234805947152941743654682159322537372890317339254242742644890555117453313599206511054951382760053378386464049927954318017166906272217254671903240183797345600445560894074633293141764470326853673565150381978011747228099654490952020383449420188538130184026448498217191597958055881313285961708736410159625610227479669600986043708626819031285401036517543893092828475983773714059722320051148450291732865730827316788472093216378436993428264540253284319963979196601571580487194777975397096035629315057215964617341574458600104295780150967719687582409411395350156225389557832193811502913956162395680712560388354348408885496195783561185681084548333505423100526508635769900695666368173062418508156276488789532806176776582607304326623220439720810694546056296345973749847048152383902984046739373666662250285313147323338181672469820421771261477171690857569296996223346988444570512040139416481102086811624746841275280523268814721528196095528945354302174844259981821612980901257791127943094689677747479578609055792645069040746196327686570105935788317125425289236475046381176094822718537109552179803685382039178892568735556540355284613981643042647320754291971922179734224685203534821308160006552017094880221222630203327177582526873773461817143408485805733617248015698632716448613830131494425332667796357482618608100311299817021175206562386742552331089248452398005273975500679899964955823398683437122366472977898350283795052879577051120689658695690343903704687434603567802444420668207723214120038295586937268843510356402216863212961927881183588237095126836514064689601514539057648248284646336758541110317006385046541116198137564960248987335883604673505939399983409231320126288697171509366764660523560567904863000452073503950540871573861642891666183019962282594171346321096348399945466589704290186843483291597704910735822376250545350973156198990108935804106249940310798637149385144183226558928752838850539921175303973148608521268303432767761560972134663631435832846903394569267624320480457202103088353812557025631927856529902828580163110929464846359004520385410052785616054696915445678445644162620741893775471409473166726752768048832894906837747879255495828426899872048897862830947590248771292666774585182374252293559439737614495514810680639432337000219426940572610193533558017612180598295324740700457417494346123157131268911435998112928558281690796307554282438827332320677656806671248484857538024666759372143571124172418131273321654962634112281496564893722115138017734052122069424115874954835443996884009176705800443904265441547563807691053487925896682802168307969853469337936325196525749497020294459079399179801015323299653462146075503207535808595189376476997261261267932726382404041618057678352361757978359075589585196929542398286238682809469740940968967918341704401275951968005888715201570098586247379290251719116081541740139380163384434206571043751339794726650316146825480185768290112586740018464455834547406032182337589930833622539326942474636399597530521476515881176996413419261942181988653661080855554188337777292791211684316287661544646431146488624045017787848567168679920989258347977155165908395076493872640638528035979565530272541758372206680540042239839018399946319503020309102124746531175835143294424345784216591729156479770726519877471312298483126464308997683313799784339223812152961773103565376619942572976972210387972958814742920316501081151512247620957922179093850853735450102852392284411689218841299584027553420732020608069813344661369485848083973083354186703830150707293250502422784165867218479345759026152458648065814610857338351178151307984648860852970242953807548493594720388884443603962946771066544854123703435990497281323685090294156389404739404016266445276596781543920718281527830555465849474929525524306819476457171063255888308560805867058019296808950092585331306354390346268393414142738640256618015022153827086090431697062698946128272196618023201614066517287220818493519601078980704564613429425483413595496016061718857310489200501790613194158010469338771713164945526023903632095867750591190722930485889716131203707666839080865912921071052545563843469137337888464861929735077991906938162759279730503349679577557910198040353353387833581160034256276312548542269124351050564252387351256880682175029583558472857896198811921244043634027875892922469752664761472429595194327578919282039834360315506152272283800458799387816019230472850519464606041838159345353393947014977299980615161773904233995856329930181962760178658053697091768561625670602256270116365457006674604181974480158144352565062989025404657559138784142554267723647399061127542931908337412965652748155005143387788985060954186978676261207804535235319084286150950801135177799496929108908398796294460028967138290747040376282297343690527014204367685774253289938846364674021927231869469442162641861507705959436167720330379849623372740878648379471515020703811058651242614301564446586805808670515480748205724638587692049591178250159411039358678828434772596943707368412741862582483791530345089962739236072720988403834335926729209189962093044556965337712488749448479483064689275930087729152813421459620743367387157905709074222299740750513059887161249796157035532678167291179119796933471622909582042734938005012292075459840207111701844199118385178547694166617834197531898873203706176164220355047052708002781838365117609118083156943932468978235891130045033823920676695684639991162590075354195573940276036858902356491040471209787018434438904807980853470625111843202132086168824761940944002804726016743113878448914343131351357644248969510761021438843272779020928293559238095296656931751148502276518868749702041279965764400612063914897386413101769499488971505707419629787518697925247343019413195543203695899048358886395312731417392334391794038998256669275110761193058426780680399870317809370895754771914919520764387290320292550862339445076231330955088561814778152088328093042181527154287352297160054983298918365155324743369498016351765501550361814337530317717044359191931348722350952729922094872355504820723280878669166723761989946956968089465755741095746203849170865444544604289431809349989959619213417283621243387440542961116579234023443929818512428560917231922767611226051122313402083173545169921493429008346321092693556752791555837394798004318217648854644767078256670637438673209033809947369299692588725370398351715023817239366197009020828194877921079183001159063457620857032262606930407208247899337426212297635014907127293372523468376016447896957475824110441733574862123701981619832857115691913288518329187312701132676544091630717094884665415173800048519724384957863452492324074817640351626891231867082456273668194059246892911654079448352613847536054055765122914135226012903899516850345902041655640190548865969580652922413656897770981147822645769236851678894270796972012043152886661776270717103619156804128847242935966030928981316415004208392419261316800214417846390211417020243314260315936575828246088242303122793298343192614445376949012125423319387167303314599760186742981379264221280198454591332736059652334896379024310524677474679793095720640162955942209961671261915218343590594405446413244271316064739884312400622083357946186424912668977476779781599511225198615989640222858839166506837934899496686057911851671292248706296561939239950744220849250737066097600315776008931574057057531380499325913746939868563392716809500046299708478127099088172569615002205048318233789363561121505918918783202360239031555680361191810736901175495196171610911956541556183960241396105766530037171219650766122734421772691463351825231348727004290479117769491819747679118566731425004473779611413956004699080282530667219843624658032669634982270159025945846936384996621102227408067802866309232303262225621135771395472732197687857043881172549193684749870301517532947442687039948357513299041674018733675802826118159036635974503290466241537881779144778414849614682395994441284912162211360004614565595165313539091316699325161454139168223527104720417921678041722925995463287910693525898414494826613285564251029253510204285373420161125182317887219316529500209155248972587603191002106784022516023404463456159914230296656924633468504709923217112346675044898137381448600584629392707071730588424543347811433399929367952756806532470839038634111330279024655010172123867122508215141185066435955864750357708441216377129830701232342736278599760978037017833959804038060607799787149126958599890289452297589986106034039918225946224574427657343436393836820208033332985861307005378319164256920134948617374289203626879582928515747442642307374891053789997063926568149963855356529920132331612096297844321610967728574517496620992151817602747305767363938291314021536741108634330985509288550722296405514857551409122355945936999467509775924999253796300631765769571969541193371225608436524866383071404995263711010621403397961835005180192938025627230585194538590167718306125123935083571688558341679244751669645981735618757547773261461460922211765079939544658135720201136691493035884082085329532593559597040676950855861845773952831808324807904088520943795258469413478766673222225708006182455951384349633981128070126813066911522196141648807973960410715444589358337470457301555953916317947132982701310501401606174064358303527470463645041657728755860225421753055162402030402569807410289611128690494517358202214699797058484526905947909707220235611076561756272182420419162756609427700857956834237141322930731856837118550180409360667406782658036061309698768830536984209732042982961716577555421960501725262386588814941266354830812916156088883875404581487381820652909273444014189883631735682105248589260322007637488995343037990478123274687350658536958818598427031488337035975779166493339445932813482671124586171459392024944018902639102892953640268323476789541538839274803450355215935583571713754320465787862992711286589195269783334817354296508251338289103537034838430116891736494893690237550093543538129042389151759236663480903326006256559963110456132626991324616596934029630653538124641581355169026685877116355343085009437115443429903634276008208862063972856999579864609384783407848335144071589573987745465690210739746835209515149307095808153959046417905261404465929805038498442681295395695928878686978165989517855226910324684405773234400104488700877014690000048778789061769578040736693446508333379130470246647182852511847511068859927245218965222063219985277785863265874088878226686132516491830532820361311287040435014598525792811391517262063305295594033338850963159589297865331775293230334349058707598025868886507435336334130035023260527291300446539197013833167523488217007323214382601635456388656025981931384873865541796789090577800277874557162908365353583057953331135962414947053749023817013935011743977153520523481751767652311498287882468147986328392280349867862185335180820408301550370433494411825800534089377165810565877264836042366949748298052658736861046409236638847032111590270188799162068285547361767505281093085385458776899877009758290724814422200312215795044894109313366446965575982123712571658130661246000861611105731355760846142700312116306244149808357958510795734109277622992367053519262571839898960000755920897647812221788086209962513950241554306784873560716245141708007655509959293823823731371121340252384013113320742747824403029855593252098512725054298461747516954725936942361972282383860020203808291938312530907881883033979362550795852363932172542891943093300005041866555727675045707446416558619034317794106484394093289673570566563464288782557888361338615680760312575291053757842717204232695639571998165233594987617354580203178064410798296460055826664976039982346299467225693036894756925393515450333819046157209663673242838286738296091029449267750945378290068767924999695847083269437994514019292707120363855591074688153755033969150246451418535673171777419863534239076880851535516035905067892522864807294469751666639184773554639388759187650954752878344917209312589120100838377887489482424932724083154996954583268422863584847964422590017136427868181916900417202120802140337983615507525913608591567581798354742199387821924450944223086826315809148891838955482741624329621824285920618238156185190241333931720045370754114830810827586298592207148886741112221551253297462513558798461986435364076667937262569881876757949541515526481359947138946214338505857373491152691469457740821560813804108271035326156031534422180186460811177122330910858744089293349647581493027045227716662604946159129965203020802691223534288357466489628815834489835589476907107584197764260157303942935360986070096635071871291192244987923116260220985741597186116465821874472947993224907772830987559669281562000198512362032362736381569783447168391043008220942089987658379211734075613196611209026272121776434290177262174935267033869662388807002831878384509291098396797349078860803641662153059804524303769906824477295761487438388530934718661368571345977701195819794072133953932709393087634492495473799236747048487509497259318751960850548770198480644230414380931130135810500519696962942257682040953258285714836855237022199978397669966665035576723890474889702699121954876594832271910904286767220308012561565367970131827687530188096712159399600813843613664474201661246521922834804332882533758998615444349127982855707937487398424409873151541321931098905681624326803868887515010443249694978170182084927310805199284124242355464956102196869865624621953685313798714816811092924045613862481408342715070391889663801553830490682003141947034843917312285111591301811591748976117597078039566509465471726290633659883229040798714182932481371699519211886311508786376571787469357130346840423008257834425688601700539103312962473943607698136200566679135127876056365353828337107353942866801655217753349568358670971221170493910141486458693791150727943495213787503876923481323322751156906256738123028234653201180121963122057819581758479481258639300498458666955492325532513887743793158483289265918278521812906697470167777110514073943901071270836261278028480303885717213000365631509781323014385323227944467842369782503736564811862208700177325450998483236467416078776414571768004642316577009643379823167865766609190094940195802348526114626800668339068503386554975060447102146362539571368836609620633065301775568311691852775809300698433891626773713523122966241018152972523066159737169389780945314808178229162822928318064477015990448544664556084596579707199205399278450249746209973364483829630539665564600947287258141647238772576509447847341459404272459309338676974966906788538845184066121316237154283288133672004737583081049225582197305228484095113464943802257593649562377776068893420361581881561939591422031617988392170310166781569548642233375227546757146706528703488773958671344964981128635680718613236294694486170980266904424692089316474619753347646063697476690156764351003402422124285062551963642067674011354643894320965807293739986775472318020756161650542854626842465343222835563996229604298160871739136742299968115254098622314272271118962423792242258645773661663112494997913117878326252259373533584255044421326079172291812112023191509834637083498411296460447331862185319927436495289309958751570888844074519386135671186775158841640235446701355837592517769424090388196794566785197473834220505777363218715559894580389753428333626496002595258099096241007543510006856443538375101647392332558115314175620766543574809960017083781238212738902532630087793340090540773479891755720390215449176772160777869894924911139870791011454231648048260555339416710927654675276575375240619674357947620470511024315557631933646424951656171831233236930478377938300920834713461004450655784898863412931571977300640563460717622140365150559837140829363114847453862084777714108687068371501238345970319362329972886107979642584772459068997628609351667293182367675677537158592524773611890908395066657381104078417543924604922130415888158660995227149823102571888676074719197903951479678935689634487392103694422383834171468023339378508907057508408744303919870042336076188798814166142371696854916599018446310150534195466975277150986499467665985334278238930001448617310586555697976982337244856821082750254354319373561046083136852033260520353078122544801084688286149915623429836865029983886878502843779503348756613394602582894917427859338015299778808333482434444857117909519550393859463677603442034436943316806059456175786167617279438777060916545297579747042869347255414047966475188934788928831902252056485097735846455559751368287254721798511751596077002947716799255653344040555225659265514515479475150778490684328531189486058095917278581882470202363658923746437779919631215368461773127230015129051307487947957232496795623943693158262293571442484665504680569022818145288408826475662444109370867990642362606070978875835257795648073351635973835595308262695349899582196406773048113637131660810880256180028178002148799380946218645022951130502579514775251282074198410426590124883976329901681084589300528516387077092560263764002550476578707136114253669407809545107136992812586460824937629571254791233616683379722435866201703594226001452252693072896590262278948936681030466269068685491518707144776057173035296682736876615863598106479604004557928438135744728908265944193243213873456656279001571130978855804658940179164474525226842055856487010871629645132355235285593047462289644994615745973208968500167326033713385142986662614219354015872018979773617308111603916400019452942516977961051803660191313236817308299615848666140606446862597513447252404331932798431934519997520708720228013175661736846969959772485633507350263982694487814441188284334897817604198689993611113446301967331937874155607057294219975805721257723417795051871603192963680344865212706170770786336378431291787884462675818418103146378058030615835522047245176185938573209008743019598680156120815440781747928276903265509177530612754590220742455232069648227246519197956296442360605623154692285953639443234006678249372483249683021081167498352435335832686380496579153228482020899995486650176164792033593251664510844014886269824624740179792205173223420856565985502388784580022201295482068794992352220492764038741728551096451037412494683106902023767831463844926764582553549536666941637500949377807581386758962637366878117840823777934987768737677720593378854297455793998944716971747246715236039757701748799619434041568131760678369670638673401300692582208309418557314430968375551758342283086030319424534953698145180684319226629341971793539019655421530428420840786350334558940333292065296325366371873872417700065936818009145394696908655837869739378505473924391818504658119975756333607491315622197793622467195611750594158837265808866665004899109270191545028075099901420017381788022913947200752774553624612922081147555211011244885590973137619454841128021157775292673552184464546778964256032480349817572837618178288619801369362419362820696682633948174233119042187224978316727109097893621579085483240237346481030303983170252502674359736218967409945997603722066007260483967498063538815453267881389695344003582352631268663405804634514696715513211867062877138353002277512598362814648745957761173371178309441580323652117272461356100827400859346734672059146112753667547053824257358452851728430887919287518087748844483049047969829901835701385304199571975371503556845324481673685223068640335157739511774964609930511087872710262288782862961492785735645227957654561718722607969178302604362121213941372522953384391884896895764547701747528832852412617190322920245258016266650659242275987833519097695979622694063426961182442551645086606499749485665616864975646184035363668158652720625777875952176844436707825607995938739279741029763641146163694186826150181493955797866253386642047412502851873165866176275390264203290051990763461452269602585321612865607764458715591396720749365113146017111908428179877072448286300215824546585583521677219926386757148375640147288882686002120969004632931736795649803747781912131136809594452215615653675576749204378783392031899763233190907050018736351410579651087299390003966434544514319089778181031093786630727858516265492455262198447847859048130979166769820143123252489164262444550499143070950952316907974577483963272461016574334194038285503177362900835492646449899297885286740702878545054208503614581545665913371340987749113568423455238100686217869337547662834186891046556511130681987317773778810122767202811158874715006150970398648025527043556690725701925575831837003312677224306525382506384807646086325544026484872515385184025881969897385451493092675884144602445753316675680910176723571157812942516969845054526125489491864880129000483704406565755640940932928556138018445377176122551944461837163626784160604810120308414304421003019215034584136560106029976687375195587568855527481026132848027835128698509756981129118718813444636587753702645679183855370783357156422087019552098065667361590386078236676349031177212492067063989429419997663193947096478505434473350069373908129656232625443772361313668283958058167776292029930388459367319369232504962177441880655706355144579158759886091271320125111006158110160972002508245834426936317870228290229806300174588927818105239251554226259581623132124064352683278311215801889988286385099162104462859944701788490253098548896236169713833721256495336667475716793319483641220034830310857652785580287827515962459567667869581396408156448400813062605884072152863819755312046918202388910303333713600151850719476969879855863030026944025229331397015543299885655571573427032003486003921005082041270450096112032830225544452596715531669336386766570089264051262357943811029870255673117526996116193168039472507133064764210358683748603422012154324279620407595050908156749737440672583533420931793352267068347413378647944360863617085707929927036672628312064643665865417432809634045392212194016647463378633015071825686579550828351036720601013696949500777632099924358119188852678971536750312316798960199596720196758287338584102330420957872585205498825272572402420797998203766723276728288693974502238437665525312735377240761639722366082484113883151029581224444224478684216122817953911047566057198154588804155397618407573005640096721458584829899975093015972983990763475255454623780112023983823001412870347043158593587702358477069464246659340467147646997338601997375305468348071250685345025363809087778650579573944524614248881809839354058607318293719422636325150882422237803331682357976971473995338725302855851358163059478889372360330949816626628610129542220048786030430242992182070057895508622080961028353988310560977174426017333448437374202202275953826686604981375223870725070587160708420424171927160254112737097274147171298819581850213504123413837248691049627873534170775271889621506963167898552571861114123644830836738971889506199089404573267383283476611762612579671434910351054338421710898804257485170444881250571115522577254556193700462682129116840026974243213004522062240224313684746245304414789235532414654349751421548467379768283814181609532438519496313858561546786018832358789763586654410721225978722658837773230894262099366957277528274806646566046265660772539300194334168739338182434813118859876611407108942057842712397497250963489034929269810494165143374629033809317238419596233440991731309802638292747082368035147414380300409662842013839517022765940989196632204035282041133983778349499988796026145110899264403122301931487747573857995970935097781274344099028598395554418164288281142883320059089945414886743782528743591851063019008241018006340003112362110635602325471804281909583748601755420284255255061262182492268366303817362838976351591437675892366786487328498329482047145924038874476775034888853997265753555199866351645506370026114104555265525632128700617436273287115593643852838760355571156986675732529618816351424925275249647712712066875185082569747140682154977454528710602702983875845274777491050361033751229854155484250934663880213586012374598419205506331074553257249640123256618106149719103775060418701089035448678185674879001455864376399804228724891777447125926873276296368896869915771446576779910977956165433405213616968783834631032841291747067835682555552420361114822022605763630676298414438686305551745098811448137764656972062331787223509245006454145541632549945431850841207100616790933040114712588509293796712080401891815939592751854446072477426431369456662307992410492236059655525374909489272333675718430038881397198997227511567823222237671857387135900455550290928419428326961314363308953135298826528989449451874146316467590577046140876385430133767004946725929746095631828913027078843941999268291393326260912144837057967589465888516537129926671327307113140398761259712234204921813180199580723829957383089080357968009763183238106324285841231785967117631315694204495064388848793121767616679603061000660750363897401151954583408218542060187093569601150221487979578009839088020214661807170184940372591965994592830034788447578541309743151790943262719324722025818521174128860268726928821946788320140264792728277578176382269497839678306623278031894192419913326814882634349660553018868560749192184437887111733634968792502598290861744487971684562797691794031382808833889024479603970464500845227977994975007085869629019554804839371223539164827205077194966463444835158958327204947442520396453145844260980994823046680791112396633965058008907074639053830461076240977332777295286303777229484553270441241315923716848329340073845015163938387132039435724430396358324103565035366530501186901529686068114576792170080088854863665379041830735371648793529382154243297857825378012201868523147612222668857697956568801886859948092062099725966710276914330625364576112535085789066102684392596509628615772647353657073661904229886340528251450632330561297523038207114700610185309983367433905453247553914428959489941811162206780825659481617148750684885502548575921101659411697567129846698586082394611803752581170903698665605988590103715366786699732375858806296180683390948369964991755858536004315076268561868140487744494453343342401963954106333849109817335604260003068841223485217912872927220944671596584915196930418695027461571268564165466110486222914493927865719503400198058540386518943651027993599550441036562784926882260657777634382001742787181414275400022959697373138924579964190761935093873462407155733351816286423978469372866138881993645691609671343182066961732891524701389488669481872700012367835504941036629021427227573797209992537619229202630411166920889414436498161803508025809994036266268090823959678822182205682271639688956240430898390750581941810655119833157965478978050068366715483279706476670130600710557870212471164163356747796609990046223998453308695265049619286278533589785780935772143654328222056437560117166488918849653286054593793445225464557798812353311523270018615716450209787395483330627106076348089981604937588760414101053942033445734203564007611826672501919210703784432511939303806030505458857696311175730124281210417212249206384359763013186233126734078546031595440028467107684784701749590691869463108395210265448996709727904376593657527969380299681516267979792237845135333851102026822867043674625291120456409854108317139469857936101745066482024771293648125629183502486497720395451586645198994421340612323855623869450852091477822437340590734479698647505896034683719811131411448339514779710937007029181329491442463101753784831695183335007640690563699981484275276212481217685481827029768387467917625442020103422124838190437974644904911507949452118392414518764644532522366594855809966715683919928226627020671845661410925455580962432231568795267558104000677797095208773770663784164644049726612061638089210616463648357343013999998481788501251866154561476110256884363380317584632912545039329493622247732870674029780810570701179011609221016231015255088419525846070700534443018278589138636402197699044878179350493122532077409786021680842851829850640598332207505597040325409024627700849566521198656340244640678381363046991574826654523979785867715926410153597937778544245888851384650260816898758465047784316507829806240047954661855080355771407303020146228401713049981291763121201694207357005363803600424010552436028144470319616140412278132141269352586705973579594687184261251402977438719415974452359440449288975301681421073956224139617757792538372291789979361870698568649734832625706410917476593705327901742699951624632118040539818389438135869725294345995138361877530688235626592577109536883880495979839674476571528134426215769579816997405517134619743511378173431416148450289561787561742823999027942949364748809262221179614610907450766447845547423477344249157968849804791739731836904416711486713912997336484577628364056923417407037819613277750273368441418599250573004263716640673585014851386017322568254211103484201916307400397081715339289343039978686879205904952281001875316580514360819687481441879255197979174481224173226475918996386652970871298194433954834009382577226394871508501823988910479572244879564410663249963452156226086779491650206665988581475080171558179430806926227816513234502775992429408600088175161932454674996077733276191651912679744884081914711906342198895964093086849562366950719355130492699018161071417457507715595502017254435316583546639256184385488288363490007890970435988387237374676303018007767568665073618281443352331071062094361818058108489733277686153622850561767556726923186707680151354260453126392957327661574900184374326486315078158968048443934960868381210282484938645130758223009561214859425368620033791937306256325243758285568959249013804552570028656446787302075102512609503907597276067571553322622248170502125808652049218036957598541255299394361103271366852867254521432723039644570841885482362022450369442097840506911108787550613036536691214738848985846153493976024154395263364788925497367677968748302880542887646143951211629430477753710340001372709586680927429201921074976925000333021450843928724991675544257548764796734727948189373798167422771792102747964929829411810593433347450039187033918271790425948349603433847496066785346153473332382073693789474017012265124283351136689972746972632588422391126760443336251642454110318049857753314234116839906842866638769051525092589841342909002076417335811696505638050499862526371616316416361984936811710551883531766311366325288820920286707966452973895700821518754626174837660303770132935203119017351606170874563996815412662707329565948188536231943453213116614271644559371735992130685491864602879101531344493411050683314775999795054916716236132901540483645936744413401710009098694563350319087307786122360189265394119260300345543007787264547062517973830427009821680980874769091192285758974887323048794120679629146508645478956236829695952274943105663540335337059190560142278375027553537055332982587258951907746107675924709331699266286007792552187858613276787726753927238498371855975091148353605397436593398236601339126953819281481573957979886513098732674497368181050564121315148744224737487626596861369755446081471662679413848558735403344788275548684525543438500703823349098026950726377938914733212022918670753470954528377766059326172936108950871067840466826018463185828421689180050910717739442364124781838674088338665089403684013741227032861079019058489450574820812922309211121814236919317516016502761343268364876240700892070185299559922056343582426313551670971637415285937870550973204480181176435499169675993014067652615059319822143706644887644038977878622540545327490315953026930115005662178477257912593899159492522044998293688909772072755669419304718613429268724706217586275541641090643213773027420978159955479835943060334869742936308556757162128386945903308636491578659199594548763949039030924933966959563728775561130875671959693169806188261324029330147405064350400641657813764829343130773001926394701844375121917741176154503849638659827664964751305800275447427868790186128345186463891388209429915261926665123591907315127078369078365728183090050440132545944369863319414252988837032262892569257923575665289357833488800197081227238564619155801459908652412927878808372574896519086835579280511991148737409229819244441704075793999442857888511656468552807471674377057229581029612225838909547783118399487036536670632094521951343046749408262877196089846863666462273848742200606935337601673405162235247526487115123628423035413717380214963765629671145508774003308516215733489036091590805104695268276578454764254018866121605999075216698537168696714743516804186570023304351615044753709486913161313570458239529872750084411449689401868069829451061802154104336660462326729393245896815944112362879542757856376359025424044269709108062664161980250176499666637776368908087971794138389941369434980319153935328184281557397860078822071409457427088879708002046945327515640311392724422285705033172101658077039413247043913544467939946575988646442607301120753206952224976491077076320458286751605688247867665781519491504031989402482520455655123954611094493665875728733796107796343629982969678389116508570592001188221660661957946638248953670147375881498503201354739044919241693271798694183706119878082350301669491100377246204446483683490647249584688721070020234996501608894410809974371854300708104720754122415963713536799874459330821076645436818400902782354047055220739218201804208280003595246874373283179801039573526344171868161405710424184498965572426461040693963957139457706059451275066272952512774348567603856110634548025606580179383855597208182679719267571097517475166189808862531946291016075105911459463902733184966138772967235769679549195385338464275791537067099560162122854536890384631537803723392197504900158320864026943616095602488462231267368159046261669509922699826417430273745786298938635182462546633409717396430258326821913441788461085585576430098349602990032974182733820112022234362646369599453649171378704122856960854207494995873209889270358249833682474497724407428277421541296287352943473476064700918814985981891416834920544725255786906146886114579239931025366960280347575760660024121415776993658903943697487267227705098480842364377205566056141814965660885823184710333495451437295106910431051961850611153556133971179578762847906694634985263146388333415198597424172312615793177426640708371006942126695795346865361133261658224948994684552343930495075964683988252626454674259692752184609270630069129116041425086289284283068394792146441206619553608563761242134692576826472365794586933526517157629065192830151773467200445333890589139464268987305069032399341901595550227296846160538140273725554392275671489472640195908681953850544008651463862228949536124442792496569522568481510918394069520005870239534264480747037904107637956215130811347701325588356318350267131618894354784464032354891548787831069790717378991166382949176746918202270295130168837531865717295079368254404883870422625379029310674662683635499561989440068876149705907591808280385649252064518353625233479493383107041761491008998223526889255231773920624227686422690516052316341346436345933596594565917921569601964815372245827809145233483747397086958820815076253078510400529978220979565501696100354613625904755184002846165022780917073167416659086636427784207523157106431272907571159232364047883043831089681912934152048394066852639186070285633515901057500693174213475841229322297794108003898107116381067299201730432056118930100080590992092810868795655678336291433382504869045457421147452461298710003380414958593031024743363794184979836594522510038505052579038921579538880572280423586369526348772861373881693499543795318146068068023129621482519444022977727227654761349907239945695085031777888635606532132295455868291016444782081474619096823904230009330083459394579539403900538014037132084972747499121165790644617729599623685245346628901232587855354146329918526908670055461385230005261154052194403486175972392772267612219691512126210703676328444837533000323594516774251478311293663376503512547983816176562970632601850312349640429057477714422239930538622242357143948135186046522019202610864853553362544068870336845567699689788754526596356690908147289266377700606903613446803787633297225568270423192544251713398048632756332560753770415416733791327782551667904151907510474545665133757261218255168586504876932014074597712968230688215342716624686873821972436875329471445928261004324346946661568447101714984671094740566588427918302570886664415177320139107699239743481567598269183688597246473492830389162968061012107316054848122170197054597322948053032957936537660940422448824817908825027999737384259584019960209459833834025796901420845510116660532486261991811041334185472514894212866746149978968491381471028795297624376288981607232879760833254537161622816492461984098991461426692574877587740310442663722198010441165149121012261334601478262174021767393263518373802656293274222665753038122693050714726969083622935725963156993358010000776928956492227162969317400982587388223042751358280438854399689341594603392645640107368912765279193764444252893528799594458598663983744492080573989335509861111904781971038113650163522463807418138922250124041619029478415700803857485438278079551515993097294550931517992808767316494837630438773536956127467516722831076073104644626227335950792334133595135920167181945743473785940417895659465371180170050405114697164120885128287603788286752008975015366804637926135230138300662620836492739776756599285983517226375471622361068965420048665250441526518381098353772977772369931335364166160348951727325971776891241358371903929423441671273564405634203123624948838964793846362217263083849583613533886897253871737341712722092768976797699644424247360012525352436372042625782056969959763642263384933381043220189971429042026437686623512238819585762103700447451642749131381315272172645977233657707594291669215833226164493216261780993442054301314080143412747598957355355286465258822888984824704015977356438796823118083806390243730802199552759038016988868551721826687542080730042853021277171210382819430424652386228122553726030231391585575563702667845908992927767738079590142688086804210667981564089534650147874067714412786005970047081347844593745780178300928655828688312454219760438523024891063546645081872546481217265090077185420443847729201675008843583262266545921971985042165267540208499629100254176568702474832193627610710188974832766444874585370300465880718036697191513573675056550210564259535511620986324032366834850075651304892887951806495640360529989389906651726783400837374631694958073430510002797057508704154534202464556344849939570092552645497953684132943917329966926190878174937495305153748663691407384922387463574257110576803646871948655264835862762584720032379796814928069374449793562189619326890382522967695000729319484775029142317993041567612819877239325612587020510736041286700011527715682715833677067318218212695356653853587931725615158034608084443669606298017878916367690393977958704350881955425944803422943089815703694956330306135252718858892909226561597055021416538112330693634949572870805258149576064415352135184986271433917350678426311018410741156806445119636898136495045418172556832842611827383469777175359609405658170196956148495910060030863304418841537911855479943190721493443220855350308328548964662241596026813753224231272451082768684068208904787267950751663655589962018621066767509802713604022182762320471634235049695753967495222223704848204555474842219578767195316353076441503809421583087647568771552355259118304519734197964389006875562766360282731070265942938963544545876055481410137309269913266367311870642067610864405541666827347451240929500573096024422422524655941185036072547807663723293092063699439338305540176320552729561313235000354585730024735566214193921572461717468129964559393534901337438938515982534734286859376601914405747022842108657638168398605743245179548428780120566389477647509332556978998684167307358555777327106156767050611904183378492942379540289557476209872986276536472854677576967378139353344894527447618929457244899871479873546244746070521265117203875871697285413987406096057177825940369951967489854576566642583880831007676510771474523268395484489119456029253186729658314971635804569463008171536223853969625621010619285328156176075120590893270893440169563526264944461814082326128355550287957304097559924561094033796269043449000010476093671133541990659563123207394769321803586072339522165615850598259736909442101253476670188780300185839814759887262669510320266289598161184526259602308151482243864381746243077407676453334849860330641375823493142097356066482625878860063124126936223340730551191175874980629146085536485451828285165078742948358034344515436357144071371806155375786958726935529278634641966230539590453925502236871251363853953572885287209981685936413646632832015325640961523791616116756414423554511462469447663074700447450747184431571550222604855510267878385796869237964954789948458580430640031734197146245894550981430984616594506548910176605913396092220183523079300348325995400659061778393284061429219504635586119984860750445692008335809132635235635925821580403375056252097707172360713019666259156489371262779220888761950592012789785360948810280188966031745182533045018103310971048023689503678881426850092636529291676109166019856126037171858609488596012282495901648615904375960268685910704591370482550496049113663522846610046977149148750614073364385816113914537458215724476419642729032026828209231982994269604389606632595411110216578573268626736589030617088805290726241506698970562436641488083478528469957924141041095854210938731794548347590726703354977859978766506191657057687424398137689354930146725525630044488925690417824948899892579342887639486109448265061198393848476541068014381781011256517800752655879296174900834788564239945861653628933916703281711184808593723063986933783567554666258168783980454770724334566378385559953559667435044077203727254813989984502776583636681381883837841295650731486844645400279658651257017686965054952647359666027144133637104363860165515886234115965480994786472420517327884470908227567198446067227099350092840559823947719178716488443472061247422703359525114454599939931165176627527121450277021512665976712326247442159365672084296236926609139734617206655890393340522003338022218969107332060374793090584442725735220330193552180230775296210759944872305021548130849312591422061711777522785379540587323365889315300849244578115345660040860295422407797004870711901106138772043877432037723077221887079091295506160786418217638130109187444132376801002302875177165680042875971843155213745673704044082990533197926341338584574905815627006467227724643821408021584699435223308749615243289983499099531355768826360407336676903262094263751588781784664738440328050352914643751877150773426245874183171091923056007303919535698996099190025536980702266831751005644038148895638476120752863655021542659206971400032297460792533137979479243823919673533835867105538107906726019573935636393852423058327218568467233058868978406364913665579382403906719557161634825136288250881883591795067813283847229011889321326719429714620821012215257618500100208951150255439266167399412568234876700488296917976343009893987523703805916913036254407342109245911000037832007361503370781352314540075760141816671936804138598824531918885877568125702017790227416514398775248106549509972865288049434728271459709125018721856765912399704656436190713264032602253741676756906097933688538357387645446270388282527176609251911597098682500926934930184647489438480921154110643651169537104994438686743162576026513056962659690161540384146994728499460111314913108683362748922833855085655596733391868261041055278665325974075247078274209292430993044889582644505656145138021618742947024073342712237074976655754960830775832192039102694687798912595402317038819801091080409302047568283636454074606773357773697793125188554857693301599415816356356221858109463762854881451658366180193379661856945396399953279874305392916907843787098650883110701653619040388513811865364463832802909118889405059428611303871994168898887662720723886176891700846730889357729502442449999159028001597662297069157967536611461591833776154712124254362297154976821628310515638974281826199031575719598444105523205937867593508688386960162044195046859658253074129042856089651728702442614246351394672575948675168680264480565656404909350995518485340807486339392583385058198222658202726729659666867254156278292051599404825183660999083963007105924872840467400533266842690866877104146297058863697746928360356797607306920802007618503887205885496866048356764232639059199515473072029451456048115856035572052911186906141346812995035739107492665395045001945268262122320681174073875919374770568290981112387994743327924485584971802856594933019797703984124973307724210827373349496326091012171078155272967024023844311126662933669383919676390979176076529857130102624880335024970329263406141150915352716316184183734474223358191907439623147861869086970755718246812245088934115684963657008513464808450106473275741161294904816101224246722628345249908204719640619998725547444445983962247741728832452088902098176442351901046422881875850648332069847135312172557971437878213828132986802564958902865957574742614057510372453986474564335304089813054854020966061025389993200599506545762896251977405335501848450182405771598856128253516637696619825377502714323775880257700445373771480343525758828536606451730159776007763681540421195099247312124587180433907757967080943901190769065068747941387733540931389604701144883389234293046475215815199782173176849347168531034384941802725642474840845569069415309903719656007393453258477624248732185728067159551886635140450534422250278160427530614160571389936109102301957233086514482681063768580243626525685153375239237806055678233633055161486433707272057391697882265694921594001893369629127280184526987274476429407735108580681963702891480715041287432981937626710879022203981907440188654320660193456197963650889803853613950373577503075328254975777930747404121817225990539373856304579834950984726740438085561996285164641255374553486053252117520983695571511565903288497059190297449935200802926304258775821981860006399038078236599772751197447486065878736218987330347927945364989511086672169971830399534729497492132657678592964621706186630892242401407598449651634416697409420222052333161320629455165311068590045263800887414497593446420818877661567808967517327062471820738026646997141216597603217214435871711258573493620849680082927487137652718109419743874671340525126369212848245381789381652812843589716756540862679140053735869774167503033214151839194586012253056322242678235355447500929337558558115491482004760505601992718559816592783200850934679207499657501212432038450144032616147395042223244976602008514758372864671377826777635911450980720705055767566263725450064758857388697140456941727458202199987953257163043568825086063155597043438808760287018727809217009320886097554350706766902126299524382002171479337016430960373153177996840584547453074076808332745825846483073679457879440779103149107989018263374743509196268436532387872828429086481115240831890888103627683872688815981317431631184869136073730470450206818961918399125419529203086254490567104044228024246794808429250324327735339845544709509216784066484255776392494906143987400905530047188898763169142408808558878309119260931339612318986801170297119967940936441205827202913735109275209193907807867151886052775186172768344892873268769968903328253786423676226270304588360852910146649948954758254583682769165644509709295200170515070841432191139083734217252406484302650849392846314865205136822111248706506126027733869851089315634188796878138107168215499133254298356448024064072403484569408832640336599101290019589569108101998865629323414016120174641406394534480790260421944464136344589484303631543840198166257037759109321067822681702142582582438895481280699590118874467930434877262479853751218640859357081756328885309881177995258176511688406422680305962994515899357010392978089149172399209138218248911286967595742192621370570257870998984925048872873397937174316048571145893909468849959454366031382954506088229590846561144559174319088429136034097052266904227033372285150833177967014449185846288858681839576952681901060256180227785636678618921537589675275938654955232988286077291640312977488525000645437523089824756686474875703845030932856544766479734616629926511595406975850860127774966533451386435736883613851641094500101599654254751476798162387991760244843595713629814512484727713372673352686592382652446399599207249974063003823075178440048384490042638438766505964263544651132424593982043480562593173464877542690331490952500248193496122803491914262232437416337090551498362144605882392254432729780794010035934770769588883399243909929284969255761370540992991575948231408363083433729372004857802368910834678617123786067330180686462411685856581474667073065362553833183149621502929886042034921875897255912574585492942254662074894016953002195492153115905633136060285744431359056891655616691162337171102057290106408712023861195920154542037687168247854764549024331131728752300714117684334175655586427890200065662337699232686896556998553340765860524681747253954135637587506055170269948355506046095655001776702440395121478890508441316561723697929431273329599921694366220651041635110587061078122561769967513751848622428661727432493395593851032723012792436332426952779002033965871727534389050641679887458276184827434768563681406062705928185966225755110668543728528817388691112052493303028256195320312910776274587590024785096460142641447891113101644496614158349566850024607944051776853341961824133849288422913940225306956725201907056929663033539601733833356678368317486626760520882565000278543342040572297991726335978272139131385393305340343497409794730973229218024535774930943160862254794496966090140308155537300051451814403179999120126962033377117490140044153105027392469611913008021719003952009781953131047655391370556048782728300056533855741309139014011697701171715162358340744298135679832421382727218104609530298284699265804197820087522769580564711167055865707921597993222915639350271976881457273368223238456977928361178322393991485264858709481551188399550672211984778123659989657597808724967063713790125910409560552088708214425889832697998042566321647872551326078623509478123270857724768050910109305340830877988266773536598110011818735128419406612676321630708013256536629185533781715199894468231324626636618740892202045744508978246359947228947162443369502645333878598944327704224228202262547497559426805145039613512637753687838104644781672288582415922778725591993946731018367950625240801387047908363177153148543202104722199058131920667789106742761120693337767965721071626584625851503287277617367404477080577136109904180217848052495738449574529848605647293945582425408441200982389496429315803155326410029848145188853281348170794709414035859722342376094170413852334709275620348106448198678305749972799004503733230029922098485667956064753316419486161533399450100067216955462665348488875214116703716305591743191067140437183464333784918844329497559020965314734440122831589179640035117404297460480062279420265423646624353329761047018858914942880981239906722988529120277451415049045783417239853260857421761137178696848250228915067116820544377270756786224497779676601958922244574481906496361388755485697558747364864583699535022496970009201137508133112851265578642876504297116521560661444415373337824543538277552353245398627017703921295207312911825916853488037502018019837719378016691381478571882191458725072583949195087269047337457910825859910646326001941970512850655785469681305784900209429102391622628051475963686182807584448118802721124886662618606486518592973860123850598802210535804398907228463800952283876782416896795107625023452340153220054359819566713696401609460702012450005508674395055505237831498826332154558657772105580450562655632373170774374529819045722732619122605366406425603546512221026903200932950993702849382106728950306432803171019597611596956568857259330417772949412382880120844804336332048237822598029696964562379088569952179400129746090538218142219192836143805197005005327150800250919984897223261189304868855233228011957786329422937881875498908780556885334836295271411082046779374518050843388588695172316497545615772063816818473040021549051790214345794459999338886067723063140658823171649118388430198581838844062843448576218233213906245225350514892365925952192448884672066177653063561900347178363512521723436192957994728174129929044069482476122656202078373977238964446088934059811590389035590746916908450043024468821083300268438160736034249237286646515671090696592127962841057534443904331636841904502970042553085287049152774473452076191785075459733730286324416856571364525734289001823924214248899142363193622672268210026616317914930892200928117182650055536558370644811306993033029645334660201821997076939223412674331491924866638690004264316598995735026905254146425036366596150693078213410262152448323655187839744022765652476684000861105045702446232355867967309967387840534494511613545042596821846622743299272690764173422848413943962192763482616449683926158349053279531783032109422182455397481152626000911253441128086250590138340137164671786302151158530099693754266899879540968543001065733677263623381652900634216937846658279209207538116771388831184315995247643285191320381772594343372509996079170652294247254884075510977400077220304132470963403206835577035344019330933480450841783638445995976496551413142216621762653972619820714568658969451923815989478011873523967204041164611112759097014602443723181503747236386752035328559096470563380288461979862862536528407580329019698764766030056651696353269906558576901525077918457032124791139682316872291229736960029669555890674283266216629809881758714826067125564388927039296527747640786221533267126970450216296179257127506652071756330466310711648831525221550806893884073207776414759869551122158201050128157036335706153662472310488884244259677518692636556570523654343811903476355289531646450346083008814295845884020340752922804600398966490503481969712996476499779925291029868542096958775880994410820098866652680466986668762416267480626447060426514397083088403201024706697228843669799324396730618078498688044863244054680590871596035887251044554891990645260902487043449012856302867221579983073222041752014120292554656242507163082273686560130868458968344922577066912244823711085498114480318053333514371561373427202715554430995492034526438356280552807996122686020491116718170155967724764723571822107439769002376703993398894603896357500593843616849087273658549844684859880831364811555207285317339037045988992478590656178784046127911893030603197445460638191881117924132694310645130065558319814873268870189999055464414153475725335575423211684083388189293047961716594993550298497856502891431255209242335178290906017138052397734956884020615443323104326680295862980286350237550621541752496966377851636308915567668298332666053390342286098673210912683047288773930040484576172344896447005918007151548466841202748190552849646154485560085807331132009029091223268776879462987521611209262717258805286378275362204123723000720362119770318017731736975522738862377014883080376007473236094418221785168981729048553126826173459282423173565167090882612837475142962414057020062880355953632145175994463219626707590791346935608470321863530582063597707676165270178819006578194765044454312570316285379127739830155198758854685235608232560542374496742743438520163636704736510562304709030421051293466469006742701633861224623808940516625945062525547178478983569404975394606581032041382336463863087839475680655559201404807150657968411741184233353401230349816174477435364068883553439352841236467769897437877619451473266446967838460489447078948610640649484298979815927940821892982273663724811399878831795056565458198704186048291102651614492872465375604422505037906141371790920742428312867403771789209360593921871788385119937229742917360344878639238117384255525213435097734976349961403023436028559243575161879092336922338334378448653202604244950720508912759972077713014958482427451574203769448371987706322643542917262044960440280638154337418188297699902584601534233552320831472854626546274904271645354264693627533316566940399197349275636988840138076297118106913035055194952357967592326206277634947250783819853787164509766221589673887723999288845866621276824501030400969807756356707099986849825802941852324803696383445157902342048702005511530550113012774290024995291173887142586615028683560440860786708626621137987030442741856788252790461684592955266857978025613867759380650753066580656831707770186458530451943893731331458626582723540867288226439212960265383441784338308305105899246524264216080948551051307550475737365221675547731554775771678455458711032524868952529018303326974968104325651392910345567022405551900897131671496826995975213427022589362613994321923151071347733012219621933796915606163323969378736347275403210866719041192545184556638900436463322431289233507534672514326889550106650449277512642960506858388399617218615329662001449243187145856479124906692755033223647905949165049500926897699030984001941330921126585750580177850477126707445957892805444153078656366133088445835765755493457728279561327419652441700231934024949479496929638211978393482007486764376931301901402372394049257888334936626919825175431116478114804462677465993609105059806828515296866695157108672765873322330915198664549214374998567402942239964278742715380225790704599819731777621314950814866273273438730523273314225786396700164109518198831863182867921306471023080603699469924437416028318022190461081047755095674371945033934521117334836249442749932012584264943686535072824862832327508801419025119596449865422513134361844955295125642084342405674286242987801360951476448708865312803188514814112928644567831891649354513569639595610630836514555520362334024180535841244805942634867063217589909426971206794758316523993122967959767033778278771036485773978011150131118012272590378919972212874207774253232496949294058533846201627438687011953958864166630142528935022363260237843810695434751832933364939618281018206482438630555224406795462351436610540832602184724924171934012506202530297697082341680143928460818559206901174223971529085517555757494967098185044578759298692209060410783922582073417138104890004330273074112932669661806600140082840934720462064827049203220548025874679695199543306655827397269445405371931923139485615309617511101910279645236092466980593658853408807087040212263573847585065041638237307966083579250866070414058496473493786150875554721573809084741546841428356290577909635843757704185045127083226915831199545907225614499419541454166897598903305649754553321654760069812416707274570144158518881284745568213410157143666195555671394879558657830105534158566688727377294948408014443595512821039727175913882716358736687230018751650882951930004998711840315911829000326083009252241643656941680608794783193080768466917283819435938513399565145889420013757521262253654156245939464517378448559184783468319922898034282507011828267869445084349524834811002034710801137360937506434946259300808125342471294069523738211210630339839128968127149730637058936605899463861587841214593469230514907019008154570463060315320571123694434790382129308204476165698560104862338158283832526922509562227608750904876450376306688948168537380864683190457550737441226310642815216923085637621935463150256048842284564993773274940107528580872342334115968143044322153557065607340913449899031936592030115379316548279881433547496219633200205108220345389107744403917447531092066759695415499350338203372702627758442064441248154377407808645850311704795858385051808586272355263009471618707734871214147077029507407560053578836194708642847264029233220116865749070454056732348203959062388717388317302614722858454141629163133158016678250726681184217956009461304167851723722112305565404701066869637267010973669961751018255564186660021799960419963434632519537966807516433967150236472194471189946294630936362188129872149748116552653866799679191621009981686189895179420459703218388562580191721674271551694210611806261633099062939024681869789670552666844865142479275448910433434181420161343687118732130691391769498509141257797423684285949042921142349708864999686193528536675006802036997360494834161611222021700037829916002737900703715532115588966384601919780290658133715616072282582912345072633408079491335066447935092342217631208374174769449126149178383802278744881055136228605331395032206639569320737338512614930050803279633838289314540405490407395627009694871156978085165206097870831377802270129312578316013844595991379227926945594092150826919118461612207648181589953376723055526387471875182080049843332313054260260067208495044013665274120115148428091234507940487743911704040433194702778538124447715331518930740146500814459964023310178034632846273221761258777116414458952375924265320020440738578652732404877354266828740618039928038323756557292014149407219203303802273650536029748962684111636145553858574200280998178116461663182850345532959868382770007152171165321496618330051918625584164331584062169240815948049285548607015267394332067685771324513018779480585097028236731988179735706619858330700722695723429461311493431888314735311878787785192745680361083406383112155352557357268088367508991715144810152049408300050075374259321483308464292455246803638233892512720260235378223485503663460032951631562912889582154568658641869981656301878168757583645778033247357648865760763643233203388171011859278052678297667032680754179841917631190896754160078244796728165090853674054755064154729505346501205528134043235912661501353278181703684183429235686344872521500983831902846953172342091397342369998457609807231436852112558639001991259303162367715864429452780305195526249613955084074701828722630267916771910522384829325710028512219965314358735628598346036595094367981143383788679922368398735893611170803625015493256759770809183133555690750273734045915575814676241653409721669534574596778099010121427167941498830173954316882284250469920771719046313773072791586083374081965784629356645345874760789601882814543696515338527861293308804997167842359382029833595704437499109432463346965500091737240231593291845659200265169493833205924573621215376342920959865401696794411907407414162373491794021530961618864229046580799304536245378895773303255836116635465568187673421411753103668535149036739772539247554660300275874957879603181877573078487786352106879217479943326842216721313366488863618047316505369317365324027495603663859596344999496320104020933745189458523493221115059470781360008710519390534848887182754888435093310074322152968282335775542609512014380072507557646677424296940908746283894515871961500955333840596642300536259723175790626838580028994590937160609791406336329652008135685880065545257403907406900226611035793140637589722185917206527199254617705590825731441623288825377114811232480061842898253913580871032113424504650278544853969821021997273050980383882257376586072941215272800319258375380602118263982467692431627965940184232840829508657754406639678405600618410628919625641423083347867644647651859938652827111696657023975142122722535382232524704338772828655835960300354480892233095593416366166447419853151791327414412430860430613507262833837804926856469548188559210027610026917916036191814918335421932279992427808644950436602305742214293392265232513213605526710492669087952822477590168611605563573257581351072813191859371523160372164782252078599888468258490886761809171671485296292141125945452879689838812335458836544617570354929664974429479130237256209680862312597829390107665955533145538101012289629173115838617974413348235650752472021650457405791174190318667538795295113539629915929627749573379018288517221915856173296092275008209317683021333206489949816894296903913657599352716269634256718728244602479025089369304641089117949802443218608699634162910158975095622576069598961238107506737246104353186842771668334417938389266953833392299475441882024007930952387659085132292745217207210125202165783076991562835067103593009557784888377314564123169560401948659486358548666521498738808381563555099828111112132937238049317761983816019590571148378936150642036024987534426228705224173447394580420811457182111575447929439169020350375257854436837159448039451909072914680991720761402108669711439601160904980775685190423293701826456834347686863204241175577885038323890186418363429834601004755827692059511059194969569057140107903606479732891285325029731796499098953597005685433496384189302106670225739048568428208043086549277311775962675161008437428561039451428127819044339493905156945104413202713912668860457916264519201854633044932914056403229573507644703053202119705652388672780990839373821124707981221404220393191640983720685251408129292930621762419438144137324079038299495888199675839973482699202123810408758072225375088510296489612556575925704652527264795461731573511734577534348742472319571968140683523230337827913255689472096139299352390971763079174784430146420720876600631615520560531208016370861988318133185346695923944710464585159719901705868997540948647785780784748726354880233526395260426851229010545725374595171590789926188254973591200557830826770002427791836629365754240783993407199569982906376989057840948839715016085077476624800342653982960286017017632103961659235323960052122997917270994255622144167798278655960743327384623357705322581525285019399561449818322646828414765687165740996147203872361334465602377804475154196251687152024575432171444920174188577064661020563877701503577642823504068709543856113091162623551503324696759105684686262505916184167357927301052104455673021447519038452268694800637606347655849529437156427092219726241646743543033758783463986542061474001868936283712352042759038376145088891694423760357690441397613805934930951731165473311884928282425462886709581182264207832150737965131563757965777461640244276217179634190550444943600567796829673179953400844917772263523689495580273032289367675871137733100944601991811029114635966096241781248258961335558622729058502135308522020624254610460671186886830891634322796305026863453319105419280451454240350828685959782975166714174291042286066446548434416172697998321041117518025358889767014685589752868454546850339636807389505597153714546896957096888535344562307682356144728675931688519458649618456334547141958966023034309751321236712854890965707589177344078602186749592527296937257779058027951076058096013773820003315947079710165341527254479682294668636844804578369290346522703911373671507126790068454852957232090969566833937115816110224602836849973794263198534395406081334524788766627100628469807326616624195409782792259768469613454642288353076355248383287435887512340313258353365293077632591313468929049837894544427155800712631431184989246992505829708187918368653778903388953715932225726764787517414463592891881796668517851317522297920217272855214472088630330969162503166226705913887051701570387442837396192767019981848496306352104993925409887681088939863247678822242760286703037826326485086814358881109578361743941842447924927381560839263299071301684325843942483637501687793016093292320427818632619015920493805209904760166606138042953286614978668199991078454836830612914957817933271705527199486343658710916656953160931042454767977880800412530309308174546082283605068195973686498959900328644659213346317062539538754751047521046502002900717457956919470319113253651170374052095215595385019375489472110893629910188783083077847471622236971705507685575187000236616855021741419180368821764494050628178045574424048412672863824911612920943682654782296269543973853171111930340565645695578809827878002713881783267253301331493338846076484946149558655778177077097935398397496018693237686414050531116206224540816882379072672838752291719593964647847200078212991231971855817896654379539425076300544016802546825710302179308284880999348743387318048941920528014382879562940212984531111282757877809434656845565563514931595246044870772173194990776262868664506444089417340061647391343526855487058944549724586941643609421667322786312387089890823326086460765395620222616184031044326031348236731406967190372099911302489986905918889570720872973522933790865451108704454854143034504586682526090442189250701480632985661729248652535032780610119059324802044282855794107563383468891539995153347623949417350404349080532900817753874602440672644137750131978305033850831379784001577958119505142745620820531299883800551999158788914188741023235129831927196112364434501372830058696979799425248636963705302796590242819219549019895213993011653251960553632464969704114918332759215617547653739073264706313659793236595918357058677709063884212490915186516703174295409436793399251009755056353435066021412768323533804408737066424678291704974608420929248440930673852049807413429653307985509762435223666372399740721353755049192433933697286069162905654069133405544156376734944035873353390654349295392275789693038585072033462317564401977812906708060667950353578228834447328868205094966896595081511666626186242235732277135724473871735867020561323128850780441178304670680683649661765917962101811207579089905549110247223198393827275776508856650785699414995118222105704010979261573542844491567531018419897837372712417203978973218438475739490209691149688028676979430687794380632724620061271214281892646493157683901509399129834043855395240038913650564253340202157177093508207614813055117136432615583384304355871057132486129154285604556475321764884564581332848712712439682654699217956097262873497790958141582437800331381110903340668739739813787299147695334969226089266017730365719557614550274030392817694840293287929077929109563373025764804704221217284637791190170551423229140503864448674928300846295719585939455084716674483627378971987882121991822362788385300482469502274327551993328184818938619135597674101995111219302662227896765880939946720416010903447406851606343610606216494567821469085697689306626864471984322362796456955496708289077611760429768310003171037179778500809272196542295654317062303508037198753096856539191749542122219923429311679108548972650124896154039101569029446360406516309467688408254564014123232372473354316017176148090773701348675426682233927072870547560042711656101874502864636653414774817395813463432748274238893010339877969214605712985843890580763689606081664973836212527521951612760492354567830483442876258726129806755316842113648413220847571794586321134296082790050121307511885810595359421387133639530779399203346351511987067612613935177251623586097248468982691998054797869231703993409000929055514977275739798934087066709273566973114283404878530318942749845052397235347440942942329345130952669758637199688704777039670965596831982762319597986685056595276427848211169905826511091841485495912679164818746037710437848374833216699605623923746378455364235916986860514380699778057590670605740174813539522098736872206976213865344347622401946122083828226482929828207154214442089331687670650339935283066398524553951104673734370378451751319412662481249398343118423861356333576003687832156817884483039374067394564636388369357864136803569629557772664410381808138211987718036291885424461807219182769195139207126520862039272616232761236636157005511119804874524793537227926536964360309519341602402720342266442134145681888842811421867110148813103248835831211158501579413645714315951517248261201728539355662864871411958202581813286454598632015409705269419954187874321763058965151293294982024104465156442428347844030049275668408889042925454921198520070966171339287922708650115410234882236686177096200906664249695484402637525494622282820797017212537493016210270595607671062696351682017778558634695053697539181026504189386024263943156356531555689822312857044131033708947678741940885146127399554451150604011365342076390166737328531068946934455580923306268966539870507895564819548311670153050897921010958181146209463130371642678495256997535980504748427197785292415383587289380276473665756332187832397470147572536639493036190116723357908737693093943178346982476396156925379566270150942583964034588943429897491669662194547573899646702817593655216912719215430961408727215607997403960289852993429678188706502692951609273752503358371873321032272093747884913103923860129758594440885287973891346198211417694303983161573615373823909221883473698022225464371486900242101692302423056824348888939790080231235202404621990871777454251233027356091166738967464288609559318442381388070683966358459613747597123280520556841846145286072483696301254533685520039496111545618811031750131428330313746972364343807762595884850345364160580502197688100963771192319906204229367816116224679344703810211440851072182138261313226042678360719220286878801273104877281669374325677946209954709961511818790519331683303406670463101104707083902945244565248042017172246725566411069616825694634002776701040210235062600652013698899291793509320365624827850891062625441913158254241036536322532307156733468573826684010113906491085025631086230568737171971217086238403866442163635328536917730382595247524829290299850503530450953724915105622996059017119845405212112236467985940639779612624226682014172751945507286822457615402896659447416886434846137246349135205190919646527169637776035067594369048691137768280486584249251155514751682676780848131566276522362890999654616166304419219778791977906989493102258466815945427806191376606215563939193092572916338787155680681064889911068400256869877690646579537808365932596129061431984453428897083618036632057227600639533676119977704567312247923487602495520195400315095897098190608948905811261061669575368594360422832589699254271888389338039639949389023182000594494802504605525497891881438601402863791610732262542485360212078761346000811308975075654843114108361283408882202771035131151690132708482016472930294688791960109645490941787349917197486679230543510118510205192805147394214004055341799429076633185379718063049553082195758254404240667347460142439192203725206535349507894155960287274621638383475195431078683568240008927788748481970654649673972047994642420841725162898346332060076362329950729427230357584753315883972385737511498383515608713645598858957979228341578935621166323653713317047105555167996747275377496839777856460647686763487708892794574695143404963725695973438365298468948606566485256257855379199831940052865480567415589114982900439660671247178924504958048564721655835969138251696520229629570660239822525869826730093710234157633939732010315073428363044276352506706524644331258737731730463864863523431752628384927030072876607785746315031198460923318954628858869541779463536591716060543508551497164436454736787143236075704978841948062290348181990538818138469171153290051587672310109810454711064680780612863695694235029781000952198818461364416011824874043051450928939756869010170121847127764896902993689873807390514064904447248086917543210232712889892831896352918712267024018137955538591920282674928623075989173075257109826745209665784935749697876257819886364980683425600371894895028989169655151486082427898943985473668107225931610302546862166454341855799422579384800599558205003860738794720823114247891936300719496256134402964490707474830210526309405401893972381318012778334277816985253937652499908430273708139250595538179085262171843943180275119969184056993135622656132222360655110535180962585927343335683332166928390449942563878230584175368836794404264478880566558568473166831191579679705323539927590518216901447936864433936095237741287924795537619454936238294885073528507774386865143492447671070187820001718462755373728638377853711800768366769660720721087974684531312691035659894047546232173132498165018342295487819744172083165487354504471524461770064752359675121500114632427126858458559284528746195166886239659296827004293546351896104744072763143140217644160764062309182650615568398080950566852630533964273225378843925993295980812434724689624552522016691340014199796775016090396962281317493386908394473751479264109584802625293052674025540112030314897251269744385718033629284246369511434035826762934544212575629502616909874792473087736847573350459455004925489170456152524390787994468291092926460832258489474345340368821014567163523190536871963178858896292143842155850358214614244253232011980226560365331935975543500701621637242180794008392029287288442441682676000003908772156292510725856190220134768843592830363375560877671029680561437440549453164488014237273461596236632199853598318480029782315366878984136932682218856096334996929915675422436236318448048016669449058871485557477936003603627692764283067959399194292673350679101663726860259644266475914953610537514171835378306582661875797900684086997226129963505157322227998538236547026421424950987991820900442531087545068959508208173342709834133913969315792829097200506548634854282073229631416283620035236419263781318291306797280607596006761621135660560924890422327510237131951820810766655178052338486269773378126633561289555782265048771109170928185771801762831327770902551267957774082968595883138657264895746691031732412795758124031346744309039242978557765234238024736653838306420825653031720817200818830536542320439620950369893027425086080702059399217475413534835877869480825634232711643748779271098291615413181033778853238070830933600841671920541256005336640610631348589977294179604159625543454549765470477203490992143023080289437761123392463993916830615430274732767747110273234335083410664625987493812189506837719451081757131160045368605014301578173869136481656739053798050034887639248341693352721654050614349965544108042828105210247724628302458522025926391691309156510883694217440603824909122397286311636145263715890323704668540890284092003733875634566745780170381698023775800372332278981217049164113370670277042654125282834893037970336697568974078406313316754315393409084429537891214445938568634959218113379865234707862120372726159178600620353800063971354282179521840713941430087122892300776037060653854080156213526776314774182493757418160489395044018402694708225515067516371569662623633713384130430283798589931049237034106700572924172578168956614689469555498100269138808082072114910893518616521574547526081970302991055532332769768874439215908367472009046056547890850316219735727570495245438790656049076408048808623160395042104120255359432791296550791824702276740240185218924000847865881734546124196516648326151083786332185060217767138537071397240576827322210864370147018768141779089000442331822672397611098899955255903961261362026974045425974998341193912180350535161741993093549608268541338224287155184287877974523034025668079327436059551351241695425966441373370920002324257665490529371262146744703463679258391446696443765771174004752372301810661165047748874205145454646417910769331155877844424361671458782295367783119573593259924967823831934107284345004293563484396795671615353630531433467257532766611528966126358560409127157162547459081465270488757470714738634044275586816094302700179990434991209891209027928916248131161166842612824682466594248480336278462407230373808584530908674527810782149126406291193104951879166016112138828269653474724350390791718313411469349346198805947919219736486824173319610325045569794249686583582021425749655601145355602425902166772083736137228953259741938031201749803240486941752659450805684550536015887393803569233285110418153415269166500565233401071879364234415418337087879962702891335213500623578254027504528684266582586738910749160732230472813971506971633402216521484800837011412058572743709856917816668866947351054804937923384716187380653563215324310398555887443198776207793895491723540477267835329657423819404344587935517082750707691763401287988857468803113478041913856798726864072352949421221068252864332107011559750358572351469125951712786196796260309688134946340683660444993658481909069270552273171764534828094789123390619192930111440325299105735898490701747734904282235528470549625395497393299997519771601152858536563104942108285436514673377104672252691161653585578767457806070235625445892269777017366432118150930477068337548088295205244893621081394329268647235168976458848651849414259629568019018000503301488693915288953286684598845664364908295887541344263944664681123151301130529681122956837795040655650564660325150566594178515440282754970385491036165525843645859658476916783153466567321051892963805912442442209378402275875594883742624043828681139485133623689424662540889668412516005349312853219153756089009198442986572864685054742024442390971974596162047997716303134101881550571008165143387401926187400059379147944138616491079484323768536739581731308133912878143187746118175153278300685827670929557289413105263230613758120836160601105202419360290407308939371506784732333838235300571967602893207743203101818591643212584446275700838502402191880988191739987783028624065524609946172535285436750868166477254292664161140608208583775450087502553307316027329129391871304169756888887539259642973580033183186899887055095471117259321947901007996458377383511997492096670834503437259372377585770869861734360591897047253484521130951812409791357105841363377562267581640482112191993608501767684605014462966924157929170124569207550188413124667847653203683108711914450557219524886113145577530352293734454727399575381311752164903888245305627969920463636096252251375600414033995465168991260904458530882103074166074936522045058555574806433875473422433496045699167059954251547919736662177794749609599141414488056458200966511610878702095310978978204357453578699432414861372319334064060793694074996436502555994740272216520031455751541823965464194399704155605579784818042339024723963041127862061514503097884714903205821956803413913409021089722705782124995426816885187236261485168947817315135637367093926903512035503138789426555274350584654714809097733353377719707362989382411738626402558549947588993305004399709000998970019883260280105121666746934830608241084672848247393380713937585023873481729771420136911436815061580748357492768390546066529085789073611940669156247448557531620814837593859744252056235707612592484794886959137192811570628104245800473553844548494351546117321456451087397718455907079979879877888205152341365286247766293618187900274536393589439687544061491453585920854767606357239831856642440514562754990504897634590943742225507434542355535579811976095475351380958021276559103274570266334414600549920003178728037390582551109952787139842516281618061436031873424392877694004687588191585919971704299041687567190145153114728049410179286412015847191524974676429796012778837435011496370473562058012647707631547078191348110750806995880306769350850651940579445457471987128426040318871586785634539459068793346242444423881197266026595222967727102055862793302851937954610209248356100592271935653241248995404834636013201901746183203407283880735800398440473188925458259621337614527204187553545958594248349781937674099334992698311215192723691596560623712862760313365728490903987835315437505236754348544572391553104400203405970108278786043058139796384120115511659340065761398596584480997654744909655417085282293521799176137856626002019319810721882780608090095832438595155690654832377598349859633628314039189057933947868719503506780805554305675381616988838837127248788521873931010856233438697188769686381207356559780999368774029172167091027395107237914259428498830403124830368118176784477727085884952053367134140385984978222160645230713905181042129843725673052669741375382349334237331095580903675880415221614715449900844952604942434762957594222952726609499213720037371841118209129392341840152171706313273074526947919354556621627064156381400809367881877110608350180457065390255373753315790444118948450488714845593827471101275041297059498221871907047264157329202534790547747377993991574365961594406427944235522870534427936649472786596849081110265394961935066861660440599518409180825781886672748473397359830336422969871617631790615361236618410361780212563819301637947938858853900637311379504938371029205133518055034995097488106451005321528255986054414082933118063439221125763470918113179883321591852963906451629136784825680781021177880874589138265669897399608369652044277817120317844196152906849114798889411126119701530933393461819306784104225887945738259053041503378732702520119987432799355127184238537651549161442185737484999336622928496444888421287496530198055707124928712096777607546898583064591179962276989941641936736628739932848157346064599325816377499514494758846473657700521190490402755316532409327568919050058900380578600745020518100595463499947275125427535822384263568704205824429909018265507601841906013768377391040547283314625863214096238352337018054920762241916630817430201246871304667033028464203365997407431627362238352777297144105917820139790230389300875864677869167022136936638180852243466006138348218901608549481523065103803870245127742307126937832860571376397117250213038830746379702572634724858149796463471465401012359580467032410296199258633996989596990309379602195603661434650311980031840652792259546710245016477734786236285195837378326198312406652884232938747958041406395870964200319796370557692139694325268625305800136570935370939070517479576618160294679586586776172345256436243366624400617671645722150190139094931376815362331213913891866098562708766647219586652454120218834513539708645348584210691311266312042122275219105841081995198954939730142077034608205046149601422369025572330424889420574451423634399533688980845796149437737227470090263043964999149595884556635546216540593714008196423342080556295271965131183088018759505449304405072428296380017181589461356749130343847257690468139999233830147070007424212546647599235939184700860463461990397823432201917683151409855841641263150658149935585765630677506687190861844681579380398783759249079085257553999257538128580210481970896021149352108854273920261794685013344662642690812806658447717809351532938821625498821767440421234846145394380279865393301950240723616440340391562349921833673683778917123748966474999029985930939348962390745457879592194888643299843702197333287419209498915740154436126993093776204933583269374625217155599846664451935328884558311712845417049772477119753593390385797993120971290017547780761511543767608842354132960081381467348190429202644921536181537573671613893807213291512529034942092265103714152363692375748654714128136375353207071668976684286481780930290131851775398830594709685102599517157036508005885542143173020557896651130212403284514528023034767001976342293522558851839333616251345740148900064021362036466785418123524261709981306736734518208047139100102164906470781639603531913999845514032817681875498544070572873118256907837323492962467921313872479468921806678898377056118035510774224540175094110241811045565364817182132679970949302409590996639788160955513394469143716729262472483419476559328321061067003264525408768280237605840399884876427485293357811647171587537889025886713634264618196749795857124756194723875692878302374135870942685062582453694269696815791969055060361976835816774226090072703106716376353584405865652769324604961182426167716400693594357068381841226704974462158394766014991117499052828803692623157318458287592646215076307581066218897634729959303774735549623387480433154508970743075308698362881567621416513674755841763686692717769755535705197455550899754200416421013373373935054157422688197953630059463624076893385302699312900873109097770562753609971760815574905153278791295588728651938628071037719418083785244965954121656971998101912073400200310764878060594333590695034357651375562090383935386645196768504909520077146524239224941450906133627006280656448777653776560340699705227316944926689667646454291462476317013865337483544637015229070796487777170998482466771803634091684470080220696301164955160542217013071743411164516617262925019822383828745694380704927899135258293681159057108802390480049431991235052598875248525507271205706420799060344924334893704168633345927784531187721963943857639885657288890888349156326286336032203018687434816245122342515086283058259683382916140936017307449641849467153322798595198617508925424915394636171159185509141485835275774707561087190182616160458841147078837712781729438201692961610107712640557858317718104135629486754747926827501992980298371834274209404187710919281574597986761052677458084094211240151718431370446963928287641266308752287724625453406693882431133785654060221837466685755074300869450723000811066120786204376707761743997044892527540160170642605399498268198154250814599523084652076508938751619247312248062330754727879809500954608582154569148288132395386803763910332755806313961842967782871818793339058983611173519655138484012722213812385297276528556067302111364604098845604327980634345980790774932621344673128899595756731358337547097245437218485687595638831917737258868507977226059540162623334622618707998810901830965069123160781503108154768049168508487246368186289752252643249255949262087367301107220509983939746390701932788343071674481740443095484966111750016566468043200342151274990962351399216980560691106595226979281558399178535831934180199093121347751364824536765008490581861637224065531277612158827289845167857535635015788924430479986852481385121560719403873882883033862572703850017616405389986770991318377116435699090172918118271766049380844605684291504124716751075013340952285860443064754960553153069998552451728123220448146071598235239878743974333450881252767173265579538284628124119175487360427189786225742981963537697392303352068761700706920027703091213294556549677921751288746724736436534760167675420346565767231006051727117679255605102287798093932664269312417356251999253003089841021999696290409598954514050797516712127262119463080515490723703585750826867151654780275236917288613181084484103245511889777821386991012697793771621791395488000039347391022160905372607871370340892428529707300623931152909282887398943079330274925131961957552041556484883570058963420070836291334540836185228594958919560434451609220874712914553689529037603188571684203019930154286514662915347258472144504216376461464858602547057467144971035435131055270143558485571223582882735246121014494746080865702129121163816488512764294933549467963653252251676695738517984637929865258656935431169511262761084869265282919225033197092617372688218774673519946551470593923741564172761796940343423528732059738119829407458670355598259253344976876785101831864772628928004479506552574929054358314638446746638319357190308711962649028306431316321626726827080183513009414475302593411649813983240341545791596350418358466576822892318602334424712675633102596332343278178877194522651247385348642699957232821522139886203066747487602966204801539218551117221284576625493459263572003642124160615237753798734132040190004602414998282859986192406615376104902698842195120949082365254015620378218824700369565889388301340671262762761046514516548417926438117609686713485862939513185388577796863181271763823958748797385428347975907461793875228441143306380033573193001899880803405269693061579559212717957490687481034295836254800994964211853656434123981371197176205741753234967503769026957083719283036919835830009924023888671901276918758399655204946961559610588920086213941361291349516571494776703343702504083781212598896074113121945008627562518372281425569427272237447129635851940749519661349762115860989050937079298207959268897687827274360230112429242310887947202883751198542361823472084721314011554370628094426782148356908795052742439180363874670920867244257985456572200873661465892120283750870008421587279297356159787283413689713442846556854117547482188015002014471541593628299576026701826480088760389332900807045153391215702481656849556518093020210266726598766365186557269586317629066613591994062430325707887747546909722251050354453718326513493798486753488443247233554797853081216186247030994504875237434642667707511917682879410813349527624157908137842355025779517818404263722102861659412928706347876498307984740395914771981568210106964235375053585394730303843697837681667958649626214383866140266886629086817233887424730184632997893580533139113587984499676204554897789920920988790343835447855302434951786411302903572685674444817186383583043114424395443288183965274159033086666954646914153395314335988993009891779423467387362761267152463370613931706105516155257164217310794766683074639799733622152871188940737139487640647502391572752128876585466367718097258389778836660342328717390930685199021496204815844697761157593957831521976662645233947878436649885421950202505613522439325800588815223898813567661375036717365729114762003282839385008783508284209342903108074113259266766065706999546567869678797252990383159770689537923664824619688223327100212590522970245990063771793420804106322762348240461291757497086960634995517963197481454589216461805184538606309779402805532008697482266192767223274516050662760296103254646103856325520040077956406455077710274780964035401456041325681366078879458774929238982983880405175598775465639508039995644011016197654073152376867156953434607368339297216997255649926857399546166604751981592678758923719365624912646996031971126648247806985755988538539668270020244089597790884727587905900710682215388519598546518726394258661217019325992158336923140246076851276272276848055062750382534743415412504306596263545443062841000263420441857156270064307019408418030401093484383567055846775521879451295692041731592376102694944948211411499198466074101808154555688065951842723703244718570135060250943056330343918520120352525646361811524117683447272343297454975091158609346901017249089322057610763536188103018111958832275002900559762677072166087991924495997911701052456492909106804546932668519298487594786537340679146308578265551751677241630395935820181820670840288070191387893971725973174863241725505412077482149870911109436651657771344330425311332628806886858918498589486118829205270285366829653937989023953522987917077192594497761964953707273212166842657837216874227902391775431723308098973389040454278494918592608505938038963127043179981432842394575041929294324583713447630974177861113513791728354618869751615422692644627763490732384439731708571216923660703181973429953850306820132820944205780643418751950668824450395455736904663897264395429065030174961629803259464773683072347385514726804006723429374082117985327408796717220335209551695262331984156861636298491736379373474722176857735430097174091052198569016585672603919858077947823765812457226713622246095025831140756740360609480385835160107963813223550267305251922340980099760466586291822533478027438402302259183573593865941441615702219949665125979068041469535322384464517282983496762998633497448299007596087304825277256866541643239550377216279061422545060856002368435934793262387874321547302530110376219281279693494273663747340108859443741651864838236405544498445433942262731713842978956136646041885325571779232085894070837622787657920816380080174285071647830670104759111147838582481287599906824628517350463593721669479292796267081496075498432125656365735883190325201069811321664545742342820156215871290902023333645684052804840470198816360260660508222109240479233508620509236260334379199685947168359584637404233397377772822211423931342793670686995656904148235271444781454628643226544846348791631165844799184448234947861785433995544870292347638198194592975293913129664787548286670551535985777292698022388243388033900956712889693672630892704526804330836172579277693595178531324310139876691859810963602710343905383911287403336373529885811989234898687406467982478492772681806353130133505575515716906221033501174002628497891205930884985755430671613818137965860674106444608229098229684369127869483041568974685383752619205155268981168277262886512230946439007838811400479324116417596926301683686027012486776341917894898986403299386001357852895962962629692894706395559778063220688870421778787236469521264677232980426854745897824244601255536092511823626561425833765568509650550073529636477816626130750727455562774478483505914371776660105960549718421955568415655143826634330425684073508310268698495082344923403082736680193296883681585345572727362831166782954570346091161459860984727696362143196058395081494480319616614190599957335775911483625376802022290349245262188175116253897076927096629895996391589620686868502157605201890143354919267429722214721626240272783155216057755374295384038553569875193603081160674575676307840436746471515719720264703959015824888416941661838499366638509277754193996808189680789636747065541952897912189241998117997439436962289085745937818001526562037197987834248400084625876141843198275882954524795608750695910585851623681420196377975166465385522120141264696247538961386239418447611081863368514020762342014303491546523269883619388518889410631835105739810021788479483783079409001361740575812070847621814397318381903305710021396511838836530280967308906760096608154253803705559916356122886429904831559922010864104455039262833499788176470714226839447455852677090471191412913513224349412420443909938197441740545013744976795134478219470280044447089461276044748751740826624358348028979117474287320796211238957505081152218109081767751469149185853340300906794268209038922751969326800653599815391621862141061194753203087391068661248330453936294399221400884137296991836649426341011728528869611777913050860915027655486778986642799305068103973731999716648715158125039485944644325598384982162003520714843678747181147255134496824772085109910955118187621517561045555123283347386187285697182799083953835317930729425706722697684800511834825873743144656236108484712540343436269949614296023352116935952646356476807310550081214344486886427333452470359297296075850078559058585609319750447986554588486673260693753688912806866104912503878064178089569786543240923466915237920304646097587456783308123474031968862542963678121063673820030493618203445057783990686710903689921825258310909346302857968396309047077421543657533796433333854196286217705689197274045528517636419263776777406556683013886863909033973680068582401205245474801262165827117650915166775832023437217571377422188532792974403874263514928143749727376889731502243118504265342958639479863351492181285612121162224061731714612772734169596179104372317359166904996978788963584264752012856084000805630296493596614832154009240071423755064026763343131190272215183550721736874500556238103971168228751868054031359235544413226478599738874172988649981677460059234122439267711356443688607831023867240294245774870009739870474200194555121925799316968972115950841075471477992588293113597823505236842293857216313859961959085707218103364040290555226889483908187968522879440391740306333786262359441029876448329588690705552256319683701734492243000998606370053672833226295528832144557490744955175554607442343574325352715483113075271536834701913347450666092892526298602528009811210543640151889739665009729470948506393986601566442950619083854390147485233522512618450539806036819544344463949661445784051539929149295897294484423209689784721198173114320813584297007272924337831873481080653023288903929534773447655809305488386069899513946472862810873152697100737455541225499745549102069968249443673017552342640953702950931305482923113893632644297552819388553513422463835758385878203248118415744522719373517284822505718445755955242576226943757536048036963378417516102564137028406611892925843281296880108931784236483615889002742320057076841263575723485653198422442082358750768732018933431581282188215679156020353302360815202548278561101786779358274283413701264593311027461544417060682037636562342366751627173310956560080952855169424698922720452695871516206864463917679700472338937854634374197305672207908393463612674403680368582730806224861326076102701869042735833568106037471843067365028868820314699444006372852150046720285237008904016673012368136981137809411244106645067199688798765098792481305756753356786578366041835991209635190996068415862887968747711068866393204250184560216314521380731655055399308179005041941012127769302525425735746796687125163434732063611901008644650769630047196923244891195420743561202049928499291934976834868578864559992728752342821044817778735322442799122972557402920460091755719030586977480198358138263223191232130323746400508104167911747767399842070241981380347480726304663373014302327237069210619123604809626196165837715761763554638138079948449061949357028951038154803451048515609302139854513759980956790201615017082521188552565179750699029913198394150761667729437390305406083323251826200407529045204989992294310064548421621103036902246753651294388021370515158147409015113474861901949298831387119759823139245425967217924821323167210335642212962587858374235548602079268516059204608375073430038404544258709349087279165915113049600682146787552962528260807593991251871227422766836089415971067402334100492095574765286191267154800385458179733199547392417159803038274931579342155793404089990781831223564744248023898616136602366173902934232707555761276563711217748032178805112780020888678792781896650689494549181227404542797671749303177274064709432165396920886404114711684028317872619102549052923750173283453297315025883646686049850855658489045411143601255627824718388127009809218451541543079436955766177379703331405389140150637842902467162792650071014803360531230353584007893168875696811873371460770887587797685443247859396819636908351622413340187219732582483408716519617024877598483486060102910190751692607574041806777834083570173871307466336633257335292734667934463203223245063779375536363782598248652026955254651807232510432448358641952923668412216522096517554323290720304643392513683522483768005844243334265896537697517899731490367983188237764602577521580135924891517762418265787204921373435597176007123406944481441344155842921783182557866589129596192238760488357616468950101948082649853860710122475161436310857506798859201671366540520706398457450023756541593916381489216663946952790732134058550953941875270147595049739874684271117870464420314878031488294008723826070167120516512300703271169498469626038200696690489650860772759306011825557090940367379530722035021091070439416308424651502993157892275204499689187515307141440721106216609905129714296066335639135444176577241437234865479741230899278345677892891042582657965222010984379904114203023041432554410652358625002361890789871475532427147752951177336317504293073055578468034061633439366724420894300670983465956190914091557880954451621608272928481623265041431792701877696604544670854661929428939256080847197191498878411132583364902384132543438620736423771273794287544761432508395694073607608661629096535695459934345640879210465855861109948141100844777091566532973654739525395148681260951323102303685242139668742529297568782223026852795163381894310472222725997139595923173096394539608502431985814207477140661599932732407023382066250659098618408857562086252857128282771113931027754800566328042750921916213296649256805122567391734732083397797666629515956653092410027007509349968294170992523101996498425647679767681906510564258072042627880975770395062807664310736555478669410273132990274699378995522505715481046018075596416322646655704202276559175622138418895033239818280033262679200508058087690162692815832609335254510848110652871512800218228042175872188050441534201981758936913969443852162192287565032107322913793351129685597267803182165103413235202165677596790747287111671411380534519650845441324787174188558164870915504130502637047137941519469481961960697633478122940599902200051940967819928062771624943218764690356033163770041021446971254263322660631151114702996165071996390561355686174740642478480313598833672672743204558101340214693479278153034285975141598052482433597560089599515729447199123437250652733412814267156962581727091753407377448833137441436454978276595065286363605918008497670287112814902139063310157163546309035027278034553929583878563636111753758441930503646035651263465770875530688511402561262005242614214067620070134107872765032287276177827205981506484207659615594189648059650670141110813821719089446816594492376309069491879062103755950416786991724042862007170595062888606882660100915778595541329644393752945824746626734402056083185189402397941188217359887416441203721203865571098044481111713617935136454204071964518033892508846350290620360974188324440722144657809091588882759681524289083579620489402398709261689016010342921809051744703924047084210106353540994563078588465321788867615001431091792941463822230729062404851519950165480985419668615995370163760221559895693088068732022672711871606794518970216784433556239373982880312330029707074772352234293364078601781561158522992242381035450395287740249116016548219739710395267709287071971242622873711629203697146910144346772643799102427512760168682935270149079367741027408735068654399640753402363434485072716753494875091104632125544950478987218402486952070259429859109975960456041128712225363915746484592574059003606302520170353944478116810144483239045639493525176890742252205894442388610307485751977209251537198239215757444827571193627161664846049866851918734372037865862329535327137842950800032548082325901019710759440846156110220962384640569549354587862226538935637328212661427361103150446969478983337812959005338006986780289930528931144926208744412662124361793509660048331567895950295986676116670378918412872671829359885577953664214836067845909719085526816494102269892200908068359309242659076629815845173512358104033005279087858667527601935312600591851039861296888671614725879133906375997698793559892654750590991299253027009121263241548081713217589818899844643182968093486094764117738656737445342820292697034474676115335052746267842014881687736106323586471909429476489266781859414429508033917677985870043662803077825972523935305417138274429865409856137311725822983619449798494261769308434392176844659354019399438659028142976868449408660672047123684042334149714519195542344865597508444428360017862809278154408743075079958921705509661089300504915483005571337122332218974307517835315186055942740671924216463326360727184069637112175912688394664029163238828233617035481139778388921455369888071883554624001118220091542896789791077254458969384117799752322082179409571698986939125725110956651453296204721961551485713431833385109193025984251671267013720955289068016745380862666188580245575806023494648044989306107342586855796358878827246721443625677254448681061631591995638146214638376860653688697552062265135404779998402601746717784479418950571797657153590308859089888063428201243046567213011925642546422678358140590416035459620728889171428598759683720199497200448392680708897732667990111292461997963917698931863677052060177720106141285207607496220956670957951407963466978807641227491544822005694075660799182245141898670470665552216752294410519534069741870304314769140781238674262444684874366735118307243239847368609122060090916490419998575192036128583683942073459521582318346325682310240062962351014678362258221561517558671800248486231762661986024585221892990598883202967823324667149362920580125165892566169964748049593395562448939478779362390113904358154160189871274465272601024541109401375050875012053075283288907161448984539446160242752110102601636892055650536178902645316820100738281797193345009593609459217844614165389221425564840125553273597629853151726782367872032341401700857725568329735776203481789462999208107150513291833356321658414960856820844483914235863800174079522708881507556592951315261039375576496111225899757659900190286813386223787735119911894500322815436953577994831670606706821522310728361165189539188061647012481990723112689637316970416597406782455997908773110321519028748855464074010483549143392987874436275122070066625064379032310741296186289529684564176105712791077532476297945668029509287833774593783055404874679401732329005426217753852158042663633264333621007370467784411728147069044819629130987091984092996836665969970331434232910403769066156813758581339685459245821162549973944145638840307403219225470417133175103641399374427102942065833541129525203022194027993846920854530053884807206424503953938039752187006398206553682077961217519781674285636746852860173081059884149148417159343230898563054349937670004693773878164729845906544157402940159130566280266534822402715302710477673240163512230296661967485054618280488750105630786031189445048946133630051886825296610155723405134592124866463915050447723222803235787972206402048102464394661981669123617493877987884989252812236622229584848746992162931532810507102298796065996303377771804743453896772605423603971400033797743944496598730027643338671089779614456833030875637775758127826057363157373547700910726034709168305796822749170411751045484362155586156038179113606188909078357537171816090951465737570017793478610443425459137241339632020520799179910538378713434158292846943681942665372538000025533558036282200933851438104947664663564729487748241444443953972424114902703373512363611951974414724244298652512071866099408371557344998636520942212989202534662007842829151187296686177867462209148564448814354365606231989895168913076634208106193812470414555992599863824712098306549087755696153971958274776770452119978053287175214618271924562228721148907570077866411156501419976225858709919300325495258610809681698507770143471778721804412230677033285599054357952512554386838207029775322170555070635354963055623475084679077839954097707876372251225964054567099232566749195246583046772479722773190553435335754329143738745950498913149510617015987301190472453240236911364115013112774333513102327057514310698172951124532957627776240297960130230589456972172227728363133850036022660781180021552934537739813479779930211856577992505531938851028670619499372995617510803586955003646800066581311528594132892353251484913478577495645741541778075911699105204453513319803129140721623969455049733409164918468366644934204312170961381461376253667910563071799311413626924908303695479354592015154825968902513033303333522528060884848347754136228873358280066603709423041628081235338057115357295588435535645149553925817631318942131242950979484161134076916679333187430357350830683509200143397727586724445593005337706737960249956210696862805857617323705119058345497920128943482373460443615623456291042381077307736166934002170574200037902355214121168639236085192303374000551550725858324337567625998883100406194811897444589796787303490367563073208170959429105966240431803952574307929556581036646970205975240054090765444703001367681029197811750096569863082841118118493177621373160407234057917882007510615086054223481646805922994392625759492105740218303203722939961909683683384410507362698062080493572072896183763242676782673200941882116435981224549017691697180171805323792855706524409290611846468808880950002906639919631923188706450325358318148157135337480560739725612137899997718938933921737104577966266243402671852764237638977182679483143121990528363481117413299341060538935208882397745377661647136080178862996161034310633139179915966943612480922852546670867476246275423517895042560292273170339044991874504057428207186887753133874412374679205068468187234348852869172566978011938001106893719628863226806069879879438007440509550939850708005447422194756423352270659715379346258529529824707196740931437865337984950671578942661910956915222414019914080339138645341936389365575641836036532450002974246023985720155509852639737025725211375631517745393153238331942442771857924031758171399299115603670039294114963860130482192747711258380312939629974536632304195318660479526595581558595615226080683820112069027045360203934247890850776738678701441928250277473033231735939708566291761484162891278049209051608976757546254221132863692803867784714285100811218017126610890399723012491377477516778485571501733835394634063920651936748563697916036419662635700262313953742998560719953145689833685971405511898961679061442913096752544756731635760101336929341486607938312998246397691078673314569787389824394219804053417465161390843066306999532215865725347657121960619333258592373737159121604914653888982831258062270581956857650552311725225385022536357679192190025567304625472776435334461777906749094524083862563924631531223172768087655169094724785581386094495325478551190255454365184728982671181698175226737638859970489295328247139427190403060457966437850597494883942290706667931076923531397670163834442335853437725393669679650938857975551410425035082803675285466700277935572645854433926150676595489267202949222205112608823290757327058184917008189402528221892773911114977372459578650198461959566639137503747897377826314225279886879047429653510693619848871503142542126367599069537438337042782242766036922687676303206936788097386154540113269081961749828436218045976739992824997475356732535300289892871935376923449007383293410549743177998160143501153095219799751281312490356351592461953248785245606399906929798839929751535850770855694472863421818386462870445794102498663921469581253237475537425205776797709409896983473206554420638240729118566597487186656677146282752510150014629414229590251953343340276051066215707674473996079893855450173974602208873216431131236621240115894711868284167978033227920212610322278801197638096974676339144132907490782351457205279077172780173962412144042072186771367642117917498074570532769220078705143561418426185174445775413931559176146348444428753222467370989218593289943799897928820417468541412886598616847831289679508730581232531158784850412408187645076132976807321820942350576561794670012489426952353154349364440147193124319545988685122942249206700955951018780262649072665961149092952491947598854152437863757312093943815638497009686535673411969531766943430543641364929659513480742965072247917509694258410052307159269838574730822197332020456256462618297522690605212603612848828122109127652803664616020858258072766878155705709724787456028946819761285363770600668513586550096104177905643003067095253011372235169746246277834990654200840472586134180798617958480370545894323574339359079823827403660670047105595320769736814861623598778640133878593027718106058758080376473155845532936054221691168688845166160744956732755842538583712513478863808980565633948959116344567938604548949703008705369859991662507049544736480176636427809566493123659876569006620850773661063238375869756479238260537429840244892395309716278041910381822691126348864683691709306566586793203839720235961140912460818177376949275115430936740874019805634235576380426297381561403357488898647014485730398226914412133905335968418489836445271247477184908440942000251932302022961450170209801024515469365713698418496985222743122616994151937733293544608434506113732641922259055767012564047436585698258366582467610864250913384103199772922054803383705415791087370030107297698723107345964352459163533261038703700863268179612735193909802864142797775552710825235880611037901551621657294806488271748604829820619264529611218002069153438556780514265240353657111920898443356022650001724176276443790707365760872213820753113947739946658227610735230846373663960209435512749047797576586642836323083461044588966996420252591334022020132897319260410050627586588971537700664350699711711179492891285585505130594390724446040279149963549646490697296874654711736147181814069795658426048612901643661484514436631726759945355512001058466935346913350248341708094291345898465673062369893564942600846133846749202813484894688747182265221344733339442789730604584903933958704720788280999150172111036218826933907780426201755811001436486848751450298410226963812268382028486677362763931944435423609375647941435501904981380010107775622292568795500896658507627005127348303455837474026837158213357046282875178301146950554596128913876731013305130491426187785082285065534973173354585653705292758112266861640753267086003746616746907341335215073565589052354655174284498588123963023064359790399445732474483103864387683759911138753961592740305947512713825047184384756146062208395112507564410870641703422592699198275831880239489896523477899846495125335103993821289083678246352999258479172852242736406048575983318085421581176393153244765766136192781643068833994001415326370034015291488380236077593044513639187405010334214060209274897456098979850136129542508888675715328412266136139461421640225958342219532406106411595083755876574938645557510960313302215647716097408186534602596493213434438969188070925308950541457082229534181001159063718763382345433146052164303695718246133132805018118648652249014642979110616979724903160794405499850486945313907433205671803889249485869552545195980360225633402297796047354043380310329094332220530575827766923250800266552682003728854156407160324983899267132662351020808889433766377248211895725105811901443485122146090074500847824488595845036090534637139521456226812975075761894401558355885055420756490393174224912243849974964772699843868938256343453936780484995577623729113949478876889434326730373173147976096476986425411041321375609567941139453750871694419700056067049247054823617020971914597982870336785650505649673894900480365635815313606705898733709667814123143423645933067829192014927177398093401547679096078380989537124612061848159512572397632356659950890933459729091715728183483276407076753009943908081670643422953024906384023029742708808687581576758911070002444839769757886238339771842646017179085988084397798515861124818111621404580612821136810216109294172494641078786028282933179737251963410970435746894440846803827713439026210046736174815695298751677704591209450969815146096016892298296467411119975502602635813885969490877166109225352543974169102532285168751100286424919947116772611698886433394944334333114772995004310679866293693893744598429071290590117045631337089130336647643691217603519525635015483382290795765975585675035452233187741025594766815014098715891307042236697345918930017608121083841184260705285046449564223383785237606878339480369585680573298957995283804344094328737017591439077075769544271443141721398454362588497601252756631514362744167047864313213542464693157959470322314847618816965530956206325190813136504803482791010524053093575018148328565105140439551473428162568616778117206601163863832157336352600925667598806935513439933019242499166284889319040681611947592199128516948826648301607427689048918270698801678087755318138699653286418260401488533318622220316956446967857901594038122004660419126012850492152421484673163784614361049060527659578802620261681544894582758799203941653790709189890431255660003851707278160243487282027608077025029257368672055101002266119269254305535409236611666170655260414433154624911471598113379778564473994871331872310294864296405644064034190731182754225271262980861405085483971869464984368674651221244599570576938604944528253425259113362304841337683761352588544705348669963510712592306307367607293369810331825760306612344861617947658015611683700308898321295457180844550597852869371439116910508320869913378114204773094666017909881761118286691282441743301583229730747484726644376789729688930623318325217413731485224619611063702668566372109726056532972026239257009906233517961472328497611483281855459897142812193513266897148192682637898685959222303809213706308106351393446453604295895947823307748668548773782058695426678947617780803688941079633423334529090845269589737589089497421545572496119264696224365587452111272473130150336322531279247112942563676140411849616333623857345430517937815752027741797719859174493587920363414057729749188119527362022328509070972962685178494256430132267531881118436209475924433660912028817716551223865704968144753735675887663220548753492998430716380338314358436864395962173675211772640736121148833769920023897459686582514496552915499935326193806521031479489514797125171422100283627053959822940978355320246588552070577562421582552246208698645723134660506801600145985111794918272227635012934490781050896938596616265642795374352605115145692962418842708463259077046765617024389811875386382950405466560838905135088009587386461963739412733452339859253357196426204445101650163832126341098595792597501190655185885358456130365162157565079993942542747560781671315154469374977054594138446940187822064228975742656666930051546639746236892722598915023992324935956967452761883789242006180465441384577743372720717983309613596085594981136706226461419199262758569800829616025621371645180894369569050727699094080161423462652559368891332531446194546068234585804403271176738533179636847394040732814106980880886935588955228071710911516929971194537441627770864685561668212280791745474734764846271575319832652973462062587121270055215313588040765934934280954679109978302412625687951019344396307534507686530565159381508357510642579221712475750709934533057906249018157231981410630666276318853542665031070977912586197819387369391681072054279491119082307444013401795411630836683573429687764842098342550365822524444911180158676376019105605173595008646261578788738957727312889236603108521408216189022899707004335250165181566217855674684504423247151395019800439346969820814591890420166984724450955342432743058261377828363834423067546191773238858890965995299884481725941213603298130655681405760704975361502487735706326929174626797040482962871752825579963517329857152876782904494481686742399654547132901051801082889201298613644614874205762980002328935234276235488941721526296282867862327481436793088398690630060926977023928211164706032836002201409432513642257201668962155144512906775243931315061774395910533282951487026757055360556234476290624199377829441845292401260343056869983711406036043942621149830989486587637582724696059654071884871597207752396478292728371626173682732980898801423618614982513433174013569762489838014219771134714006195758653969905917323071387052113835920010465705596326394655334902966291747812874370511758997441594152575093719178908792109031298458690704173219902961051257173523425362774913150374192176941042665944916188618426276143048655208543407816350218249184311964261320957471167232645619806501344780498806799152082070092035675375133125655509814400185553767958299393081619071163306903540189204378031318897134535494455426188207549664161154362715724317989482808175688269578804301322025598717271534317570609176316120707428401344357087183683391713798938476677740667720350032813857296658947963480231497231959671080876495183951411474159910989165384540269232257896443912935377668148738783291423477670587556671422403024624659301332349242887264816232335272265548539659840093801347886744490861376883974915441328952115731462770238885706870490519641327687410532298670248060701590166426461174587793965694034107084321321294899518349888543639317616388123392730293898503477517738055586212547063771875452736827680117179707296839341220901964460251104146339351855133818667125920740659714249973863075162000384606578372330182249957472259927984814870759360832992770869874037670881096790713913997284668912885010762996200542678725745992258552586437107428824999253603804017919022796089145877034096825069576924074518594347177200616853208907858930004142106730082828341429406206044119197651203405524527992604609813116762313933557970253669574950128001849298044622673314526502893533070435571054918680856142069280691641798469192540246399644797667976276922753347004653287883155127268447753130106941529883101479508803863309034866780710943083685129312609563813393182815629708157010978257091434354442520291917640033473263439250040416579512324313500373019122255788903133688925277566827313489394228602147448845477456331215164722743044786004049998658241125247488457304484119844503716749231005692743823496115051247779076606437256321015723786377217223813974170109871929174578592617087900635816210537442684253504804600565682389953569702961798382265614972138891269731283742592103114514998485342702320334651004756817755716014736707327118759153651391785484802900535863751492032012900273752776064640373153388221385065768144792269850337366920696257966976187765284859328282278696575887872121655346561623028798556158445559281595402315593682066646044868682231331270995857689436992671734131013281637385647432517949355588101412254182850121568684128090080095546691556904514593544131349264602043623726162813827073089048188740977767656672825080948581355227997939736121459733402544969521200240341460819916577104433471308027524076085518620254939957813733435965392359117513057305267052651751309692524142923404811537669721100764138743219597508665829466009680894979639804506546727028553366931013961983646491518862896528560637107306455018330755314196354472146845096728657000914930794150719350234063784113199933818736648558532365326466662299387205216437640940872226683019876389685055941494533292136642028433362486447920832900772375546437591341449566287361232799707782177935913384593543900419479226267306683789566148595100478412864916266479072149279216226103827876094075159598177480615656971889816368089928790898672774043351382395018526138992115465303431541358223302630696318333341018499424593921678719546798672418429079311908253201989927459252084567280957016348275100672380544214944643632495828582783533558283645805531331920326974785540761204535807183686503680007040844672763720873880526228123576126624338549617239823120772210738069844461833134562310769662673398707937218926003886837998692866180673643840061098185377315119115462526404320877404778530713775978476223641729825087530221972921282815259502518601496682280249270298870606060195065174337081494903983910270874719791229809644211105594715038866962664494941368162969893661821405041599635782467202754875005330148733097336057830253059777515537606676922064037989404105881725891973456567828174187469589559189304014995437714830730704309201236228742529930893794101309527512384367828038763691871812674726164960892892730859088545351881839930096617099518623518946433640353234465521513777586576129691609391738176249660750147746329998740622287229725973261641149123130856439238675778501350085758728620843875974274619293996732333811336305351737410715730974078213636971353013410559510548959690261781949302573609655928849877041426544115031804741562756124943090479084656834852664556734818802726818038888002658060913387192938659541143134783813342125574155219138633521330372871985132835034458033879254452021671600083692725381291075740341400407640113749023897827250057935226906688028689936590325513205322567578631833019591961924470170624721990202562719391868234992216959400832264092949473400164367008247097282251745660382375792432392864532871163771607189548390381162750128172520412700666329388115505761753761305784717118829186625752263027054025638980783770133518376531821097270084911307975423098686639483207420319791777658612612174991018721995845501752684179503779593046119792483606101756785723629886757534300131732623374189645821335165303684785978911776422301952771462669263409816186120549322630848587133193559076984373882648041360395541650575827246003168206231130974891032243703057597931156855909660556972570446610142996769013099856063418060499123136133847661787658952132344085012985804197089317274848829361002536486173913901320589337698821004400281334873908572093029018380794204235874715266425950899186667611436051285260665743154829828049508501276139102562607368535078464091321585377719749128291841931189462526691878687227302514038015597542912094256608900886747597199584423238691345086691198935081663613224247913169306527890050443048298138498015622192214517318211664528463858709153405160031265612069128334684358545610617254342964997258183229729413682719994074138806105298275002703623667379312770569986078724034404759133754188178461971606918299834834045212983746587974868541210121405866270226650645336587339292632835956028782195155298717561248204839844740487349847230972531720100246261943959161221432808680019073866800369607605184983763624136487763616832401395730512112859438097797792838722417298108232768601814831161446631513499663015876089173883165562945879991734984801000705181542830605032763473086545934870551690446167811870798929359025183641152762935486369053139276912760065316137424093080714663390001321805961089179312938087968433283982031265441273807942956901885791451866543635411198182503628592861815211846037813733306681302986548222809683600146169261614376230516203284776575166406549815787497645806477901954567689395345916871616174609635113367631123228379216577709486874701039916481062922381411955268476013114610430228435150880320195512668624597924695353677451581078861548391240785947476512772699835602296085692309215936067464493895152232929050548172338671355181545363533304766499861001015261983961039571920057377327181881366035006893916323419015970298435571945575072500182863351007339149436844606906739114248137349424549194718758239482460496253450376630033183298969525338692807200362615786182850467372087621685459057154851485295171022606281155466691699416057800495678307426710497643585764779780723162693594696799814747794864816316213788790480002186537960772602572774100498952613117521076676630601711263867148113116830789044888649225025882457170074990362949710496908214153176943959199849505004479667837566637573086194782743713529646978561034713754018826517429717621011615177134053912667585363022211428718784524489278793403389000635382620933283094270347084498572981504537263718026336357073290922485107610695631377876719038627122606510393780535028342872215723689572677657874695765775536727181489585739941190601125196194064906897467341252469401655029570919927196076005576753729614512386622936014034738071559230814060372781552143864927777439596809230460839267173636653297603923775401783765894698662841723678990867347670845052776293433293235837968969873298479843480451333739723959414189596096867940583807522341670099565854749352152217897460703068942880931006538660876839219630915404291987333049237909477021182068231154575219658959748060214561156166748730761574076705246259741301505601362786132078621257932053713884366202962753725986438690352931711502354283748846342666413506000655498995685891482633831939918418949048648716793413857492614295804449824320610998078438791017717090509642252484996982312928338601160104359332359140124820480402507239337911865516576473475290050068520744075668054775569105454224653490356517002292366784938400422762298587194185223919806702706513181916213744349458752243065277140427284491440841904185023216451180657091124822074597937155293837109590169627732806145067285123660418454614473446206443009043904301437908659990455677528816908547244472559127579283498949453180203724767123778141296134846699861869304058191739749173106516275365478402119108834718273222372365238238063769257863909330545602360351716338896598718508016482434310456910034724498765042157750420060127340494897690118080609666638471394431724073958299538974911096919136687709669391914968739016687068282256960562885106024190243939964417098773243476078685575869330709502104731384202488326003352130915509168109035380765175876163456903142048520916532609808709996049539524548836806837261717856136576496608324051962432655056880485244993856982449634202499231619291987380550437991269347256229611807138519162988072561364843037398021017292551739721084647476216206887447879937813423666998425976071629265282967543608109081915879980505036794845062051987892889533200186584635270584848549538991897941976236867089686033754825561813546781788691544199716214979569453474268257292310268674344128469488911245970418804424784590749377246479414925631854661960787080302586257337713752410374903482524589174399262090111728972053564039705314545536339239656168029772464521004184676292041748179921650689855323148218194461728836763987236073189939049208257415154574137639676788807372597456062170033241662370896272711669785333033669858436766385102567664271002690335377032404280092712356003966671957450949676533957885851873825767670298658563417200186738981155488026786036831472404941937964018298104299946081662239786452220220391547632720921853620186791207268916441539778630783525145347648299947293333299324595423017048558727210339455113271079419680943017185288945074565699290169087179477477125314055164164855395437919846774975100758411761877709594769052305123441282870163116353947579785325079277331909496995336996787285665345789305003062147858383760290558061183195413218964520629113318428172059554174087149224108198887628450540236509429311324690268486168765274261150852203915223435801414291035067406828961975940005741887073785623736485609903993006609921352841848059008073863031103565211016739010454844349041783008930965915479517777599066254639567327793955588738836492520674610666674407617598968432849287695811215816128550091547894989963196834802807406926959299907506159217642516039497511752203002540285449186106650601189534859462816116146203293400774886937132126198991774948758086429205109822494729895662341357569691754823847705459319453275054197712544914538560480434327024988661475318575394917139939259235209539047287973173768492980144702463246171136363875374301218584206956611836664703713528895575802851987308341979011863294300230772314971350566614120527633767751169612496547396548759622133699673818382874453296880306594055250981722277254814222439007253141327654035764555953479737969000548510250328357962351187903400434605187499113627978037290617244458353591658287564119695168651585597154690350131563442786382730964561277383387312438779658219850163552281493653523872937420293221196808361377917496638943321281141667838763873601166490582997511713512592386897254854742082950451771571088546377480094453018168798931388246345040133897658501415299503655448822157465707382514195450926846970246446963476401456340908094645368574454798718450897827937974150212515799717126267305766544514443618704563370676515342363600926115963512042202178518783722960220876897089982117156435779243293201630796958206401332745540219377371834239055567164932021488086037500878045967285234167492430227866535047255613889214557832730584023296659732409270315918667305847634326329705914151553302411332755229943357079420322993719797770074034939717494538764756764077527971070536730768452682107798027102517739087248814356172562140162900375001053663462713711700821320263681511643663338854362998302709833082085501407402926361472963559887225070812936600957546845004094450940208178124559092119383025462100968336462000912030217933841895081561566935263926771326955613438719376919661364208570394748847562901204816544174470499198832354701780854189597810154683372221135008472240861758649702370857848471432219322797042363350395124624722562865666143812570334235113733614049361731092996567248719940796140909881495972839644720280355710884725429171145810477643898851937863305394912677720517361782867004525286628406165050854051581889643057864553787960255505899233001634691477812063848488082534507446098798682786545814293312128977959627929926608301148319531064805431811054536753373686595210807238426111279889595723559157831470082031592628257768600953866454263966565051825467777431543196873564314716190794864873951684303547577772923352015873766186656474301968745580003627937291594030227649186757592165318984074187846093026786789701415866527200041914784388259893353831971662974474156717513100110134289649469474437789188779294349037312057740498832417538874665173479758908826043781529875534977616103166350425968058819984854905007282324012854422783287225328023552027685267483501201287790862172047879835923753540868171451970278964732099688351628943227143959893219930041655963481097932373520316776060356862108816154469451327057142375749575758858109385689905542515111673504542978904452478034217276875722604533115173875544746505430608530546822543985241468079560307809272989548718634015741039244214443942366697592641260708374209709717583322199204594266477544737010743549993439612813358734105363843767247747296450546299053662965354019370851054274954095725227303887733840720399183886993644499632025886731333925699577173345986896415221427821943118568167402126266586968388992622579597684132702947835245533879463896261030138581381703251816843219039370180701585286092227005113922564883913272210805492301875860899177230111534095386163581004295818211286462121130729785955968469229003784356996572311085021487553886441080003427123049861822063620837553392390121706913939363359063127060708719788718323980732986816060551644621703179471166853208709584328653392208252524425703750852824065122777533457305836646439250920938118369250624951294240756316638479947413896488071689117559616605740784402303710040499486142646358239537963735215946893814548602578000378576115371831148614817992374011658319892747294182517952992442336337912433803757897319934523223742299678518775193419738403743999558304562417470362534163064966137777772279127738374469881020573499590121334495926954179780696489135287378456708918959556677522230687071667002309999162215443136426694042458211620628245850652075290730587384256823596733172822454539906983689889917257020443072075995025469296619473534589065677733197011463825902677288032806357743353929031050345469172606992796093541533898504929566663119246059063495130674215530660457798897948249354634704305509969714708494255883297404006229387111385953663725543589583342065892009542241468999804472247689833463168041556606697952142434019451822299660420113470286044780322064613172654226379898467293222728480148711480819590231976656782054242644656646196295387755883039959290312458356341110319824964529254535550440547825904824608234772094467595388962463230474599164454901561124139655098672714063266586321359603677967896191426940982314161702879041700680188970681194801046034346604275453323470848361028225717091707478867884667109493153664627792603487133068430537343919474670837533254597204445594041172850674643269533741709694245885622118757193140595872799417608585406385593145359099095530321631260658014131972830157824239828222182526696507632134829941256650970624547854452678958860319114271253865481372562198377703316476031763243593850624372318472260446941083595996582881735776851322599638402897666523885775813626403980410004719297748557330286010870800540234842815724973227997481953255865798189518404586142672999254406848066769183170010696469721052913429155567773479526131960176278464864474921271689739943945304402185809557543091004331058803021689072440867483474594527625134954862137817117207607367474905845027923600115525847647443549362091491905288972969564094739073167797394744708896661091265679470627541826349465729404547947603834611107427959742813143553614558841550965275458919976123259401485899799802848415250235836189478943383002049949017677983548426969871446156640003568062417287274236086465567466095053520727404570791227110670968443049659196407042331600690761368868073886092478067355554137661814169999816962533995619489403823990056716157940140369317884878114064924788884687301740571099101320842840586951097555067910441995734616592286036281089587007836632873187992799224467064356817234095524824991620212516072651377830267156376231350845353639085790288772745419463745106820396591130900668215355655635363794504752560785131620335669980707455402463806016350165346792661170937583836078131985234278100220750576783954907570859404717838784330617817494960592668318835897399120469998455698757212736217575592344344974160775932935274548102526554273981189426339074784179643200466226380474515941573734323590075439062703687610807455862921809187185208452876134395962595653697056722133655063159360290897423854355236265930495558196745021385916828290881847871222572705192121897909942888605122789220171722193237913674487451972899155250421169111695984298570523720267368848981753027195674963872694579954341013915710803135483003799098647986453846328675105057560339070161316711507530610863991692961894316533819270657206450964574139973394232408158090749377059582902469250472589997048185589937830960247282227215289448741550459306814648746124167869834869335142724644767320100044072472193724131278630498750055496597975272505297521163365196554927966721321515153641476833869851815405112766099659902426127351648023093834044091173942968527216596792028669257378864691490904102407053907453859956708037973341340775393045578904253448422312332419618784335034185050403342765440578140614269008292722219453181238241381907656285134484527664378088922999710093804649728271239633454083167083602152436157724412761403137185903498042132900753229166005384456031100688650657429791102537237272998087302243357875371478340125299582401130344702350334456642506696442620471228295317708070443667853692667486723383143243500448224070016787200990490363089215720054732379102392207514116142036575412211925432874298179904106342127904471056360580171407028857305032979584813524618648563465028843549392734758172849869007374818775023854289952208287354089524924156411792285861921159486857968268191017167767391198910613751559543405077422964637776040210567540053510993708108143646784940020532746840849422127166978115848450226325132335256355480569410557763365209170931976940106273188108541411602044416657933396066132218080824866848804895725599993621130748843463842354874122869953550003403977898302535532203412614019794470276137756027748952263959292745334504224953845861989320529738041352838405850089344558075230920866801675154751702797994526771728579887077101180723424898725426494211766179485798483823205957260253031416230229109312665120335064613386831845305389796461410511152530592972240016738408825874740888464064377794507121670625408615293246176218650069780442771056763038471668988421640551201229277611981536720643873781169951525674069084223137621123789498874277195275491024995348612881574974126589684229213734284453084820744282049278770278183491195759398294823542350539040068139551130953027432271752466717809118687974189252949545441319383658514312357807195591935263366354457073149277972835485415995328061931920419572002737175767888637531838268575753692657628235574030110862862618118192985817409207752027810388339735514611400429200308950520403890603497951798071153867492357084934843531980439628027330101047099612670172464144940213693880503809334591363877116589768004819622856075029069053370918297258199962970164388356683984705417217792188255993162769942940448645760715533187399158170441757232093793420918992302532395597545263947361012552027816498118974912576958542940110489623728435678499303227285589575891336874163780269850050020926497414943888507401522365060137107146616140794955960791842124940744070026515008740795797151601324895835330704254255039601891794625433507237052524082376696036710786153718540424518434671616482403848850516525638333568542696986970052603363675249199879084996618439573347609442658560615686315706233488701805557610148330421932245373099255338667439764478212920160204545662713815143715255716532584287217743975391050015883317505371605554205746760857792364682196964315159333423533028114795327551645338387881964981645525050942518542168090607270667140190338272998922589170333067471964716551545711056973624943063663311216466197764724005836991684558400961860370113417696729192847588399388151177730317506925802802789249589635891607242171615885409431600435114838859623501178031820977944339595827224502032492801035967909209432223746288889532317377211822841897845632317224280583671019414282447478932396248234406237526387190589824179467206588032471420108275066236148568971210425800350551574929306041425947051206183138526472835834546184270212429788894501945362867062578811318137878635004430806461618560543752920072622239849370704640905674839977440869822355671584500746826969305770655308398594030786755398934694002700248633247722203334995418166819537497963367140065188227991244745504812098179350126437397539634749479236288198519537273821464962812673490142938345956943478890328155019723159622762825938029911936037780729289870699706724758061975394964376079700418890730218509517976538651548494350459248643742431434532605142413270766877928317081792121367067950595920986019286761064554132337520679914840904208874594890994375832055028978139296080685764351295331528311041545244331336643186126297889555903018713070011546452691272218698686552918512356278939837870008695670612654498015590445598664567169643420429368551299027584472551671115600997170897780729873694527808673063278223829730847082330256634678246524219819081075790096777576655047824057430806077625898627335430196238506832950386718917467876084343095274515582356214709127476328959292390227805427596733475825626603985974554500713448320109348925283391018846539368478132847460170285282793862057484589992533090622450153609023887362556463764465246521834340102404560248894664947798230408733480593550439580837176692621583551558529609248196275173748778295603275401402301601501741834664365388456346673977573299199562882333652746695140174287557383674168951535612412735467022662151014315525529928427221644884602679957949223429520438210512497914145209311347742404282019162320197969265570209809863902620765936164683133657853888313575482353041517609880420485635735920531868592663150407230286664646376974449070208850343306240765063800484534937059236827267824186835733160779381479080473217266305150302645893296431941967826526958884853375643589381840739107772649265582092920819037542970127939042262485757259674304981184163172584205935544523462298180348959938156931739047936233282628609056071113991681942833186236411638850313046333014799560544151595739168414484375543984869158809473135386108683296972498925430933447705881268699719283986542404257842817871391280122213413569308419235378387410195081536692520528927808398819017720437025325635896742932540966526474610770996309972964520901720527222408496949370789983299468205450214069967938243657136237196693487847189706043361872607093434566763407412864521072025716378691397258933570242234518950339654215157109840674557904946261242062760969049769560006661229086356642440109764274233686536345473129362901375544190381083078059223226943286391511133673164451438224988878562996655516886746981925340754436163666130800406626032906453371663016917906779327035092324166034821000504310468882337285053610873827333825377340560096698950535190411762274255386287377788011833600231915112525869408595915089526199464398376608539876782419084570065927645431416541326124962121074489720555554524029010706806555775602867890820477564130528670688374401987725011601567091006329992037622671492955365951548989899741183721517262950231089778280722384877260039663187961952568043921857658322446927234472950006965045707934969781886544105012639972779478201354917132315751130816018411008400955866291708384027605252098210836544720331230798640982308700009176378657641494745796323308399571084002104324722695895710981572981630645852469070037626820439203065505590678317141249519115246081263785521323993178860007449487824790227950354293263583233177727350640942781018653285052203866501562449592736766665680378813507963710673087054869564394811903570401152978915318634256772073808944222852982455282438645146214284476610077025850046401155710193667969611104796449297536269146441640612242790242623453970815722334679227329636575916768564815751791935658992513814238385616140076656602986245595361633870997962571680023318114863683734981973304436045555858437353284541234825526090485697678080686247663984597619924587822017565113836817097146373977189654876870344378475086248522610438903069140975022632221264977878661174408964142995358437205350418250594987682862533603780426464705261624614124869034381689962745731362141812990581983226182371887368741165606477868324291292459712532796742606535344192608186523624651687783377769798986470544628304805174678674915200111588661133970144452388441063846253748761497005713098121236669806227396091348486127471966019524058457834658314506234371277911799032057936997821550488885445125124657282880476492794039696589917026525472118732643100355228155616070421986078170207203220796359101828923588981535646991581593699037489822801841695782970993708084199700568606781345027079339280792768698832841292337804467632081528472032693341519754084042700475752788699907927580842028202321821721323777369605840843494454953132655369265856442245714247564231670581447868962537085780651014157819421270827936192746113360273513538674812467710267199976734025307817372331876770351378868382045424673805204338072456454754938966495576520899021439701182459607844245783619680416733199338637112432758320501968511132001200357035497539864687851005390579715975296350179187628253741131485945535822295204973195915096992797066098121977042515276873397542035088943224754122961868256115082180493244411092608889078752189246660505811305133039061711631680625410829431034338932893711741024009006579233456932778269523061201767954401030790981290627540949614349243877848368550619951775298467521138531272794600023212601804383080707774559107352871071080205658080595262343716190295806292994103508429710651397542758928911593174538504810848125947688276925243074819860303597120547359346990083486097631562523083943326561439712986489697034369065586913126952907518110320768111840707169141902961809111141901718082154898349936536424189938385520577610511386370123593152303148721866571500655869009807830423036975553241539166469600869063546525164960026085473892945380771640964848186585467112967969097720134343126022418678016432215229345565507469642193511756506231635817320511445542740884170716291625689619247299595991054469254959561987537108175647638234079068034418716553139552960646687900644910968992056702971699895806305075110358815698088971889247288401291418544776274651128537467622283416570725917733612510003564437924217658137615920941317901586793814798107641384950256176382548728722482866833080500635369818197115038302450347209283957078224119735683213037826650439856121158758872037713545152062471980154698948343912767708476843949532803059068728025751929406390958134208373402642896347947057569119952030558265791879299962307307455854863886448027911377583437023912623355814838194667902517528442204369015892008763510798256813522982074384504451922659976741418933863981917169082650203616422792658480450315402938108860191949492165135474908650635956612189287472039100009542549510479682459610848712725172104406753709034849250072001267575590672642228271363130178090198340125644162343643706284915554383236816621427317703085005167334459599745977534945185260429847113417307159836779613408495265737456629396587798801506442348374620269534566861272601688888784714481895066039503441510906123171519712579653807034616891390982905261938055737804065925545291422388656939264495902824664226240459084286572789290478259998188521755801307431183369537459314063159260984070959316340908594598865666490010694710459902125598634012321446780373994096581767118576666401978510979183169360197010470794591890296977274944871342967458070830455954682303735126106286371296956968825555825083705201191047012159935429402999886905716426641172188688951811824869370438906069251560838610547450860403175346496333234907393744117769446287070522052603276129831023485163675399600984871195930571271580778527347254975623416687434155861504146163091890520670391024549129629310053581047569407789494305510760449986664672139525581356919974512076320836761562746642081635273061540539344125362578559686922777186735129467839084810301218913030296165267561224459509896173913689119552663261006446935484066453724886652690870921161876691397958759174573297774969255127030773672588205620017832884053266689295143805473063319505800830606183043118996757892294028026039575773271505136392570966480252581984587545030706548055313107793463680389158310437685887838797456722516427093476620666242814122424193489379580663419484121666530820281002810775549260953153324995637949529948399880622093730425608413892380656416241168104881448939371334428901514991265682000871869132214151347917993753106005988890035143936444031351335554687830706687513815309604000080961890100028759185775968217366781061924352419984835151883679177609759893600673739509729351300672045190157958816663936049212645054191050270208609191209488703915571309928239982698852733545943275755203288630572853936376364370898121427214339894689097459444371823557130028875504013450486333047074711698760400093489799512888927340787793712676955414679060910046587802307318297068440826053052316128802794733163607745011155299293597169371527783079229515141088466783680247171737039866559566726012471879833092434168705395371523409744734826853762409774680770807539366572314405542688918205987120864070407606183107281631546876676212432291011468759719418053088734900713713647724666057537394836692957498054725773827966933618228346360267773362438785216975402955047761200534191787922292512342165272518139128552076040720336393615220195724369462506672845852035496413063469129724862095785641708919584636012248720999526034492210314989771533122950385903191885055713319216164857452667714368456196817392585849177337585987280043080904994042386887031568503861871353107820129449161603203462005742245496672269615905691069031443419283196637023232319164241734331051944157696795061663526606908281894322267678695807646905118499153915137428556872003210908496827453219926610758621055981031734225174026517896682314819090999650386665042267169673107354945525731975253677366285334427530668858754506708403735181699195317245094949164636431560852044159405472467429589395237759877518729186823160598290534334434214801507984743086366650093416405055642408894166976651350004854313092607918992951144733070657531468268548185675151845992579913925375571449586961197956492040165106055579679979405291848630689825950396915318868522246839534498236741760700330584898703884600644298431415962684149970841090964987779686369797195300830992604578604334609742552554381808827399980726164410771916105482525225070946240637747369531235581052937834232964247515326955298614012461042901094523451232892626001273387531872359893478893290460202991101839650257759637764510704317636302158432324297942288849331639465966950055523549590871598240178153032701308667672887337555611232667625924722636106672046769272223267983321892896062966574623925333088803645859392209216718919709469969460936717236175971062360310736118534611235348022105533881246314020856857860780026400904370597770682229194693796065395929318014701801219672479056660344320919937250971025173268910468209320668730496851066034781118002449967495471129419193695439062898618831222165287985024413273881001816703880892952663909231070823887697182444399238424205197112368496727741401923453908643117512997099081226398582601486464615653857619940789069023281429852959395238932146462328597531997896128498999811013823488493733684046733417860026114909894623990516886828169468535360177952587122389681577179076641895135192223677474534195312538025391476563586018497153106683618047324158119812677979009310669878252449729009265563971576907500735427669923121539748533317839070119383397511029465269208350303869951156992665771269708218676200434380673354732845075724744543412619364795302360131128387274939275443403340211052484124253648789748620530015928639643452110344470646837333885586332082305872479631949832208289898376785407175809458234614207325005437452908453920341669812158414253939355967194344128692870227685238985080016639164075857682669810148741136425956156599880248784145337609268139361977505227109560144252738901855826892750432262846583999909193725677585338635268576779660745392641452004189969426113946599209710352501312975276952571503799754316057840730271510994735577886382273418716930200210958820221276198519933889991491351112401129713506163987348316693501458369896716377371606299520087483085651912282437468362988358002868601373107054471969766038075925369879998993676490158033273650226367715219594186460057139391413424596586251456260750180044777565752493056976882438905453478715815117055408342885437133506164064356851891183014835866223081848571965908776257501117511707316128242826945958739618961543335720239683503670318940989041125673733611228105800566537739945732669945109926796282284398340585242348885391195534087906387727591844582138520448416937819800459225770694024002287172545075157987825728792111689972629569996374353757728242809808015712283380925663785886276028953495237860504291438568297959216711123010033830385501449595937544205439738129499205834290019521931848876258080275866784005733760560672850881283503760613652412752142857387788497433092266032738591008009295143896985562337947976452789897845340190231807689764286872978996957356168460714572893796727781816101437774399835370559924745885882667316395860567229362162190736477407886936848275441687248827764875725090769859755345119595188180314410537264307683861345856374149101084609021586723670197987889554503063020584243586436990256401285944638248054566527423813233272471945632083517041901039427758642963902399016508130250685649911017207960627575241158624743346746757790161832857674748805309916399003607453690016811045856494021632138052198192318281711873231510021434976882282342492970987947367660651975562374846581270369100849181519700593408678059295266775532034408940555494685301799520217300197648435605223548891522463752430909398908508192970618983431971818690177021821726045083395846722027780396461265106144194551328509606617549890003425094273727287758699591880276325572221340297479997910288476043425881353705228439313302546381215920115236858579256889696349296557677944287484542552639849488676352350686069110391662129076992305171753498129555242969152368920001030033416497919413375186786537887874296574582567965344117199853933445823215092208018543427892573729406894015968315040784930915379754595101050136091314389316645519991967554708211097550492035884424707983610095097837486288144707723597825353493367314670949230595576731734287169390064249157725642389337725241067001390401787270193453706738273322440179031808056288689899732585255166757548806854364963884133144446649687744412620495628604943059295235296777911352994467311239874468176433828642164639027707902142555195808417517501895949918105422543778967103103666378134624108217142482169676611756336548898025857648467387932817944611233109395689340428251967552740735568219760050817142307933366831643529981536166055597720618084149179633405599944435034203590267992248906088174658113341279624685811219781983213779741475286302238938905378076086245543482613458824129624552343900617878077645453686128885446778921199813835971249244846207142377497278713248646579016559190775446225437317142493633636490784967219844816493468827665502378830722839073060752455365661236528191534900618761029584848460744592998759542436029790428383109128135492407227790642973012052521723697954337685017957233117201056679218379691543215095508302866345701009476879953312959622251900152289463554759574432664777744610722735659410075108048871753632821874936451450603682826705696449038605139806976535249156736099713846626255198322494533538499428576480802071595671364387234915251460225253181202616761353688094136230435602265693608852911499966969368774185359401038374772759708024411983860751495387659020648344829112045704957117212261993141841450389468163020280374792058339363442586348762513851530063311695362156514251685611793652123190302264773026901161205335962395199131062456814478276629150087088250817020051948727999235563944855137256683746487256485221902277166133801967933102240634946568212758359932028739185588276975355590906662723960253754178450834129988229660021051584402095691419647394283991393177404687043724512358004829443453765631794676941558968553789260986189894304206545674945791828737196888953682801389501649783226453588597424944738987770724127652034243954732736050359558698442085465748499624712403365692354428021461452019635830959037884670858475909185086217973191921054189771354052065077337299830788406598097866408195612048797010259675472793601130972418154554965004127274240211587036911925943642775083762687630267909226675339620542131864994472913763545125168054387282107494741701874311299221558046967556695493360213271544879267549837533308420301430122370869099772746866719455145878694658295800238521369716835187526152428197452523944349208539896962113007051775134831606858643604214522352164279772673983426185027846358404684967399485873439377073317125009480266004300641819672408562452892047314996590485082635420637065085882281159342870605945706673184616389603036789243630366827369501881380821666503891712672090433861925131917879023989347911952948117540272234887746666334583129824690342880458204661663440857298430531031024252526822763529271882468008167984863098099361958407065130183673110061915547015641079722501038110778970762594356009900889455660636265959286737737473172147063324950437629188188919033699235950530738703624459230027269413779182286207060868689189180353264208425069874416982541054275124394422126450760028937185443584062135244094088323597724413102996517381125036656066840334330145205887364620817852239572012044227730545338483822355739690511686828983361393916854764005256565471380620991461804452538070544263027319055347049121676185639770556253868786503867160345332741424818907107034384131335426561279245010037922516793800949107412411468688177012023853457616843032562115923005438611080897861035715889876540027396004203975533534627785903512819089086265111397768117092785780674526883513941375651381256456288867046261493242307292836529585338458011468133750273916969237322018791411505850749629807692783141861437869911167902381952790211788120916283998811375896179384051307801747003624666689225855264748432531821584966941409970087119724242980779885791723948673605922621147817831228682367666628273826171699326152403763084308982010556067530269093260862177974634895621030105001797890333191989605335049614552229848527668887640727622752157070448844304276197802271412720141108202984106303710682697576582550087654296248736220411824439196520550774376008534497020439429589722807226396896579278375434066571142204931423596589925983631063325264155359326665637633746576324689644234273874939137389212552104087119780845807459985647550820009126813711201472299023042918543959778164589007866475831421303729115955066362133562855876705404122463735921029895776956869783291351164973935340328914579974511814349641329119969736771469391950118544315158681276814083415749189690122842457509760327283448568561315403811226917001400875692752519209590763449828021172172972690110213660565101963635304568713974997008875977357796315013635741099565686100092552806512509533636912455568170152145219194532018420199239582464934889891367614226227730102627232576485646543069692838468515259068400316156571405540009548993968536609812089274111912862514822399683881732938225730681003285591187739196683818517673927680596532717050230125536371864523938503760751721560637124676053841932472779460189295641619499006155214467758694637227091237904107374650500813703510333759272355979574454149401549507719734289719818178188936435552958960895372822290642921140353471568350125694099583452170348290460972985086277792206240151542554460902243607365308618555906061324291272335309296732398005131255457843867195174466368628503476443698711451679312884919441484375816965697248579953404083722778025333140254649585698508207558113664381012098078906184028289024148997393048590698903607853488803014653007789329047155415358742021537823617262289084636754275453860067551375478400681510853385842843321224704360213615424958139589688722216484695842787440902222522083745563888173372075155260088985682900434858583900421530649664096852952694740583567344991011091504812832095763595819940464872534653845093820739749425765606791893521237958793439589844871984312854809114924884838138797155024383599628101088827451786759704305433685746072457090662820899040971559047581254501053421939689439918255150463073202315933780470269528069731628539313398585169011797735598717388347584136747235363288759851515994565551529587844366124010556768405230738505797754069357034014072959645570722452067892329337637735241273757562174349015487271752715840225188274532231831703636773772310811851336016333090592585390363413712574653181416780528037392326153058744111164135994979007782007711400707166030352213482873655491501939695758559521902690647225330759825150129472739425113005767452878370279700905305502504714139820631923681641441738678061100800820752864590470304762247994934616358047073444576266544357958741808388091542372221744576241924274342553700178004674145111751669470109047717624957506041598845143863132606848848284318877483552260363185571189482337639603940388714754485021976314494645878414207707369751018393835225249152376772656010822071554801000955555552041745760798297333959574310346024756770260717895827293773157157651833828210905359690472877276935218052869966857419475780767498721985707786216742493792680971422094960801094472300381634710539447011649638071952195760402579252326299092883847015647128174818788834132841905358459773496305345644804463338933381178198901420763966212889538298468564622257138723868130248315564214347772770713549811636900543227498398080119420850791321847732864495287047747320871276207740049447780898274538658457526410724641057813545867560628036143458729819629189675121075231291218783689858707298856997364918037870741315731284234521859641355114582875091126965335515193125707093966377193073764366374860445932646228348619610928071760585429601962794189276199142260688320896844015537650066539439809326695290498123157629248695772984543248415216040723266722161590394374492272543663716313366476557869114847158949839867156858812977493581109739271680028024408959410568447396403629821966895209233430422461230297715038813328962657884484718148265985907889995436060699650145711424081517851045796835659667528408846096725735886710978304791566117371386554771312622274544973430730641647753923525814542473130703419913385231285509412703236629341201106510554708317609450124485538642896508655577948570406633774228914812987781228710268748209838197144288168730529747236712502430730717345193399494536900550293268531954666435587779076570159499567075969326639635805615545192200876021664808304742763809165839229884625038771397771972247342943658380734076616173086782807649037863902724747797377352784286300337456275449748384678680014765445226974445113851374680873639807692944804228870838910349333636735053259260710503018933454230161754278652200206096559156182153217512851069148856530815659123731717712037499283087211785977254431504658902777143601264592676287037131909554072170827604193022386646617859163078907567633785984391666706183268581794285554034300398474312184611247906623285336056847333700171287361535309375459047358227784017151808640166091468098910008724085137331612646756776428228705367231807904575755280599801792641470315995617424997552496756521832292389394451234241621001379091503898736172227035818045533576158845843361662179359040243429548472888055521939655715397377493972459660352538005095600211036175388573811986625352535135932989009371378371489313160202124349120572149474301648115145893948779842743560212706267811123003969104599046620027996491279994007360387154937559867715292748040009156312680382124716380958178086272917192387226206815481465868521341921094169672614427188991536438016454220478218751129788549132980616963963578891087476796396623483163690865649014527892828102666437497328806649193273742568177635874186135269111015478931790574374669560767952457838288758615175154951720577286342575359654047752007840481119525347055535780846558534753531333212010585558192752550013126445068597451045406394521225632998723602453085855858573215300410942578001358653228043154211424563684650284529800731540613639099341206788040364418509398854934841261806091411702912048127680334967214306664231475025619226411431493718281846605416230389106438440320747389876173942693706986724362871905542732914807073323717220415426169664287147209379106085758658468521393522130757314573209900485848403173087015462561931090112808198627914041068544562586493572943706359482022131315537948840265165507678866345116615778386182042934908510114845717086448992202113673825338750280665707375409088774624861155773838900494290984770184934649318927535112377859603299184871804594771802077327874837356928563092578972135349087671487731220400601135414373407173761193538938560128540136745243978772049396997620202095597273053014015760426232531964188569365101737212721085210170776085678166604865127604531443289613585605860560347388178886521183011590758649200381815744279560503800946878290565233151528964142966099869394284334689757508233165975661672677827341883158015642630646866139011903355483988171158829326982992094270142715940676151026838644970418421507349578284684568562947761345463836771160950693519428820079413312429291452114759319292763802405295997345384264770128647322976459846035392264140529276394228606512869018522569937814811043519196427332248512818725950724247494906534402779721367371531089603486427365972747385082557660391782224038599805908791299156081626186452628215997412078636667998399683667300775315316774871800716988489716418295283545098675814131543602501876457715533493837881931269231253959218364330486545345158374882070043273950790523536792011046324352251922907318832831798092536713327016126799933325310628240078767684345858759877430530442618285659518442730946770507915430312602207470636982534619629186283325391600799827401699220134453091722201488871299573724423852074959764356200125499649514602599563981100564383354676192498514986287947225079338817488621850016481381886220367972489985982047626173580740947793278820870754390073970016327947891678540993877428651810490261838495733973134828807938523145464663892581112014051630078767340124336234350761133795693432575039715186927497366180363161469372072311495859692301731726317292386006551964625014705581793362065608880682465938163802491827795074824915655778966791745713948262952441725012609429112947375649374584387650203442811617617468378551903107258456110989611486053765958723964440298965886443679124439202531047864103960499220590780793502335181373790649516401491845844440425142267083654052371908123819301683516102213995207321350954421465973397730099709788353616197948048174251720520817507644129183253883459546698644802262818495696694392640197750117346300696496170389545779503852867949818406232113569387304207305434198369964972825502130934676416528910356126583047778100356035754572670711868825155574243314841746661786909143230953511404518944214148780051481256306731748964063335370257202349861673383198232912228687445509432399823923613590941449232613365345179119714696000190335437084045016780009404964152195292702998988348872547002717609891829229673471719575935124186769967677527985279944867115837060293562263802064238588861987854885398515019782514993180386517643500785960930937517028244689646562962259878908666960656839387779486890522032834213686932904178690448589314597946279589632810075451902022311414224861499564024112080361028160549751777884063057853768101661610925089950171950860962367568490210736184444282445582505115642351864105255253939660765815859680736702485246479665592615502676863359272192754876172238332368020325378238126342704251253150899851186783660167480265885408493869551055369153873294234574500612294885269227869875006977827909379930796592864494741172865951475911536870873836068536600109445423530744933442070263462878331748358577178448835693348418287375133494755150381994716228225912932953802585504490454980128393730776285449441651248525478016166030482811064943533146392888973414771431198240953504259436230035717749368194457159242298580978863792975525336284210404401378346470618184851721524260405360110618457817445482344990424381462002454329441374053981567533260064999885200603756377677144196362181961202933189047726563261685822508369824399286375952833867277253340960814798004288916587166063753431296439379108409449669372872352848889300299415564421878980054427775191135917068829289762345990216284707858978293222664919029198899403056674415449005814329672395288662104102174017111784648814991149793064866693374255558829991910165515212002345223401253608452570235591836590093649297315356693104625866003330445305421163555898358816941420231124131768183703352209371204342702278597937584823069957315777431856675430504444654694572885003847682367794686680688076022057835592565541250493099556176999572962861155067861160376866105587542945032828957463713132819725107373957058861853634845599857590827193820762712012967485794229872453864365367312592193988270890918504699794560825694698082678032246374838417270209881153863907899578726854093829908270062388457074258983321678509388489656809064868305439208616966827257638494663659337599668116263979987358938912594192310205271106511167967962236709376082279438231940952840835121608063813501620700143637723688964729490047027823836482282328858709975146788102604453466138866448330136398162578159542004178105495304023488392362648258874238780722411785888074391320422869677158041759044154250999594481292499835654178686198011089570612877602569882338866714435277999519928004332764872666159113835887091326271737916368982589339454193514285021299910442240182084393585207906793031484747200182834216178907286134581082961261875011436404089684031036530826562915567569388072684864005627512126989941199640169306103558456049443095657041110373145982910913290581546576849082274470065464004106257821717636590250867324353966325600793946889499063540105364026267883829922946817419826051009997334760000256188997413053558191570620704977496052206700891003395948937518732024935982935279078395016762324522903205927458243725706026417974219562725019148606661887281041439258172671804970373862416791728716380434391297454696354520805917820132244046911651268325478603557363247145566617235675490184529637962911237500579875623422496568548903420166900263273334358374036814842055700770957580042379527467013321335149451539737820657097212823310804303949897401164912221070574412298441020233264402113678738088202848736060870966467666956504432375709819909335225028473506817671775280401125359835162089265622729519549753532869830354399414126525430556016934448306731639212324674386174177047266023154611275448711614263212019457374138689101958848516153876074011854208675998453892371623249366173837010014902313853680746616796345179330451395539606951284193626500896611410078071268026524084300929485994340822383864531772476257431123941811715860483222001758940752533657500974929083184330578681818126027527278913380369950563552758340679923907330640651518095872395470534365843316823147432896171278987660665065080069839050474679260314149030970251528060155892140404535584549178722763078997164677530004201656344173814613919587924966865161922503066445749764231620863517152449804219714472755742695475661039821497930122948170112782515032729092191505385407347347902917026015210995408581519370696228722175867344540406045584331754731955851966996331346053743840820230963088114264993746896527383684294583764885748093422877745158401809356518180082830126333429550725756086054821680822918108737242632631779486161199851648501700430687670425928464574940489393335042682740583697575914466527792313731464694994917953265331783083493306952726876433808931703272041822252853260179240892317482249886310461181452256656946818613739253690839054041371682797619749238607179457237914498073193756876009657118761588153620780792502291677943830789183474998840299262952810170097788100809526627410481934565860968283350372687923877580650986465280161268080100178861863087083116481160400749999172195035645083952009209252006063134206396534019955886109349208456877514434936478277915831286653309726435012358077222698559002346245622003076266471245758961776330555940325597598891790203606676071706690962389489103425373982978423198101014490829347780393879146016796009891181309117836149120798308547613051500369475721733817482766082155131865696316065733033634668298118472503008173571247588977336335193659527264655123499162461932618326195865857182634636128063635508772811681205782081602104946794872151417767855585002803116604380769965754635274716642236151396964416507274365028162510307540985487949049239359587712686196198566137608341480453093780406160096609766868916501268056164847053503979273954519373273753597552281466486881551845109478408363615143831396943536655255532783591156591577849172730957351434449958576753496753299038923050207278362499152534406890949378647320103758456756567202198176270595710886837794512616138734192236280564072559781358027949817563261129534502915991397477408628472001898909817593731708636834762568016171146106077764100086648349553233156325571417597869277166319814594733829059744196594736181024017563394445600169943333023095742040052783407085294996721604751448956246669366772633462459397276836591296633635111145359913715710298221284463283275687560272208922517252913328769179121667299978440016719380882890905471391805406020912162998046549225937392303391083094283137151631046470448608451045334860981711986248968204486291797488011926006248057931673950151606807341910357567476445380910034024860319840594149790382864402708346734006845632894642643038796612790243268710021131211307179467611104831956057979640229576581049144575455425523584048482068695861885818243397771344050658610372442298140365373594202584096656695492386100539424876974234573944909512015990165784330892569414727473624522588363829443623446516415598005667353223990937452566011599272325312234862555417325463455154243176056636960764439606128209228816195352687134972720235077278946499744580205414277665977898386633564154677630224331252827482225363267542034302967771695528221578379896129537749381119668764595441008530191401814617300050482221197424858347015912169739532375556834303619843455055453142782620738215827169124711745407472330928670700405039015536330173728857647394395692374630495665810453937962603666656328697628042306174407821688111962052238931689660916710059607692775532058057509727511720072137317202710659124932425860843601133121900347891904962671559278698900718031053184895572373048333616682898194242723022990092969697749685474262608372007329546544931364567608825758956013796919406653068066638157036863089392688486377464219117604797806116988686355244819387404860401549022237427013139457384954116640636471954416810602076014224086573064699166715509166441700769340859494908645245427650891722401640671238532782447326690674800378442131414203577692020380632182013391216434383058782925227065936607563295306216111190530961330926807957936275724933254464747079654082352090592888104765940470589885618235309711529578942650037132476602691107686167411082116886912081757268440811565260072288451245929365617939268839993121460183334929676632175954061868153250103323341109030779201862467805908880889301919448908105271737072710945892096549133548896980296436169676406624312797794559157683104270916762276849530800473337378526274181907663664840542922067563403088492231282929805477502457660584246500909123559046227371016606524211232487818687520116708606285905984566203787793971097707305398215892981313075023652255587402707699275995783509808891821696835009229649246794828722280798885378692982899476512412457759529744413600596523981291858431502855594019726587417342110230442620067994881672661359404321074514698628952678329585777375165628936178597470927996103296167473465452934940523638676121268068198716314397196694849943281317519979518941325864278201526225675015888528591932768663453186667531644130280078907474885359349967028364091555828246213653366088579129594342493104129733821948445010553673232672552360810560319716516542772883355682935533100555411355913405241448965214544135549478958353915871211841353536755626362857983468250020468827667782701968211386436827639074791945336327883719896359266440575313030175375712093583968102875033191164187945045235174042203158485613795323946116003732061944592386708108473062061125683231181558411834273674947250009041389637179912163772042280204332636381067864640470676644434063689612066404096492652423618864188688737201566018066134066591030738563603676563558345436679710742616720825944384150294114584313921762167073727291369223841005930376190550863652852903476519984839881421477849671197367023074592235455132482660685361010441458353874924027680145465006862487665941989933835307465599458781835103400385070586709799373081042566038953374897112002542316074515034503337131265437805493157967230229819204756267337755987266763775684529282720515042265760384317348700861422950062181159626892148816072901522796144468386804593810949822474788740412703954564000788442022259631199862887610201278609045464065400536137713668757335907795979060738078696046728125224475298719211841074880256391066473176334554245912270243032127948065927412962844010321229507785534257697073951293337003374173284601567863044346946725800898666413476010898744304230182490371119132213030816963862972149507807369586015589058080430868540135553771493763517601382907385631988372639486742912869254667237177674108599469559452820281409433554184450011491522813605365310530151052034929591913737748464036491514218604097602688906411101228623214041129079805776144334160791520677798391621541486240441596880660154586316255196963889712710253278355846503223077860422768973346401964504491253060430355917057876036181736316578344030872457827394731872684052672728548540937120197618128842983217550382419664240109416783996284293260498606850001085155157113607820577672465276472074811243963644025705787242767545291434068473530841414299088663685476096572174792758398297255077270743479573712914735883527575237418780422943976851279676076517738425287710214121444401429620201358705157037062572662832390859573993066850321227636422599592892434353830331935095478864568241636651703559321035699376348765317302266063645118156522243260856455373049036344918864483019336146364108451168402028275113935592808008545412182538827555105941218739570270760224911373471431723945746445501558023530381547271507673873377044389026632772381192521108763760311334165464845850750989217355442383840371121692192077808016122128304459956768859175700625684082317553467075708481774656770168099040776406793465084939612794101467074044711055907670534440756132348496682181468368129464222479180711486618788440955146937804653993627452668678825387917776627897218303086866615714198452678827535066573913566271228498006034782410707326352644758514253222166467591986968430235914549645044660446732527101406478899358936260877493628799841068982020433374911866702840407488631966369794693074747708567113171384146649948926749575737133453859161786643901269801957135211919782586967705677691043731868831039608524238927733155629022648166384457155192209445226498145343207890655001030340252335375653471647327516383027333775339032928892151465167785292035568890202293327630948800347590038176304714196512678257713316571101696128632499257691752358697095859241485395089459356360010589503433586202586083195225480505672236516911066525311678883465745858698988579321754251183339086965294859232803417804761213855005836842633818366553882111379928717511120687384276490978329026293806090781713044323524776713959530486548855566733137522376925260870792332671213231065898799349925032350351643717927496965116374367811675170043736991661886578970130900198697237348519120977679737362735500122206527178332890345035901062166951340219590822735695034461009679888402847123559650139375699937458674630702912713213936486044434148254101611312074111371619723888155217848377847101477731638514367595488858218047219769555628867795037934906684996767208072066517252643268049988042886661377279511837953357607597152111929740834015651248567288176784919392501635890533572719322080026183015284513877360690062243876971738357421500384252333204623172408063647518136046493837723953723501314531471666158622678162268333875858077660547579266257465503491136188459877547837929945137421300052743078796181098779244733291369813341210826868993009831664924472974000330343936438450371313402072543943427020072397410436291428783064959514214203965694991803071389055038545930496744972104422680470325824357992518924887125111179455347507387699690109195612335298940500427551890562617460693690251709728701090848681103450154994743009653118488975576869771743623224813279827337869942902033999287469707383248817729013214694604005091346523829945693093770272746604018562920382014877135150477679186442664959334694273589846739968555591815617434965732491746718141781012692047101123244803562493625697368907110156431109977915727998021023581272965419972137101106738244952892006721411077607453483795556994277305880428223589962261486755471498451881266565509462917826458029336715607952714590451544889229477919969926335274435356489961971685245502271454150735289252550514352846212219982755946771307345522440712145120378399989710332538702076235224816801175667110429308836707884583068541701280812475548074199027006585170623290975238057705540525831948082916215227885109454757722539357853770526874809299955522000900501842239285235725854368935192816574882699030677129892081283862908851875052771746247922349858751764090951858272967170127156288180665936168643628189393460544894499409174351764148516531722785596896602326580542452453209471424307181055077778613012181550873362634058590493165120304912164202334189770647100513929927561546097131373383737773748775629569491500214761190358682050824084244450838076817456571791740405488473189761365994973853805054240952110081706890482792252322207122787584383255652786322028784244963027431479264407018933757802979510365202546573093050440358306758480882216347871379936563032128719254670702702083569521729686011178264601550527953751637321206811074552428304851476381977055582109108034868632544272486656383274276684322839444665715692465359407152538345521020129395782068470502268461449656740330714403170071254731143441115726760514706969262156745793067104895785812301959304137143031110736978156852268552315305993417429292815227832807766314891152597275971664186586381085090171267348204813109586390288062707746279869829270791967538137518721528555955099777369402900329126600487380182408518971865885807716672682802189840969826966487578282626051506938001413163801717715775607269370532332363800267003243247977999650890172163634402901690540599654035688924952172800987102061275917163674903803720257647532283745255417935489565511613457944741304996884961119304340842299606904769973287616202334702379419648444827732881922423246287359217009356507268657938680039881580271622397445001275793164707536737844731783844757908121946462550169256840200432540484997471549539123391601936672296614712722237108269827300255357612655203433617376292108743643707210918985478459105909383858344468488222441662724717946888941862520543424947574624258511534411147971965641272534533513206543094295807917433619865501492621670027525966142537597321896360157282160427828199487180890505201244433794634563864467930330391606443540574377095112159686778620704804694445030491899114584419444222248836570812781687394051509523275451659489946397407876201335794030203174765392351432289011806633096813868283717134341558892967748059583520512821632976015852307680118092150917021494205140111642404748751895548075342195581228081004826795243535164338809640676534793478234227509319643814684523282008302248763883170208493672747609811370217853179098938048466873064156041118261274217936860887494707072286556733801062550519391484036688834361057296905208782523617778637710219242754776638213816382415716690041922560023223163257569666479377844166348946770125367526144934165004103506277414850541516086020892445347768932175467184768165421911651060506659246839516770618849761384526710811756986789403268198670491215707962147499918300740145391076316769005295327191945914192927522212691577822348218552800006060683208136770736773283522480533562953139967852523184879434796473446555098953486141710814861331704245665891622561285324333033727618727057449133538317947835852436661175759800198731247158634009186383101360710199995254523922899591404180372188385084741581927484689178313721820721486784954458154729041395735012563718711654490965173682019062798117573913036779615771533269429806505625095965353701231421161263230691467767440829464115582014664934830502131159538451021947107384992079906347932401557642433892760006125730617716204843206489997831715245723554788911379063533078202150437099486266549376626979018587170174755638134061703054306930061633787542748651903049122853323361411149539703677468749385978475376287903700502288979558276601865499238675484295223340146280927302752961800413973825127935189874052143793674140913314813047773495876917233194362807939651575460204171501454514659955222193227744639353185997040957818776585628241748880712011933711063436288836770420493076923238549582672832104978412146632712064714328633411924696460988653235390261162073291798932622832963754360322227869851172930235853748710290690605484385248355213661146080708027152370860271582045112909240302921033746428566169305325253519163306313303060697774436691606374893895254556268430584046389222331163039795061831257685658286747279076483594033471939389987867927785902478167859783417040600127571204232653168986619544600501839270770487265384209092392586283221094658436069281352553438804382880474738806144458354793862887175609228605206468700390459325822019191263008938307997237220765469455221198649780179360057047000665019127586575779919811628872319011242424116752370573105614625942378376844220279006265792929004179341805940003434612707657618169855647331902527606547356473940021255150904691519462627337192479624928772269260467828621729586470423347161006641286775401712262119161056361771856216490926922355116579800125385037789859453247526215510764313376314838007243611585494336630188977880365688079246245955537932167945556515884353147503298518421340877241743398133557724792590580267256645355285887281892856661042090703005617655770464980558026613881938964436740991074933456580600140058158803830575552326302542", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n300000", "expectedOutput": "317992273202059653060118838324606262024594795750033347113937289136033095123789082729185977723118224526442294182961635167744790530736523343742400312593923504138394549347731334678578669542555886115550069202714943313990719196141324214230402100176343294266169927564343753841872947094985124165567933784917746853510969616193889321652111610558138988870928475200617234787660602014315882716887596782962341314550407225120940794734094801240696736482279003570352152863102322763087222997738670646157580972200208916602362923555084261335640188315480508447141880427985628883110881599867397698467119110058173418202731560790941643678562282959605652562469516707132419086995558391192434968029737824399896895569014356908838990087559507049892060219146447135766628483063241587321822256474972037408736290654170137868582506696182364624796735651474889997796367700872786695751069389478784888457561441154636963751340509108792668680536546689588851742125817381182950698716656675835618767771948798851651360048085142121570846092992375971164205626725429363294211411692665667741664037157266672458104955680070585589328611612980098424257050313634602433120108283402734648986536453637760843788132127329898229931851237110135563539677728866798807291575996597807659645000245605315410653536554854227299075029900893535595636701673202913063423039101742641700276220103380448341702561325456796007708851019030510933605349227645964455216967226067570088849501273633096272093235188993418342002934831915621347680994222894082647307865914381846675595315597255080370961837515325424383844364368167309935833413691661490171645904776606189994883258824263772708117533091040572885327490757940730505892182381766168417832065823838063481900791825922141822657981677478795000519242774178239173976583934011679203649935228095516926034508649966184784076376131851720410227463682511471060240852704034196018482110180018065170527510439685204915886349409694931140038050760039279703891564280685906431701364840350052584826574209624086692381117529345072968211369550217002126717456649230119003813111209343665166569355747473827153158787422640334238840486368538610200637078662019121613491634833550744639663552668818300607779387281798574662646829118498219509088709664660752734119317516989166477659079174530379539470710172242050699851956327924811633739281104105363349819469560409198160344041272661481516613845953937418829114287097347191358438255775506443079667708477692570208240894744594127049748563012889187914772825485733244125556800443002705900667418103386335819550430145916460105237362881577086087093786630668150175935077501195119505871545123790979713492977635728405517683449763416308188852141325361432624082231288791442064459044160611656877341412618857922758325651106368033655695970914572865792767768221860569463548772455252597372968753733520009745600576974095247865132471078848173533421628101457228155702991581589460403730753718883210438616762508067534611159930057390194618969584640946720354718727117846441790415565077252345424196176492439805924856328246229058181393733028461971844719536794304682594633929912479758864409875796298599799546554596555377002577060216085874718614291113542645121223984451553351045296862719635564290893223134620723051393204193554048074215787892372777959670379351203892165677901637717177028832733181589249826549087712597137180831499361577390020836188874240245078773965398711616792586852070861825336009758082169950238585296148055460060037739853978363483590634390685227536238205983249312459313172444284250254489523547516571673778144223945282187147552745758763696489140162681203945938862324650712408739837899663505033253176224863218759405881972157292236435868304079585952232759512569143456230788619838524704045220639263319864170356063192698208245897562061621044883381124157649404078024949075434222766649486531063846271755605305643208259822710442979784797165731810040916667604679202046155539972099618489735915099283915548308397416065703182581800268435271035399043965983945722320896006266208502424949904523451253338156308710781595313749378717575540314968476089575845179088127753109516057156038793531878421140843339474679890878763268967001361672587846237467396644918707781421488168450035209883181908021957442756365525930654496170861850239791108887570207615928057127815803077181724747160721397753533494870292688707175756229633035556281170563618477443649437791886620390593641543608837835254721992983047978403932303471164256502718604739560225569516634976290040517297068063606405440504413734925161558532875138613331693988381090344871321450864237971954677185684849504986076426282252298105955825099840102921544023466104330309664145934278548408680098519183792739643360367819712553822175704777089814301824493529971056100011746842707010868511954036781764167292499682174747202716302636850337621636945234386051132908032137708925024629713231798944687664302268803988938169832273654425081858644753352827959820306410142021455634267929200020472194952791344902298452324305232180977508555968166183628972880647682642972573375938658834477574465077800912513795488199949632948058465952315671875332061451319505120240080076681825143890872177362437199257207799139092988297036524989898104196483720091116285725283985661090322475827737898761058210950746384251445632223005493943514895756380048434173145397398015574861904208680851491165094355030131993114833573796260331888448618450076822531559055859897869920841517925051841665913639010349383312061685567165847667151032154688438090264851714731679542499955025854476536901298991951286336231136746783100329675076879186503543476401721703720527598884068809933614870491937397095647517550310999971611675105957595759851300802441573262280234784908872180114845763205410528622491816713460760006787216394374592919878438796426383672554843928347869278879564237566044494220260341615997086089733293405918166650732318909964589656600970840929580013634035904116281987067675922868494299906324423604437683530364336315558843852055312099430118577252239885120157467336269839315677330249262524549665258105675331749159312276253199617847431045463922415331255203256024694182095945546801868151998792814833968694988278383529135494596600114870133467837810764134980701750413954599960045846762396479478591942788129278971340222286382049239594420451428016035468958845542443461774144402552727426044766983862614873169199233335017347258480312041307836918263832901310134625078254081843313426051800808960055283762226452942211660216525112689550300355988011280746829391449001002393349788104038409158311054149047625625010056211188778790334557337012774765848084675461526641553346072821238502474180348467141181805482208341108686357793596232190780293531874758577841709148822123836335140231226229971704830469223238821057010324526077466892226096036662539844779501470212056919689522744756842893507709326637557947659799794787289826718718689208511193680134126425558664228773251901587157933928937835204108446984188580171113531309225174008770340802438375048505790202959282683535701347569860752679160415885245049445547982986331436953194008812117891293743228108523464269585082405088773352695632289262589602730127429074597429710709429915883376418015403791644947042305445202608228862115763933368470498730973972247653537134416139380542157441715260457258273231835966811376457036176829542448987957841728379043341102370816019969581089492904341462620994421920232541829971795255484327760204823760998692994391006409168512616431037092472518147574590688746494701970587526785093804712420810373682003361523768226207062720528413307298131123682011238194516092710295647442577598120358060051910992326172012081759210137348409520071451585859769945357777786932187836270762403590321556991781243114580096572930123666084921860829355514313969271552308849724592113896589808472710461556251505551764082013277345473465601989135142558783326942324125790105829979712970320658718431665613759139032765236243851994784462931178089165896944355050140825322388928340759078161688168873172699088977178955852062787175572449665507872012317337482678708977618932738263587847206915775774072694731991998250796087438082323143247437979269252143409700974637910268245691517812353693904522160212475045194785344034079300703431928427954887035548845201479869799871588203311006549480995448577341098794501345362312551431645121403075782062630665505082372498130482436254178877962339462686111720928869415440660164674482457761708205769130474981039429251432564921924312684551151570470761498529387267409538423240825947632567750201096245053054706645488378884585983178738530668563803137595294684909577170927500582189922151830374308694389755751459940092242602964912637562834555752913370968126067806916858987736622070992762605730110597390931314696753889738974190297280904529744117111735329375554315838185431165796516049273955203991026458959876327258740161322098274999832359695060731103221614043888967761694881577593784026187374492739147592727174770404021172872863425947090415830625133992842050392941385304566751182147449047555795751832967868625028925980827238655499691592336641742540569752322435377554608432171374715169254183989744682943678708074868399090063628475664779307993158797131336480411023424142658549826734138404914390337163387865376223570042632122392820904947908940630193904531204874147140306222319789492650434434077422706270353196092193278524745409522476274893319948615780433542359234391014039267659081737827673601183548270186482240724022740852556921135916732858925941531823351926537738431608874858613037786032796502693822711632485435814450751525676881426986240734532675694170445300462375202611427626932578913078241451545614371363500267271935549429606469731989335644391689321685924243228336110190860882054109357141831278997884769217124650729852643635629014145720066301979265858177559472807813648110529529706967827672137528454686543427250307139672656777103258320431717052917777644301491741220514463569346875755813595490701613902909738657888282088761132930322046144681600268188971334533567137778788361787901523870950327541019837583033568365692330534747880065821438706457635170983971062570102914485006452508384145223705447746420106156365098593259111956284436629646684828242321778758011876569249127945798882394741275012440862583777691835096514431811720411374222816310073363510926007945159442859861736055016184680689316962870691033508323281825176573117126839376809997666920457033706266328855591197519330508215409043095726525087184896876515052390765690677648213621783216712224756775235403108583183691635613205252156776966938496103574895137739363138207637388927272002475122395357667637071425584979494149073298935067456628742088167390271668352851672193303554619674159178696307856581895162655106792117204506376288867305553611788495132733696172237807353746574432963829711731029185034791216512218072369298908311701593599922427570046717950331220724641926909342622464249820612900533278694032492685764293178636117339931544534738410456214484265551478849719504455617531666466284333651228562695412707192232969330660153409667810483738890576391061822723419215250296571015952042167135652477482073493358358893391677526878353698261292730357966608994577829225064538660401895076342107358366689857886127857724004561258235976136787373488577592838886263905547501200351230052307589488939229372419795570662920841694599936174157511597752220795897003522443133058420716141392985886889459240449488654574936358180160573644200216082159413417262571761429738406875660263062650257008459941451405562170055652012500070834168662735249266279416397988445859963607782371597538658592645350926331595413258084905077989235105223906083094826982131081199514018776209756527142820145109451906721010046457469961479340652890179817371871115803921336101780575265993982982859917108511729015400354876029386292029664725595703936229110939260491638895172179595355125194959788608240372520012269360782992328788728527839350014559675741921589624233017773169054820496375715622397411667491408716055079247094724322731554032573351751374739116549798322646449647283184997442392146279012842221161232536268247164108264804256446561224300489514649238134525800622218597770734200590864549679459044308417708716539688175597074112223284843726382904044750397809504771509353856755385502961154298107655118815881302914886697715194889999293418060355588396910537864224645710972931133701304336080367355658159410790924880917958297831641507246953919675109867556572964297164689237176151209492545688123318819779199406640013029120975651152453096547013879912410921834130190241489683710209262203950933989057866611061324640090011223416301280652111824692600328979079954600140195885173195638428076542627357004415970425831074486268138988422199830264409150470691289070490725982890174720397963092140296636352093211051661483221830007187872839088172724104709703996677532156875210325260821684219268122890538899635935848606927086576344692404133221496216886207378947924292271209276139999623363250426966789037339632310072589058144555419148163919392782228584436625564710957417844195171568933633450763297781255936088332727288721356701861708155306848169180315525246582068586093086601068978028173193101822501778827647195497227700596055295926734301795679431304356049092038871943343560851612876398717117528317388415200469922284458977224163887521847738417960024782493433149310525181368970992180004467003738569843066643588596223656425800003478091530481203754019438042377000395789071785928235443044119469837277433075412148490051941154549271104281799404055800430368445332326696464555630561062966273648848641872611978013181852057260391841626066758455442452108767517857006109253054732566511429031888349344657808262507172400184046897183395579752969552283400037972043718703633635531544914973167477614529132204885227323992366453864192491331375802003886517239842147477898600198657840044799925950765377764258459047394153232887041197975867357545368727401869593556478196298008005206289507315769234866931554103332387649301965871296032881448587877234548691553406183183485703106158316618691633496576467308789940653270398570234485108739659344370843140226496104403691974857796398262186190570806118872722162551676752910285317989355091724604839238233736064970974156823762181057333145729002015377929637526216792913153871776540584236528696110203777476020552720409511927431624941275210730701866101911531056524270665072004226997118775783374162080975883132541022449105209198471365393856115012556322236023824321309298738656762740090200052821536782473417112245438248472090278783721428520277719068493020411956052354319654105915617474550565513539893529523556611969013306115840422789107882316962454922696437936822361302302420396572694055762544632884741807979252491607326477610983743568620259022565658633041090730126596774568761435723520844748185175430188099644033532957679597639408483123481025377335307753295058208627082242019129337543290629418619001608821383103839441019415407703201798358453363047621932685786485052544216465080304602937005651986637813567190666798971772458875839841285959050839380669725172175080688169676926316143697418607093768433973643136621669506966946746624568548624718870705457425545606105982089665067224688214296005491352189888165085507046235404504067085395753314805504769989274823808262019563258753159743442520727802414261476140145313159323630669585766137749525972046509214457774632122136440487465157180278521820892743730401882606950656631721501752667460919242271451915703761822627758150747915222700218173020706902036353839647149662298505206009610475170186908103478205644620301949407686513747887869306783198235898494607919675046724072803580820379705289782223808847176751048587608177391006029483510271081118519362265804365778115099064043674589064055435242962003886587309815066189173109064447911077997940501470658080945305789653172360501791376238129468557882014023580561376206534156302650804484555171926078632255492811797492945974799549484249190027346248056764152616127412686447737336802793609143539525742219564518672891321865401190195440048827504700958408741047817338190776953133913869370986402444955428756731041269205460776390214816620027845817716900972908503335080810257502404001088726256653282347798661684514831851940944654175040755922773880196807728655636594630957366243762440858241577582094663569974234646404606434496338573763658320071467742294429065674841933040917143183782005384162049767008124255858554776990216610088333202265200082860442763650686817981116880974855086436338457656049991121333811547043647025307805706914748206563417298064359035596310702515798265390439009755228079639205793934004932385904154840556713566225301265277144195388114761821335362965222210855557285697993094518801300848908653374723834618880130209399444241984776199755707072921901259100561575448742130788440375699486051006639255129710442316709240833389005474652371671016374134211522928486572614138207570398150243702225666151122677247661416197982089127886171781803580690156075470136324408748441370203271016714455043257026907206299388926594463635710460257603129340460501842667539607375613630572927683249538868845579401102355708593295941784673325973356827936331754415814483323064683462988015926957991127868832698229375006113408060113671456412817459840250247657538063744032272009104965131354819967389541690542039195348501924772941419012676834439634575894747042036275901413734986386401047069064615565871933088704831299389353493317090948429422809716213011167241696383513751968258129630253786369564649303779346003610906439800892674208838873213943972780876391247258301973721202719579055490821029351101782715888510438968541814586441331132016229633203222980813171697979816952382920152923367850035260860426114842062868535865460841792982379015477434070816200145595737997064675782944032982188554905091461608493477555294625938277185370684661152846510859545763950889312521881006871760209531148732421667279821567270177716568162705813504040367658102724798365811749126409770974442522052331314346031655976219859254566622952162061649097888069252969146554123242031224884612235853873072316233621094193779772114114150649013536623361436410545576058894151989685308067361421148262097696823839808551159860828425298748200177519598333574843582956680785969759158534269939142866999322380176721603308360258183945084704690388903801259666764982433370306743895556798427587864444804765770215947548270398713094439137943741901958652917568309603208625768849928558511865192390616457473860432238114023292076649779444726261254384597525134727397717984525759562933015197858433644001805754912612240228126087849538366902147425248374587394361461821523006324915130701599627836066384788664040894198068756221362857911243962631466914694612049878961647936611355146868745378291725207823333915430992518954894000354465869841754457356632999269751458090930688951443928507703819759764062685147032765660506885875569711712003200251926837105033100694027585921474258255364360584519235252802206772257386524128666384676733532467682702318377873761553415054564231716417444230312579861019396649871768189433801760537292963408214282238314718178563229327861230351654320777773255909784199672231625750290470729078102109287847626240506647112459504102693391955733230505053356532795464338416973043298887986504989245510208708154708976770184150088627798020171646942879246028864918878530983247348167097847095492276939746188375267151546249418667927105458919778175779332858801360153327181943887502933602497926541531346093587340479053908964757424033328001209581076084746357138400305636999808442352543257226166841851715781187321723197105852922853934847520019360604130036767938219745391234000287777398624188017209858837225407702304276637215939515881525211112676166659227637143552928684604611561990473229269195878370440819885024342020440621205299931042695361372510757195143826754913788316580666291365600644592286006422012190695373774281515353411337622421077792962532482117398850384324894770504714570425484234060229554463926954697987606127496592130727774644344076447903551114645367304453650203164753224476684159503038781298431506145458407621332574690791845829883439162015628898651332766423342365404731465172723779021025237428281003638322323695234708776983633063014491478579695304378671084564255553418671449234827566477984445306091396492760484042040783623106766225425979868088076596374767933126508698920012733302147212996608230069895712788566920963766582936575126272738272068547349283671292393267397358464473008895799229648958908685786378925928916269263160177204229769901452126077244850613397979729389313271780511086182359106956797109879973716016359551892236858118208985789195913686807382151084534632081581438830718185307343756784591582495324210916149502732451278060543520328035512888659589641644368975772445219121590062251058975024616176438905320142034216479252789857032585644210512835263640693880291009521568786924580233191930899756090081572487666066830366544023524616864760287954511049663556960988380442502546646392041272743207275290623166895293387845173074081686572385521351617284145810565199369221992676178677704886272571215170037007201146068596059704162817905117525044228907869440845033390986467416824579938562549949333829953771240000746658909989443355267986088100505040436598963395652329520334750836611858345277927557977925106486266855460511395654290182094628010938073486102016205686696308367276146037741605662584718116968544375113575820657778013587952366654159502283096584221814022436759945412554907618208025711336611420312393131275094406311919374159798478468575418905123112185203277047313906643735911579310855810845766007067180257265408293178350556963035995805566421523880361378006530433029343100090656587483412515011606588384856431986574899289258046858037402287188911419218486575158986082142469495732321974575964215355408995757664854336975582426398345453203632112844751758494614043103598769444024828875903796489455277092935861676795439684493398867104945466934577789507371819924842919567544060081510698593737747774642308685320394981748437548219431027465837149153808680351963562968629214870422369755859881046566267989072995152213879936085270129235022205714301398923913997318190424561004439195957928777824897353603767036343193379188600005281572641395396406233469075715136256871908661575226461989363967750564688644357597894223667391656978704096037104074767530481936153811222104318175958707101618486742451851514208665277830310592455154638541179627921787746870483452173319397266518736478759099615078137828797169061868025531509451597620319281027118528126307252440519219365902607889354931712486972105763765270049309316196298244252595630304963184505171615941568444612419387941614113016403117795235965298162148725859122455818131196439754381433780833245310529306362859541998149502962594995255101860058701246400023172026866995591582808541519648176285188034039154682691424491244150009806992622301690584641476875997403481421978410631133746721533077097163908977630074567307422112455021910174247833113107730620411527957310152692791827323454135877409843015981445811090197520180644993561777256829716074322445734619649330524958556525665727531015446754924009291440637329996029618149637422215795836638472403318395095986681243950100610296955700964633775630131800250667868750004817638795823352250008389276915891981186866938152082044519485842324193960410530504171124289546551967317309023736574290526845733365164366463201248082854710371347524413930872691582280067541345463957584507816801182918428426468506641891049621199151554101052476435606478434251787200640645816830069917991462788926222970105413233399917842948364401637108861925396402785641971743841937758639715705891254955468233959647085411723229086807436565000933166969221251331916300306020337552903083105832362723345607659138945248766643534619123706220630578909075397316115637300207411717381430626626185624262501378196446079470134333740361101132653197466466609062039856404735362511510172719863609890432767968913358642838433780587160092059491783381664050637576880822633290827810582686469435738434327286987245013681390027549615481943045011303922977443850937026492864392503150499327625047913610330850539692068612816940819304467969127413042033374383002252973582988787613192797396574230685928476132570269020265357674678607370813067255057212282277264781641466606626149363035022606319674090505059047820264211800831109908083697902536718686012762074673983720478848297787467976638137127091746783373259942954859366737435962970896035052983742272665893731288033657750975182085288463309668370847889059198245970540261827111448339777757767536014770759262615836590558937192368116050816926899781162249660857478716295429617251642748354401627167805088806310823410716945451107658090799682151914682600705009603593115844340737560497623437156200631716508381439305669980228882811705429550283709419743609367497865304317868147795017401232383039012614388489993491465336169718996909074972617296244923709830101369677911522872532544658744229177442255057260252212007914980854131787696819605418765609594060520619263364472165269120956994638240648478357389480846331375950274293689566989507924080913573473477196880830472004351070113646824315133920853321238597440970308467761612383878356720343763774832207837837879556872210256550128208219728912900748896180672026145033850701698035182131703537595253574055442228019247606998110268334077209137919422088082482186184082253081978206616801926179192236034487628836403783379797873417550843311872570671132103507690402754113577002598370785538396954256279125899868784754575235391597900096736154231984594661037600470712799529855006176969080967672767297384521397568854639543595991787100629361769541113757616707169104771757384105927078296662378850148206733878526145735367737233815541840976422114333509037334333411383311028067121003797117719442930572417221314635891028051663838805090461795807847605909777702608990531266518390831801072968921724995431453778080908276582652042835652762776025273734597387817524788304579088565503497361744671970067987409805087842061949053295664542992003676898168789066566322811946977060292585196926716794591347870578086908807369213534664911605407139915080741792454946981273322673777520043118771981515805537184166233214885728619664894503741039189279231017106000161720172301120014639762909679134516971525775270102104219016143364925895807517576458902078639147600082503432310232114127653604813411881968778991240694952937845321012754169198269326788642410804173215969373906044487610502304558416047460898849645662384943906108969712221609175627996937943949938991037540012110877677790192024494482174255223030539625089706713673155330572435164102081299274985060215724161767599133095895123342404276751787177345108302449825286695509546769215388265010254669575236947631989812681508043552444739004995334943740056182587138544088086222862201946140286686369410428268760182689081913208491469045965997069705180433042417473256022342062248687702701733983805779186128226200660015159673123276106499919095424614547934822881273073796457375489009717653232273263324789743852158514274497892616498416786106246316271291940770777041615900273714558988385964128078794293306323026859568071049298693444261652407621710429521697580887874668360871684411184056707846084195843815534493965546871205269082591744699071989184572475693047814273088516165410207456062392609586346360675103907049488093059984823666424048738888597476463365486175225450355979681848011821749452433344614259802105189123574494776066547724957222653881880825444021527517030318376237003791968321658552910675387673200834219668068725417427288377742314203604605951597456504555673819081384009530179409019793132106166020942671887524155546666219123785971229898186174792369206031744127267032884825783420141817466471357321898754735551508856148477406185713073479655776530675339457147778083809698815399625644730586833953537763803684473555655818063295374027628427952736963191895152655984419081958605376813791813841521127761862952206239964090060266372652154927601869612972693613254663998098928306700100566502118932153441912399074403128566194259129132194880877109766299170714857775877335165000716456787415712578919333641049531497757815727646641187501158744086975169890327944622140721705118166452688747644381142199347257663268135063991233373625465600094582019430713945394149925190576934981515382486372149566631076296970344636447791018150751211437917638059300901634453047785673446294164398490155758218293029882476810798482175024125498447821544529962838971785609646970285571126410417463397195428792511256338729724445988438894009074622387434084139911868892664697459335646342257458290653440512112180280758016813385855070213489513697859471633926609669634775910032047001733128980112449199468475254124843502555986340075879186418416691964178901765893724832383829607296409027694769861609782820093133930019362700445182995511979081029553708076830306989324900351219772973903527741558483944690372652578899439750507029527590661201025149705937437946394857878969816020562090898286027031878815716414043765298444204406064840046426654263868491935668051998622726771084069891674007881859067043302809655279657510793112963013445175992115191924699793351432730474928380003872268749140545634577176651579543567451329949441546834467874785438143438232598678749826003283448641410395426241337615500745794586183562532804058833042681627006062742058311616653569210214426940051588933936068820069647047014666448314109106140262333815348954169163385915371850107873123498535650201813097108306196396070644416195520137459873207654044312041246862936297995932375709162671518625232826945750176975254229275766230589667907453794271000867833208442201260257794401882712094991589131371530937564149299198957194393897850082124852276847244150590978993548481014297604630688041843649312884429215326804923564456047562040272039538051423429181126407235206526184597963516727184972094612076951152586859308343622572414122236406538045968419861908182931164501332813141767435078162374935355602226023391544914638169040265565412739188288844736656665488476364298258767310622536307171128182069778267969196380383906691769083909793341070888311639716043857225210459162561631479768427492032006499448074240425493569064232633170993948038034314594078253894252899199979777058182651065453059491028831020231903356086143950402116309374157278496652965981959893784062406601012974289458813943416275957239496377627584736776136191540838318573152761021304519824407777464814067132789768729744737508265741296659806210780829703164498643757150168044541673058145131546225460580494267744883887896575645960568652989247542229112746810871837667130450670128530686856343322515618503316788192690423612816828247330022022207917726657897191698868929091216677784346510000322885952691835031062659093005790871854793403499473987535860860343286553169586161661038577950474575005451980975379332580342331949119844949077344387616382516349989378883076414404745851288422193722399025165692603355309844222934192499585004574820086225344133671954007277104942817946544383556761418430834527122359015779842975013436636232714321938029562682182055102022352850592311209694823499944145307188815188727443734931319660536092845390213951588168329800187952360718416868620101993906532040873997688531512492126419200921094407140348610665028458025268977114735855349571089926512761980445936243563846145286529585446909253771431103448639116077781987231861412523644813993425819251663698282380507683992918670561938277717944095431859206900591395739975235067180495211092149674741313918399438308286782417197064642253884813690417092258637319815079931967999649424588056659001676441790136471099022672101165760992062691375316016077368986696013024380022080485070466853780737224844973767973191934022090069588541472939439532469985136150067270495360683408956541491144173883267343624248227022824380588807991661870113774905032745197883303684285807787756831050208660786016146425719052010350814398344137995483300419302586710999436555779287972257829273389906773767513324694709701273339609560779512694990116137510453840860835025050719670450324520258906588302336248388979826882307907194027816892314659156712773309992000985352004014208921136232050545929180004387421181461053203685002355101665934050891170877721317567107138902510294535723155995172989396445386113876544673781726101281908800900135882117584546743463689569680287923064053565797757335894814786337248086260868209086816539881900442060345719911242699234302759034814683360858106824330323181320071521393328831745720069910909790596196450066998116254002008238036853209034606762732021571813238349093499806883054581550722237887797096917397397359794864113592636727358213761299492195654318530836133661815867037186110861554034553209911145049674437014676279830674499304013036774160929854183222336112711799114687509010237068374319980970979014844180549917131560428085314296293672468978451048962560472375730538527761183937644356361862314346083217290521789164508025120083960000132485326777840744903915157618693158908636891285926530135292711479625420402071187012523485670801164305660646466166432608536916766782526445802645820834899458883712011504757458808972234982395530775265883536910910929489720420043273815341150185920400224106145267963305118039998267339338320600760233151265787883726378472367726685832532532201752608252644797771104228006208427154964014578804018515044169252652027969038865687715510139247723869636899172014418490847451273505061630847042738031208753680545784138059016758694649435519047076322911133589869781510144271074630623998540975124880388184915261406944151496954643855129536863896338416286477845464472302636461046025286255661946043881052721894924389803128399679315032308370512907286316946692875343908577368126363950369980712173350768262802089472776929243228587193436001727022258717311169482108337385111614974294290511180134286984312930904288946331034594309886318279365522621484567655802794088091499156047767662896583013584038580165995030720947501654481462948529895681705751140818260261144334962779777629229434918072326354611021030323850808166172681324178340373129714766569656245085242462808072560276517015040216948807523966458607540295037174771887921644776287723427510037066263373470933335815393477135445865380360083254493557761605518812987505825616153099878578773333365418206834941352269385815018293372799425154310473627300601031708382587262142595759425677285816295830105226557149784750684439182053743142750351634842908000402490632368800380796303064447156267800800113708939837201312197902942460052562342617356086247992189596384189329318372620077852001972044914662072320243677794826913494766089053082278439986546936604643846272549632118769822412052273747754136191074670300785631498504496658562777291441161258833012676842258986044859626881746751886035554314561415928351920506819476212530359982195438370374824216939996656266130745264870554236996203528153118314338617206971132720529383596501369806719512350441451019468709556648534096195142841411481242152440144780326488652567637170640379987888769443431127109694797870098888745779936745519878633968390966856946094658453739860423237628023459689325842317034880726852923695421964742684849673535607230697329276835836406612743329898589456445429952407219237950775337615211080142565982827488277513408588113672567133629263567935838751176883729734816056382979056188337824213512686997574019494158970412746939951968756802024341158648508767867642371661800393810454568185353575289163414129271232551592607404184068121194794204568328517281974120917450500071995265949132302371736589432091955004289610774439097294223428634396133128325547763866054820133853037928756174506912534064766730045438403936757783518747159728329357823875857197862923963174778841458030774358513844441480662903352173403160325940206738459049472111691599630631338678014559200379801199023465027556011091120839105406914410110423322395734576495108473638986562988129778500418099180396239705218904481760300108611841071886203690554154963393589990341112203794121390155147345571623970750287070445245932580055360049522625247732811439114667686452366819790608176299573641689587378454196140368899185843880471392995739142759687225325255245405236365822434749534224387598312472784164755686266373651090999792480693494510942591807374536794319581125292271125484450263690965925745221429344728520920288443540250973340252955560167303928328499987565504511709901184894598996946406772901414305568393981989901288457961315254545837965792590458927276622980261106784566841345193203042979065534731535611930611749955126534529399739699782693713801324805092247381247836298023428070836486803018056234645004138567143819656811902705991124435290903674147884743368125759426090161741361794116475985652263918122012721087788249701027867912643779930855055248331876122762987010803718914495044853470778520454405048654519086827351249205744342541703309762710491375254541061878151162111653696802951311761523432918063701129356710447085349852025831111343615734892985187080303566332783278231943189732665080424646034937619708169397483171386063852497386753418534446139601849372180358204969109684432664948789527706196713315104610872456187965585489444214023722497406610093650394514715966685088558848417819729786984524195390115714781764351948216706495623519722600644022395846562170398582744560570340297009633054563208142021678924849755732043584870828979945885705744287552849603635096523618852777332135418230769474697895459999920551004483792380076060280668683195140173703282891688036086381528611030559130491689548117833204985445087691044868645471194785728030113590460899616254982477838564864342400770207027540046061875407523443969598161766069062610598680745141718319420250250823014038724861552639227175769367224166652485971939084710604566911248727212325323740013271289802102103042500677052508937827750178006628670126933604789426409077132441862434479082893954152921205730628155680962039163366446361094641082989920422389862185985464207115582918531463814212481360705283279113080712406004545793667808501857699821369424403069669122196465564706363489081923696837856823962007480932235265597251667698181357265661113674989396200061859003401332886247911212200793913863692708065991863054902402008530134415097394982105241189799377952824839673130393110209580415744200430281581761015903478481121890344229699610792919019228362310652965207985719649889557589775134038482327513644470597557788674525503811344541967264976273666464781599586240090996562150386739099950144984313064839229368072629630595840155854025757710203558239265770883108205538997686676948717486257725246501480435636757953716713134952103966412306959372479409422887122650130986766103694131357568966798211707501657057346077113332399308174443492489161014651109687928649324473000834382639804416221113581627181477733657901896897882040625041827299542820659121062991092415134921570648225744516138164072707724947128225909235287391445652262038112573192618096441211615670950176469325437683810789856721897492802198313767241057929129031436704615965299109830984337050506590374886361151581226315797631259088948402168021313904192914466333496150618954223753530186319717980051265735782987564948094011038117839202783395510208806809533554447114353454174079258261833540591330777740950964675965351136689634629590480266638060998604628665138251183244454624796995172886839829608670929479762380742372247989815092025716049444938149591990599258400202833349065753922188909036891790404429822137681217565965759716734661775727272218192675440681934682684406114086377495995414850853136642545584497060094837821605795469167087778994866231992396404974490057325887235903285244087087288422068935460427666014833064699547278825038650488266710406053462655124077703768907738893519925098355151861943686170354061419483320236079810496096024938929053365642806326902156986490837591224343019633890668920506749637923246050194171884795275908724502979244720926291126837297303193766449871053325949237411319590562926271562177544048823328434636206850009496800505623370989595416518999151308040721422049139009341464929573689493583153670849249200993197142798648242759946809811367012080031949131329751000168638449048117698918224510796213753539227877028409132364467123719679057899628365641385953983233659572336126080360829423125592413762808448030346698915800314069125085548166730209245638461278947465534442931043415467428898229676047542742500367427844216581881177558644979571262758076333218574151856514339762488428643962617618343412850224503709544149982066792076615066780421449289267515068385894639366012859113844616302715414486896818560913218355501983090622444243862760360414664726717684519816042558943395568804425017751515878528456635642059722270561260471089205466230397342953076140792106315636985837021150792302776225789465671311154198912120407998866551491396334839450887497000406561523764883324321627373612232007887581226807087547087760010650061243339755614262943071571769884477776159929046899540761580574087313034402711997991949003825940912577134954208509456647126902177289119365926446441936629520354636508771565767551755991273185160476900514281579891478448173715871041080394083292270114449399197727555978236498086176927145200349363726828313455359312613110686431314457907183530721024282462102018113215693517437560669517211646651814831776995662312248906355152224453201283013930774533308503584340343818520625318563879424903677164455281837775121976616575764202497431659549257908903501536187411121746897620879326908949221336009180734192465748742471564479899581809416841827526476304793763306969029061048095889925169728363911530904804099726549252920648399009547081722519076665449873301691749566078939566969960765091474230942705761049336614366742567400326406859983354663465969289129703017849097635166297354102241385413667586875910974755599375424301418621174221864437120576344708049119554574930848022932075483595752589480434679310538706673842813024697544527928125726131984137982019254468137960466592236746242007760690840131129651623881425792078947562216961531217512278925952376400324358548926288587512616726577371773839368517115786105410917660912231786603567404868147813259043170281787137159307296488124780565062822951582274237406323171171185773803413209287079472270737392502911601215675998967388005116493874695005813293127145826324513669914382275031130221207267771024706790015771268266767259068333314033003984213146059878538381548872011768700279582696282198167958308667450651951588612095367978642695411088360503364491169413027116764700105733053656594521189013115629006094195637121586310304441272134829831228494633644475587372801399291106725988989122811978898218837032652668539682626608465419013119580035942224038070121029758822278080021717405111888662111115723378339076745837190487558176999447559818264867784460984927418537448703720239427147268526039370017204644401921403456996319329204464592080055450459751455160752643091950685357875082722186266894282583644044440779815089713521345888814445938834510398808563765161420463505818970696821400112533189378095582137038461475472658449708568959953157648466723310098658093581930873748884482849301306721678480255600389969779234275440202182422303248914613517006395910122270538189402472165759487580470037041902987196661861921466537234532716539316762828912021779723027161582547632319265194885897636852506096847157228704511317314906842454354810273849295595191507217798988729905367059098687241789933266253240411934716537771353404264713991880157202554704840060070581611472133827279258568792856665418632429517939788940062467479320554411225633464909444420674164862895800526478120985438133354767065678363589111902868648545500821334111998011442031733240652354532931179962993854546958270738083380025566207097093739813876380082606283817909106688047633123876623574793340149134261897552613112234068848143009924883053985769027986213905874029309148215628043328954644530806420465036356975434451506458761546835827581724328783669892105594996147018458382822509654130619633525913645677397913841054551954564862624508286968847396794573217098604409064355707671221231653606554629408126326329531670794702946814660815198112260225412596046427985432050124568290959243455549495192174178997091784490991606142511270511217612524807861097783926394036004419343529592113632045622292956785506358140844571685902874969961357443878315750215077493722543913575712275962283613056162809024844963403184117054274061513277803395559326430538277793286720690277132606988597249206737782716126086138053555598845205881293152242555621848432589511039680595061746925629246515110710646776313865821714362279278742154746783814824499177715905120947786751687510238193017664871133980174779829193824472618857172325119527012679281156453332754051971510339822074236127444204678933725349217649556552956803318430065049686706384985750225958080645131233718429193286374086707224404611518649919916586921056458192924690551982904146674208654115486506308537626222314574858081494031236178124464986870871807465034634809522006846751574963202822957204296325288731285072446408432544583193022253762726841064557247538761090615106582405049220103129755351810405690346148914939244190567581987232193379274445796388213119367483223404814766829609464068414826581898748692345219051203595171580982009629332367619177471632892819656584273030977024530339541223273496070620228979111941353142110366418312104936505821080911295017211524607119865266285947198303297691885843547809640797471590969719181851827394474836805061574372029779312306775518939905916695748036401728610948131510586059963187586970959170269446256468386685944580413910059078304217472764034794464366756897912445007925987378711052771721725730320987090941914440951026573591876076009684622121114484484384145410596921859418475335965428594298659370077328220801914445810472974458059990858543840543898163355091508456151018781941578052035468140399870466117860946421693417853391152099603810882106491830651909063577910256766271029463959716572797749596245244651631288110167702576153841786161295793395728546636705905499806213995588461466237127213082109708501250950515211613811502986237945480703119314471719715920803375346024074953361251259463031067391967815378982434196557377063536446480081125505010700498560338725072613928577878791558102332170373357776954272491736711491351067328150548330041811638682183733514323773977214997757437664722023655538641234654121780470283650203923755444500361164130087055206076243965601190707582281950311535026877320013984792760249108342992275061782456227691042944974163918697032489491747635222857497153742720792018201869431029501408939644712698151653262354807835993838716446508320414288573218521528915904395950798926027040146735492256657532423078886300849288392904672088491144125045898999716851713784954155751866753109184996831430626443558474374802252092622123754198781021323903004755394584440791944716345016362632977490209741048520371817480068645869390739018091215331985146547065671335946494105744396540826667019626742134266613099458759164115486917208490450545831945642636888467516474821883827115939695772318003431045546918663366251076886819628374578654399424890250962215037907133707886536131816365530633982070489593345191845817424134467027100162935862078847934309017039031655010656195944449700813031067972941344134042016784574958706574949142031022298481252710103362171071851721130779196352579710715002458586200634212878963818904109347363892093473462639298556102763151624848336966637595327319747101449046766884401092675071656173189492015972723421569131308416670671523793213593458555980935244260672130729623750416663003149547159294228748876552721457607093180371275958332965736292967028184824853520791716867286369414976703456906273778306764083359730792829715040679310790736127828940855552813265699716570682968604602848337899703174710155700586802880272350533046957499564720937627584662922003941252366260237288619247027707214459092888390230960437272909658761042739024095616234244755862044246094374973376079457278321344933551127115748772112760852101787501112178156112536196808393089110627330122149812762580317876209975537512693891985262646096555894820774464681572884069758950615840135872510196325163763740110129434906884052715478723928289340466737516832149044706892826642471042009612687203791389972695327144413675047138335133579440655672179358185651931637280312679505029151156292291522838269646358006224053312440569644976263174851981322817359943074905465038209172467254384678960115270228867513504055405365402881925867255188270452335515025200768014081471720284303254256351852386686757877721408255624991257566380058643143294216804058777854965284356080635579670836855753886733291000461383207902579801452489317873155275451893511108959355262977573092620269268541060160964331932610298312135430700666546171359195166219171519551881001788250214363139538636027145224149275186339293888472369458874443255249940816350135741811929562181183853782798500399607642630096504142036634736322433328348393847360624361630083274915657513568095359546854348640650963051043820986512828233094880182123454416197637213260989303700445205252298357111085123457701547181893589573143381049624537550522682722998428382160861674711403794040961125674593886926558033910783282513529647088631314348344181512653096690197492265085142574042367791662935995561329885247079742897063310007570698380720379272274220536186000316629023449275583414231780529770383378124288905184248812023459132936258223966732876085695507909285051886777595861789856718973853915900378076084894559541051102531186866701994798592088578385664779557179621623754552692922088799218989894951063017038095519257918575860596435241356740872693783074717410566181305524960075227714741713914308754385218898689732215522165820990949302935079985720662739068088093473524687759941540479983188760644041268364784820670275956708829038091838787583684059957006399136568533338585835207411899679047684819632691707729033034316956478714701903178056809628142469028961420722066162905517516882056952002916961813836143690000808970404226481688327586797041124681859019962367945636128568599266102292578992333875428342683762982287622931505261213902873106742317238830194790652649124683790119525096226831209656969477926268374627431257512587514933200520900232790074633560701512339643234712833470528363233429318430091857303120735785808505597041911726299947231988470445033858467425221941631961389254224447952556189708784438231001621381536135975818620112472731790451442100048780201594160984416682897296779161190906871826682095305015986663234161238046915742766692042250247878855405902538135938594369054416378901684731524667296358228019815547889725550025331217034169553688787570031596375709136639488109777478753948663995474898233216100127399332274812082459675870687412716134661481394422053536286974884398083145169523171128401400016914451946051684697458059694267269453881100044676338029983845945681743382308289812598760999206516533439883873966154551232278640581007459315552179121388358555587913788321904934323013637404234429965206335482084389318205420116049544800836967528492039260126346960866999770900806428260702153427838685525915584898583934817541429601599741599155288203160804684254218694486488861978234098534655190710241119428744156163122532268864586862374531274859006624184638807136476618234997172029069400196736484906752306044041760894835067205369713046622855123039858116726562745904420748086743551131860598990045379621746761372650321389460310996916045578683052737401856490129698136456165207329484579154373798175923250385949145860558004199858533133806134003515330793293753151829043105603382013249005314852617474867999629825415782215472803016834298648463783778305815021072551420390289936771828262249188973058339410033538528654405144878680014559548083631233522091506834652368136551343051201642569442705713819015950567699079661363803558429867399465094457299787793403733735377577729646274385302079630644925454130400447430592402482121178277975377530889694627705771102172864831888834378384282451792535522823617176363355751855346812621430791493155997040177484405161464432474067338369248731498185362974861292326234952543566793932356083671082573031358291434431961196997084124496651063066767622517842967463984357941258694738160785107429742175519539942955620627434790529854072882561103077265267405684553724279899874740543877383416565805067338640968761101862439380723154489350403640597890604773276515244603908912056279799828413361713814614512663322636901467542788494059981844825457610927018152781445460941784128675497099078173765862267429794392467087057976654913447693132578988283438860130521183525471519430891750859808962692468302878938673781452261009243354055287936578458658721304426343679895117313509645458416643276455404660253251718054918987920306268012801214100814200604559790488271902310226933732720354822458996264621813425788783890062427642854126252343894353686744765631270301829457571061818845488495941226320616216032609039216396461654883549778580056759219662201644740832729861300018372661395596421060728267701700638903445149821491803624766540642363622382487568262224629253095486891393128215590700158622658799875660033917773867558282489914034541800353956995073450482302109896651077037270117569873340763810447927909427011802489897732388118747449662954691646333862552327598006009879566623518014415029815805197659108682183554044607087647780043214855482953839111512086309608952872835715407604734548855959908157354682808398387733413130516088208563246928525791816041018630579061476723722519823749242008542833146523457554345287168987904149182881965729684287844542679780124695550569006248148106580186053684655681185629448804693014531410023658132460043911424015841826927978487877305102844780740473351471962150786882208971397279499143950987595649492383808950996012710901800853509508500857951604992343395923909537343119675401842151717484239235436554182574319524238416169450126693307334909245249073674284509791185457103799381472852353920984644815499732233531502499140344790230316398951966107646700659294028447374385286222057854841204124898613080937349835424902373703142875405718204576818444784376226715601248813288514316880127784119839688751340317672827950360032480651201310120418096989514878076334811925217572417699684472945900073651217502803396848797205968097183353069949873001244115241141429922293312066886001004747101651900808637632652661526170790077962767203213344589941458616942246863630012788300345687419825317180953383865281036002171394310489034917643260299337998499963497777141690299640649839165555370295319797127836080833324886476518477988026652997563140896839449400548388168581494290388124229846595003751902334829537066261816842449489649596207393640616316450427216310905217882192375145172267931610789558920717161617590948313026733951532782069834708726668078261683755695068332517825669086793376298311721190720609593855925798687027529721007471068836849452266911743588632817258771296946897833526760338185316297541482814209605611253469558349622339711140925218544075291906980677265844236860915933123771840200237729136521124974717616509829428432921463774160979947389069494780578788618841355208011022561474166915468490218312132755713333297562942932507040482012234623811245876361269686074534938795660198142045623455057580800053918596225460929893395204117209901904600397251050513211603220683280841152990542721776317862114458747573796733029416558227569681751720380193075610445429943755147120051218933122324600378201872320021742528448275252913206232497709288581811681847233936317466146859666962823218714517632413546450670022677493410291095386330485004128794039533793355628619974317451748732981600098233686706141845537808962227809741568184213595436328639973017256816251750908946110033276321488886025646488482802205557863195211485528051054938455347215296105978109144923036877957315698505977501180852695418341226927311293545839455826542777609439625767786777834215362560878290087729386338189638460170840395441672657417382030194449163789503257156455835395325066415520814325685138161088456871443338583505990921690636011561591532491895846473296061565438068194694555982610349905051628932806542877357356463594634148377692783797135685009000171731922766348963116103581518151655941942700168568982009222945275996086103851177356269663733382392645592171276506577344546786477469603398965933725716096735190914489660349462368784859067558538097665974619145504481789633429491292710328229567844873348383956992354444124979501060088116198249306008902623816982608610457796182945048294609357019942812338275745273505771899100273371930107986914391598150607620307956783014547085457366837829687098357749378350563792920483896226366729949617709092289339550100698502931785921723667980133097392793062081823966077032285450135982778184517484636021026767522159846019709919991706093265852545178738798230086052362345137598176711482933741609580055516099321373278434176322235080209676028952279748747375589538122672368036677084388639213072179353319733631996056154523258021006497695388477038880141353011672688204672385012505694479350649829407587173795119013961745543575874290528311662932202056337330980165030601220699149557710263243858543054810093936288325247950866132343389441260915340000674414159546257400843816217485269573902449419166101927262324167962868146138002696767403939026363930693810685418194143690981458754719976731280600642015048512095290079497731417769417964341170830650204062072440637048003376755521362066977997460730732528145692138082677140862759379922106791556180869005550607864048899394237060572801901755959144440548480726199248619894559946459808384025558069597664096637068363236281493721272162929607429407229537972618256340808823805109647616353015205262376342677725207380379373271702229478298380003378674331622226266330317390135001098318859834812988234736359696338672539521906735702044806972664209656094334455661580021139509305744838732587306148037358114033977844882270547673201957107823814896510454028626829540470175872614694041361289994238287989974713744492213216329592927277848857219294851692649680436956186612809121036208611781328426944788559368673880998899494170403508363439473304134144263661550324246882515120983852567716668444261400178812000847986144047361864416402251979542793415961531423811323209767105228142614640698152519262508840192738677715211658591304880513780347778799559764313477805268097724792025355342402770979464680736142626092347273080039061998484729257118250807026008448658464706971040830494800981643284987350807027949881536548512824486863010234589898864682184176917905092271111286123227330254265011739477317824372640051612234999137110236004981061231449352967358407848617289598911019263053341371020684325246819216079371239211583618988618336806916309567369546604467140908384618956833149443525072689999797078599982932813426410611166004138779787246527519317655539209553352241959826452970314499890957119607546984526590108321377304154682632570619609484498992048875475086099541456418142810469850571970075548529091142006456904178808050431809293132191271999867242834657728381265984977747888553023814218659828674121176581313489214890837665577211139556601332546114761927104058113699348818686241627067441565641146438000636783609313885876414880160294892310652144535792537837717797306282799971082944115452641081052557831187910193259899028177734063561554872429733111422945168315175227783134368848667155855734791342888009745256024524542850050155082658667423486502674440827098170985427738841674671828884321512481939108254982028830396057869524190428029601115651105629073158936476343500984513408161517639862080545053091971615727228894170594107334183575482729514530630406695968857299120377631100045068682057022087784839514819957703949560988322405427008021847356358528723338132864605768174854104456315786159796658758905082348046611222267626898812590747448906280403454954198955723381224054459542168471364859896116668315700296527629011251713404201968581029204818754100838257211803394871545966979079192981664640715555076932522361075342198639768808107105130424526121110212423714754356463680006692768809253369270996480050671632432607933328888265478499892933201862766029166683681853257305802833016307326015805898354845917808255493393845274856667463066883303493709199105202021849856361947194094796157311039208722985436498287139715961301355414089579899534806016436453800085722160805061292533316020782778289568597898717210409924382268333870574227290976975742703891875257996674524297347044739151001632779501193685055814731872411728915578481004808523742682985028163782666530580621574223752076388236864517766303437627828503302116035703438529737735476746860143751112724368453124017430779328035266488161730529651800430193440978571445748302004055917404384468478405990738577948067170221806410656885685324556210446879940404406452226801476148651586161256693681873081478849341130665424420897932644433606662529363386807657050055808912787526796254879079535307918926990638365066059084896298801054693002861093752598383478795221961365748837460174247517574497709989539865891672974478659911358479426857731385164635728581109483706757399442610118993651049572201150753141375148869188139724343533384143856210442177379972319531641779259400645318961941393690424242726396405919005094382551118410267884342032919745878876962027598688835004399223623517578120949605343740872535895055715657005097219286726730354669576637246581404499918284212247089633554560456108109942598048528314590808271689273235537272630348141753799418901534477848885886752283277007194752324617662896688661363026950065114983449124720419752318610658553934241460755037710202419246411194863949991528786093806016018579492890322690904634188378753557964920285700794546484657574214286677732564669202389996274865232464561655175463405020506122661550535942752477850522598464755808569942697816978708702636463076336643545670804367772350958077011852436951212689997662589634680808491864144507670919693226803473988199164621853670898679532955224144095840046393416497488202984489056704193121167882100584360891906988441414625284696381252215832876594611895734449780771308919085329188660886663665344803629354234824990003054642889052786138628613764513497769991737701721763008459854933810570910335188425362953278739567204708657396450338334122809699607610882834897243273866618804165963623861211445034111052720608420146194138424736336412121836162465043366049980242872469220141652390421704209996568405373091808862801816533859619375007406547631621599400711519488901016394746393008517428661219251005418566701122191262496723944120630827553532780284901774300950693956591344817000046061848485970934740267973333412911123468775349286109139118146741314509673600706833034259924093889084173952299494099018033315137121138954694712213865107141977131972829821474566693243560652052192903496329937570343185222791859665419733183737632276390505413188572276623884687684880325218807671859529203752994612378305389197499649271416134661195195846324269272801593410898139537791911551602991374496245394891530763019007531042625028926778914462089195731298171050767033962796550358444168825575589858844561733058498051761792914611326290112734602584579203923759247040953336958710804968162602959440513185275280428141681871959672969746382592870685739112721697012313886919448161031602588196693640964299729848366375439729622432899243679632250591120076293850092026591130361741412527771658027677746759400067717188103635653742258277705350830856754016653318314669554205895872923069772875097707204617652531306668428135538637308799147466191743967015497560796449654449045794463369307584251089263092151499847716880292364480593813353752143596030783709670947005705882741991632555022331591533025514791853329557393228995956672260216725245873262101791879184707682370988229002913813081795036468148090122680751553554218235522804400931628284872739268050986521350295895405817403054413079766099234545937382719860501701415347770093375122321709920443403165203445402737223325337282147133757547726801729262137973123143966499358577402803167951487358479847711070675540791833014040644577689075293406541171112892114292138462372315299922080375986670820224631132132695055488663712036749217336424140577457605781406128071588315363716730249427301872118164382572061070024867806012803068891336809277562450805873371261900887882419679716254958778521242664199750671022804971854041576160797327635677815516675757654439249651638197022996734743469297164796796806921116796794362529671584775880742706347269805956087600947261624296538981937451698486426939190645952352173853856270266955645468835290982524354299424533110153700722600090917327106932447012904187936009126751313875922843975307468172791006776684193147239850228652560797450570158698481284469057973032717282984017103448855260232337406249592323616951679709324586276668577356765431012855218206278789820909262800173831420883469364307398996618479226267629275276996757740552970329438622879887297659170888987242717026450461366935434164720056546249874936782967763515949535770405677497890404094266057192514759333640313696472192153261046299972312533449263276313538196130815394275536000842464109566093646745525254186161539002540070844261772645308563297890545392975120467779952909602308986051406955014601462026339041608744208554778942978636408237303018956956324709894568857061570996241998228058969636580183814482299013186040404808079884281910911050753450456077733582223471689513447384460774745748846422819916811170059276904769890871413979180264733817439329126968531194311585883588578148863293501648371947562185209484374870832644854968284699943863772777187075622188729283523759052927357885116331197791201086116941946071069029686312621288079107008387574014978565585633530957177240326871627526188084086215473778268126200971170511767150771745071186098168312469189224461581013708123879819847378387296597982160618208905381509447111412598955548913348330220446466545694673585651603315738681536735377774342398264368941172621104445811969314976144809457801464968284059424570925397178816424178500534730908934917517033751251362692113505118299769956943154647899441448870541133181759589676513918703151971415991237156124909065420306707103597604208382934978117466551304223800638131890263247901319809658942481328164623216419995433597799922644121122026854252926311636274420614498990732376642200384995835265538066161750876106941291340015321629990776075675763740737226378356794779499710442540676556505940350185848734486079124470493298801695465409837552381877093356315673409518235831582144910417270076385012042957523393626320034391715045909388613382900841580275648206343004906787001187485298641051701400970700262239121609150805408611505912099956435840775839506178478129555099787652130416723580671429182341755472579607189378037344250338332836679378829466932640607469203945243237921132408440721255926755153227385119463061059090164149510032589799601742489112712024668860316471777026769297074762457409620799359363999993615347097226730628964930940168749064909054736180630011913741379328949320101361360816949288843830565117986014372134204569428742621508045911783977139208138711381351642601660719739797734632099958552033529232096329539107453193061533276619068966262478400907008029118948208109436910659377499453974439746763233638249669923578579718774559018710400344196162682504053129766295412014693641742615713645249571412405733261908226056530514827480002674182563190306089044571097523434983455323549276404697713192549270129025513312496498320447570548471473337343459695195125892082732892724919711133695186446235856345374238003644065203785912847171797238040252504888971767405017835302962508666617726739323500238538042925563102050134917421705308306390656054254121759059026788358816328959851254309666043224211948274620714471468589908007634779840936571454493608763502257332231435833175385962016452552464608766020713425819229375776314404229273209099795907127348413951739225913206325726393665923645524299507179858076438952515420600031762711874825743408036904808285038789053736127716954206115045686100132369431050132581182581102178420220228694292008848761175430438227633141907491153938956518237247933737693921154050893154316516202557795149869594289387703732125622057135797012684564917782933362483058192383673390521145509555688498656820986644038383396453521471467553683432126340169298936360173644690321042144402979760079541636325471322321662962503458974946390095428552181100736358916831665511007514642357404516148043568259626059847992855224814791697062679364381433290146355363884104613735362135911252369742004241288179270410473865792605024911506538416237642761991456945650525222808827611898437380186770632717884587682209742653858399253618624532691600973118634593705916052972687325109352752968843414382730620039782571979367480999184767159284041981592995158508570766261226994666883502455759760574154277062042535518322459151207374562734256289815071349603213504580132950861923858460280730426328057912386277726365062925086992850821927827419394706762438503971192055437312866338354379044311223397133141731694904800517440178175669356660808131102576213992180311510359280865787578028439309971506590331342205694835814307995020459345213066136254891000739749485467337587460627364482548657097250152548424098466439239993208271885602145845513032466892680710287408504401238614334498267889978627184016803709612837305902257421000084340109565528283744388732469744550659725106436872314379157622364001786251419358904948507200821030519876846555219045034872151391805951331342552052216258806370340022327021512307385391351104788620710537254988068989874588848057984214902850558866748879597463012538030783215053404876490811153032077842474173851332555402058969250191130233609563436734343694597034821605804024683943559955393076916490906109391792942997288189992026806779994312558940940715450735319166179128885386618142261331136492997678022593760140513316931001139968672807449397309512901207254129832358423334627368359955175834764427721114767744553046816203859276992138722393427691116167991530480086349509433334623780016001674530528573869554854906348855057035385692936090312593422391669283582390908725344502610688337668194854016859365417675147844533513691917441661127686409248583220857420920620274656752817337893711776543477437182050979736737073960455757097261402529025002536298105161365044620594911896283917341350952975314928416332092743124814026453798816220200358016838673082274103668725658561874657293897895137458407386670386615024241069021783558286889476720811958875319414630034772818989541139707204687851329410789660360932946121971170854168525027664540606481832780003232041062869467364559617538335429329250272118077036278986923192283484549156281483494902330550356941898704835598838482064743785373403741773359280568755775506472299608838675912791650930441311338811186318422852599521090910777701121527873838171635376007472023842610105024697238090009685425318179281725562665400893950021900511566529401309124295725048788364270286298711503228283078588003328396147000827998332838796485189012215618502612850542088056571353299435072866485227480424390740493120511765232328199594059668997081161426909053172481294701859663493071342017548171603981339514188983467358347212830858495929871358578667643715904436006613394343422586182929035217958728223826624766106658142609066847009795730670284815729578626504140183696596619119817238035742302820054799233841106828406245631029917526989434341051442212042812168182258671275714208550069924589560316926378790805408708279963676030395258528285766926674832888669444476647773461589449988441387681765479782543045469408590843385336364016584526603463245269061910452273980766077522228813782067422358004718590012867029353923366713654766191654915542453309384329017853464970714621634576766615014864566200671065790017070157031576774045900609894971088756726488764821598231120489968958773460152223655225388637449179632865510485134879994323907970959464220190391263160247054267537454193514945591819042129279916009832632720307591298891860937554667743703441293331395002222313270682644815494341003904153573057350388813101760416800449838180774262780219829373884129166171097384526171601886615962043519020490986528132100511432100572488406488004495258981724508022046006774276491347093026068687361245345312601829718788714685289418224030321118763901003165432320119244069903845632644434541255386121689844105991362836462367930976174738621879646310714463291615938293538954588576562245196342866609066614853320205452925260619250529857932503152139144181610545395102648197696492680086469700301852208495582119984503175612224308669396426883627799223906520162758909241275901023087776605876333413648903145818709402933260935528125532493912944078503532951541603754101312842656364776016305113830482883128872715530201998606739234818690067251001627052652034695069746951277639750302548118755053224056402743565452743581373639782300081544672763767369883828624445869319705955874080374889385883387902029861418054399393217837815717401127144229675510697690342948264908390038629805245341655170202280438372112197454511383974043800505044504058218924049261913885525932174060556000244070100205590589472323983670410370440257532988437065771310164689007670268189291986638885520271059384474334244964564019483175556938946915753272476265493582270124125635100885284338948040647112798137686514093675600824425227359264607982411665904206873078221414538233767557422707307657246269082551791831258773382906099768182954146925803055268601886363751636072998073359669375077696862733701306968504184323427325495012044953061756714274210853857584930990670946915238973867938788656607833522084613676219959947028713127728062860123627261313168292057045268379864144597809782927581670414126824245147491034828665191987832574243269504874819546556818949155703989715071796653629511600256621852283291736332038628756227253720960318751375215622195398341686273388399284050865653237841705845203949494247060097329217505304712722477273412592503029290169676030353762749661341074872731092831900063490626079695913669998101344437298668141651162372881166600379971037720533997060024694645182102791283292744089859896530938729089949593287158966812713217625870662601079087469324403506269865638204652487896505926222888841245583654665512387309713527467588007010658499577952471314540017715867465991227828451511312887870486334243652671882054693335294195267123977251326204122894665336375895583512260777884738788003034455495742512190523055185967612893140378652499749271537041422348899516643666105142135840296018107172929310417938966564783904302366308907660880426517439246922445297103956435170315302676885545470054057147061842860405735626473095929215440491634729330373486801345009168057105405777416307465732808511739183533112842577043725891748038378893859403129209918865169026922198394066896094952331028914053518734002094151899222868754748386371038822092855800006700295870266557227420685277063643500041933074563444258193980411663291186226660172610766839950626005386862649728981253333571276761013463463355285106458334482533296879428496594125922212284571117847867669380257348296138746621608227408417385846333692895182596552103472055303501413883961161932689980875267748502189155030926038193691096596641665863649909507459863822211887174869652658339336669196305747280290425904633010628264175614783822832337959358146766930373650776104009008125507701756221575536621073217533687695534621557535229801538231307182899213352009366893543913262900012488898742660649479668508227692102805379574911738587486246456295886626566058650563288891955891442631457979594278902647577661688134251545394170291066778890591231154717836300963807028826823142175407589387384538261215874842083075727929706114644718875786141834353609260601595610754874517176782761658012845914248248301835163576193409484657328681695299983896617402234563717598932570157781958719189106670077691487907699747756547588392769150434260458251207787908510068732705197324409674199735058950115828529479699931477462666943867173350722794093616339373201752409859782451110480371733819932683455316589736353812466620209741806983926569230448526464992162247596742400909275123804122349588941053612183439167430912518172642435699191822371572093415544041617896508064978015837546980037084383828903931976138096660817119024693439581936623700430535344051268369525053656989568231188718839195931394681661623813175756009066234710485637131482230835407032378162128946676461314477264469139809856548695998475472107899744897896265420252354111096670029245251046506744596301124732534407638808709738072927524063831562262430922512462497397922235120027513160389908066170731744177380500749617236764710960273653402278940555712869639903400125551868184125345043574398107566630941542695180410687472311543184212620784376756248269683103712277344301872565474900196873270172479765016570950360900421921482329259309178165853430598239822660840165060213533769293202143659536713962072296523536816474233248691982392932210164612877172086690904983636497366306523541389562695934502061576265425970384417684512822676568487199509942128348348826858039302361385342873360018590402824569794952834341163023329834404442945431004670152836447105844318633131550983088337078154786971699730765276962171247290709154491666320130813716173192330289463992167049984844376122913492843163814559594939761630433941383392414667341186842176930699296751658355294291990548500952781179794929055103125393983493099096668598514235229204658273563393988181641589138185777813949691521627530481561720334769163435635309714694667517897823576740340974065272441957322198582385391416219973173336845248616747661738778174909846398511887497310562696846485626893864244748058030470029590718779625462817501596425935023014868710181063642216578304168680526579952579152848082543822124215459468138891070454198351925340837703674050606735336308514119720188414329225471478721307760301621872500947301773164068974309047845567111346259048736692549972734134238951095596013120422094334319412044167264884462851529629682118160768708449550113324854387429174262377891906266770591540842773414217285659002547176416650590136805274875933441768360957953904475936025155131408146451396431449397023731924972501122834288370178966055081198682230436005217128191387428728726816406676221640882366105338682847241169781363107083577244672674160853767587999599101145902675166419952058901096321747854317391881177640843689132163309301900861587781255659296909663558765279022811308910303013197457135287311696781247091940448105626464720434440118902255399174009696580191413914636568179370618364904529467953238830315181095457867867292931752071375275388059269453973616349381463778376321004206703461591467346019978505900806185925281288118837906597692565819578189108241539946501330514249030157948145138663238725301462879825522404180362840025973194031840324233121722476627324546362590542956365355675739630311515160071227533464805006794673967860756878032873403617705958496121969471201044030832119910202143951842743312536457688498349627424869475424391500333305599830232386950601639647316197224889437087339000808385814048722663937770130359001707036521560492916958447719704836124513750266002599418936651352764490375915537431755257042639595034083739958626427417829913662155778439936265788835923165765612436199880736577717181029575438200672156803580894698194595040281627791999465566230567837253122839472836438193276057633270065015843471114020656864229980415895505902184712606312891170337928168336709992052909480483766484436936243221044412404766207669654375373736000299339111209628329545330828275660772921215990524251122060163641553299255866282214875074604752813660316382405287716962150955739943160351309715182922534282809950799094678513016192392368223291441745487467650713524583308611224133740836872988321674311790182482459507888959912937607657264617744239686536511438176777309610793154720326795542104117474390834125250877798589031014398558533611055370316400362504934060827276231904748491456522205722122432720378319407900016396784346195508068113416804745974334186072221250757924825248557662487765840612767802605654606315854608102486829061338064671069398880268336931318042263565180434836746414837775002910233271650902572375956621521124297285076668606366556733715210897963491048856834369178102521667079984420085827041838612792115086122256897749276888561552858403266741457929584839994152407166777127516539799777034425337718007655711010973397170002950678463450870580343153417863574701397259395532546453578377582071358914402901876114617022130138147698382168232651705030822606109661687218161279179207900306922209954530831773868217201739301178053717045497829116902576129007022596764966082542044140869315244525361499133220288157147604442008281168253989427519626700879817223955115408729680901216367819801877391878026019288131853220470235738393179503173053087924614462546551176148799509495351306226879862643972427535944798060884787752901047933960490472652614370982643798954300625939080561314097454519651368583881470649319196921209812991028599734683587677721082060822935838432069257933882660110915693401021671955386377912009947703546816460976769594298064795502222960723940524935347441743709125715154889598848234395796101648065940752521524295389966392465639793086636038983641555106670819286127437871505216066501271688233710417134302398223484084405882410357375613380548956364345591665673434901471472815448700545580933867355529110463461933908760783359154988789167667686314210825758871672861935060368132891652469822728120550425280371355470966316736159144098366970002064162192314055027370779593990807077371063886354648554641814579278602008149898765984046282974298925357025679504122229043240315932967075875888919705375970214440470199727223899623042553016727785214260661861537766765448892912230779497509755459083891232910013703863869495831064288586043050412099713763524845260411449609095543739810213671346797802702606106881120963126737976547221036623397332633169418921231393872401539611671630836212063334433750371609142042881349350704095530862830903542234503973710271211506866684478193418902273009251205697169367489111107588361496043752839871329048145944571641756941968121368549881861035392230637516274819092599843137350531407324868654078094975232507124417298916422737254423692152605090555613274230354572566705333212068716383565731994406339457087616004636129862752970962479697410176475419017354875706040232924337257071706295692449109032762612016128006651017211598558862054828569988439423543312662209554889118888132558714125555360904448245309879473476744449251412856732573534726214594932815324386133892298763024537475198196132394767120319586972711682288768983796622875814700976202390308701814756556909763065256056800892811710694652392752593324886018326635246739655928265571467056020885102659904834916085317235227926129774293096103224275928989703030894865371406464757416227028189466100034837046219705902497796992227229058483880546981484144948360954721421295555107141993865150353946780903678659840924072841949913939404831460841307560173379392041525805414256170901628132413278482603362469242740577445151657159433357631213897523544429665168196972944329304628104808749598668490949367114817288993739512582657627519055097101650108004494310808915724129215596634595602550978185840393448023833660432883608613667616119781722273048546500048799561894540712128482068235578770360035664993692881216090649780587848417236715780157422127983017015090150463102249974839936766078461321631690266916880834978012335680170006440477228790498197634853568999478902088974408830912730728953363051654589265794251636329352844718713652929830842866345096490400361220014470180467287507182997712068464639253600636010463375029849339821753752925062898328452256776016725697481939360159911043535474662880992747764781469447950655792268141593040131947450327002686506062718619007419282846325935915085421888949333250210979495490603632915900977292808043538299232251326116502220856003944023826902689547665435627651520205250092742900047300603650428119946982436128866031030346221983118920896429363101176893718874175324871752939445083041480454900161536158611707204200792969524528754866047097352564527923394468563683816067392511538563692319246371813045905545789287273540165029941235825774578589114826797567751499317543816728792012747885694490903610467219119958903951898555756796791672319554084089871258013860162508052155767103859595063160913185605892482423420041287433238824705276078631667540601309545973712058017285143374139662874518214344927421814672294498971780051331521902314301300579513319208021567424069502630286429068942005872671299615014464052139051760259973595198607375101521704513135045649326810301469150187691588820540173018290057514338432847003893005366676804830365037284867741564334422353982976537163477323216542848251213466274658963533816847053332606332215898526201996841966430695553282919127484257775040258159137737057574568423549397168420494431313676778600973329881579943854129714977055367464087946976333285193139301039677169865960995396205388588353533530131364001444823350527603466174538801424087649933587750474873094385271627984482786120932755260436504392388666053372629231547841205225843459613616226616921679799475534977947818308170990797692859317561207609181452226609984379449302799895780300576400158902648916870093606078080484924904266220602571872957722904059563276031545280190475439303680010007199208797938038372213681394228168900410770249697909719105365263231959745804783125279630777764198268481891870113872602725458868375133140903210665370383876891725989243273966484880394584972170973049587142251342187637468833716051404659009737950570090711396474889931190054053340355380479502149857799440389167600590639936499754389005171571636723290209770962467988588455089370455368614123398332890953004157146313778018942569474767535307637969938691585426631265257776779002716364533580443237673917891708229469995186943168197862359408515654583781936434335955024065415836087760151430587430455524445219021300430012387073677363994651822772147473751857688402964971905643827898298809652911192050106131810589779131433714168483022434741320717503331110426312431186315302125744457242129659441169074240795545891072911362194451626560098238321641743691848465041502093106227282820961231299658482284401150439281710343087358529450955990507339067515338628448955626743130392937141522790659450108524236384828528534587462362567107517432786068171374293746108221105118421584571531771928915460785540169771786219166332407664874852880901611046370300063101555331079838559537588492751363444637459286758551282685121747864664361183534422468908569114981228820082449344502435215476606005739242868294616991175701423407905165787367348060682304019799868132994961944888077962580306175512196105547794133324977164879896365219641819162619574254349259371917985818987516401053234125600150917505389116940445999982263411922472004736088195708102441702034989298480273806660712267654651133340318447389758886551150899148658400773830689889759595807757541063034967409072580179997832986278502660592420593595539299759675634843826390244563097892667484349735911917692555316738856721677997694126714662499672913184424935949290011052811697027904277627470158888085048867991442747767126385339455270424015347454851420194479146119251013140527412156943173553004241067274862170893797370024045897171494617094466697857852126180162480262046847013536236372249951487998030627637203038188998268187095144364779409017363490670413222878686676223363384445940219041218005964510866983639539705912819236186796661458059645560423193675346043454600092684582902560523885597646631608307631107649541027097849994726158945578559272632174240154784516231879546496543391047889926255529984077888812178782124683633879022108358177341917353418231254877413162917947033678130601084593767794807607847058138081163029889443308903235981555708780595318885959184031770431777033637704215245400953853701183689145423231428016315314488869707988283818650931744085542615276262027748471716551449174976924793617374669907639819115440265196391349418225181012300979345962230921117576696930322586748109705232618742422274590421257055499784376905211495538698497107025632106757500124703611883114336314475892036729619377143188666712861333232837937190477761053100334380150172538997586419518337297746755432438288506032507094368730354308488358720773739057019290477406639587983399298344027861231717141077356989330110443861665773000417524936731643207547440290039964529793706131823092055402596568081214018347269629939364691562592475752623303007093750363420009766204346771802440460451819687942943716292881361160907019818249159524612453421917294652646056099847633937039784523766138447313394487817010176959492311041240716620072897568317759595462744054717377870595589808277100391021812201858634816161409325695634399653291294410258359021321488833800174913980008034029421790047041915095641806834037505379625261968599465679230301157275338130440017895654495234575757649659174861725386142379039954671175900512545212946745718174081405507867633239253085207925371590618561689800424320263085762202093614111947934999988441971556432527212540924626260568536910344402858011586312344047392599153562754728332984464522684337105330758667949631640846397366723042442082383821798433640568080723705259754176723132427133671785796920213874469195014705946277923758574866656589163520944978079109328137733919927728459531419653873998125590552788043718779692745504481669605672859861477477739587116065757064362469080651185378829993939432479761089920764218827997245093645618556991893286869169165056704927950658657761131390148608119126136156039893930118588438252793631146048643439553837868149953526654203973870950494350589211034920170273340262528788496634973344319585219455892663548590303631994155886733056166105709496785487679908435149916910983987243458507767832430535342584503443826685617920634968606198462032999193883181637649473986984528697697069423773702096443157456047953832021855123887523001223353457385418904296155563020077430244301103583528489950440459119298512362375743523851832039216582031615734364687021483550975312568480381910496892657012161327881123584498186870153026391095500665283619242648326746257525887701086251321026410400087309744973428311035851840207652061813541778400682456502601939588911810519896524794684508593782289535819156758204442721932127001741937589024134539464365704358378815628290722423940941667379915559659729044634567655090852872002604469361780534659648896576834104573546451167288751879558205896480456538740954595174936679833603638685599586542156713492077503296183378050045890679094359615084141129967444275072584793267424967970435063686359015179090495040604115946171544614692756912811425405472005230817135185763760723140726379971451727984738450863105882702391879364042583781481436058014632877037878012582546183625556807678803531444093410338026166757769844922476444905225851990073851353148801217669831411857061022240663350543980013275602570995557010047726728818515688292372402170412291878196609520801129565907164482067978008153190384630207748507237513091219317856285481538586932076698104004169669214270249265338658679203631272312402327660958275748046521234288185701612547191794601568471652635032184851233586963688520733566780054047087605972816126547699205285508404366268486462609231163223930041613949406969499110859756156923123749459376641603924030423658458902652088475373472839019525871024402403758948069694210801134776511552744094983915123142556689967801125458893139998354574408355741463444733978732162221702748450769144970769893728205131125038383144692219108413256523048717603424469481668765082634553656721715489538992307829522439539259328730682605267409174792833348500939601028411901002745829629852999580227153864539211855418954605377922204942239085614521236375047303516916019170659916752869380013313677360272549676251413289558661327168512158857050730505846242038000462103495012643837201977617763163453953374565458294617024214970671920107890216301057426653561896751697243736759301833768292135066052038749417513384400966157420074930541112037680284018566187522497540154754838090676315136228058393674232533250846545574344070096610256618155853407603301331581017409566362835968777854781894131892327080522436093029368264313113572910796556839244375689939270014437441020034166977592085497215607948198318366128703844906338092382855296387220717851369390058441779642087076729246065549947125119003633364185470014572595948325017211959929874719699569070262737529247834551626834751881318513070518421928649505523221799525725327391691379826127384666146900150126022931169017090251282631731755222980623780264018840491017463529988311731114821060956105970695711374519992966032898666501183543161545716530420522483818958124339232850998595947231781712688294802956723164749177514232772125727660573205704368870237491375654318957060830074981095955274076986605983840186978738808766344076494754303028736110735451146302572588711975925686351665441701142920477805964764943946794795210532438558511466608018470609391010972223061154803809233080914999658343153994398259174423327022238184258737664431192864115105216420493271440076890798439031019946554221605267602058294036841291878033768552030658982729129686679591099252186775000620257887956395837768090330462777739197066557368345319416851417784331510688941075975768050575681129761404773351784157343572606372457801400385394096331907298510915271580519512104759562451701385718067458129416552149596227250166103112401296937323094983525749534804626144736289819063179413635183731502815856181572155088472787203116034070839980938186702483791339446002123101214962058097873655807509461740286069536818185207195209968664105186192086879788255165027446419275027953870301087748488457257508620737216390048769556226315390034063858124980728645978641154476377351203700804563592811276186621133064085345986126962125471853713950326986389634454365107944368003926703878631802990594333085902598819570213372046217637042994402701411070921950097937054882454074709207283242934596836764931877765288746872471374705459380319698255876638281969468263371665780400697290121845431206472292023939280488963822001760286262955326783769501652338963744291153728762543200078407708997931454318236077252194800539427926859955031697137809929410642612617708872666647616324114163569546141933860910378137644299077259643838153681279866636552048084581478252470725467890783214479885078059042357900323978023499296809274395406647211984225999084222414308060338226546185005771301287270308642426460968266042991832829290507007931590448945807721969934270977785406746148927179553567304744990737003057068632615176069454227651010931606471972765300214986570786749608706079190862983853690615614354728254602522787298306223864893054183531076827896417155308969824150210213218779882719868597218728921499492620771090793428758455301901769300287698491427572687733749101510163543275601303303207892652875003371267981395548841188740598180661137703703857990232114891515372097479523744239847685075458902922553091465992451875166652523667792791513709193640644875465331355067992245724060513778955328548513231807186891303280303438844890614883941606057450443243241285927298207528406115579120234881507093300263367140707055272830992006826767173011778103205699545338058970480552424720010290307500113709143461972213473536612974072399944746789799690171607543606532874441082736869703555168888997126313739255351728415015126872853157201390039411866241851126579608506083559302864096549828530854214109884562549193363190690588138528475267203014000326299157082608654274736495827099962696313768071301070844110970635173074229660256436614791377400622420680747917117118939979362601378058486379262270367043007805186372660139162949934186788815859195572992697628207694411148328880153628444531277758515311549468828233725655497316283786432506434175647902499509482983590747066671953298242487804413591323853708166512719706359488365033117082957671534541632270854641888683836339291812031166631547188951028701615050510104723557845625931105609844465794789646788957055379065691564596675245717357042452989417275449543070240197636483059633546884627753727538456744653442934847455118758977861755682761542715439620738542418391591224312043636784597149946633191780204945069764434499400539288270882599222102012159620097064592388647077561889358187378143516404572245842948573474027777175819726991680631110424492346092489211610992465806307373094515949696855122551763470754528039569023281291761332566107417629387464851681510564064507427731795584244741244785265334477445153117585613992764640142825915543006013076289943821173725359653765755765964162570227002960189842452895540349775175621375589057716019637744438633039927999521988589746444986379402483342933522898684051632785011229410119737544784077487297328058088678385222512740316653319110080244874727380537310242184599876122851332220565609022353352548873328978117812856596871241829359917409183783359632349196640338310700029506529716006739511844726678905031302209225054422985217800609499108316295488207368551460145506184215120781583455473623528148019156721101811696393459193533629796710077244023385141220444752915480886045941081816565980211230070135147654113180939123667258028096396455757451522263047072034632144649489337095319261580638919280032369580503525767706426534484211107111701082261405776460997017968634337147355294404826964999258778251832765047404465778728807554895254397245316748398514702400277156490209905343719949682459469799004683918277509107975593256433305496468732154356716274621334178346900728497126460805125843444396046992127273571739890440691056243668798714341959564542193023941685037018348905040602499552095418688143802900142883556562446335523389240039916001970994863421958452287032022293525190215846115736683119633126229502061961924508412187802970236716857135403020505486324863570915892077932790461402088741061767152943862713292271805156887820900872236554722767431751572236912890062853100747660958056132269064562529207223033151738410250493303536056607494474576113408269901569280024097508650787314346388290300487469432885780925004645310440876740705303508430946821494033609446127834302685923538885722042814665356324307988259753583084011660937892412172819029927212572674182015507646626058642063757493832278047330412359736763883096822313747861073620992984029548690050160922591872750709199183478436010615691129832410492544634901853944560913977953062668628444709087146115771365824908815608986056439371338371231265793584356665004602954476633427403094455160842580045561443990762661039581950404206960606895285396223982410219036363886543721759340710943798006435378106653220353918639563064504483080089630610890668783332109294364583059990334878516743238044146758092002434243780404090145358165066952049683734638181576985348323216254959919523540775294846078498770612092312575913793432599948674479519599961918942300132419657217638699487590098052141247926381789834181793966747583946824575223740295106941172501766962592367854174566125342844554231895583750654981449548989639445655405045899708103184520366877920933488127417183478783868095980378332963189573709521908873454591718987879442789987476175071979373353903182764516874609561340585967625876561746658588458492664585777579808353064458517219123541141249929052395520463508423990412766431063776167818566886601649229598294499763297469806249313501100898199446251124689763217153339815150584360857212274680019270612963112710834250102587369185270705424120661357524986470148631979567693274435124506110743419259848369601520017974473387132528007708499195994598743500840931780449336371862207733993105350071863262267694032266405406264061769851127147386099931842279918295114501028690701449933586939880820983304520896723784961532732041925909450734651079164267969551217467815618419830422107367668105400991399054990441610999274018930854656207477937523277096173690844928004152475460322648638295004850841096185859573455257256354919604136081682417283803859309715583341084200333196205279250166764568764847586970599744390984921430005075690257110650047929767724001108091936859416662521636374101184579158822530115750195535116587164490421954565227937006560397683778914357762166242906597412892307571838621491055743446697378971766868705396802469267542755599017391662153685516673048620329820002114630206016732359833772243514535636207826909518969768466108795268169501744612585336752295006282634064374931670179995606356311363978207594558347559828260613032610697963748041448308651783418240176745681147045965885822389881658629660017289029046855664827336890388693245880474345652308569392436478823644427341556126573550365765964133596369222122061441495444656921647425412928891484148053768370054737939154580080910464150656836733456992697107794986404464801250588331896193479001161514168584779531089653838046251157692750314089275944076410294277116851872486008480254045846871693388647255065614599921220942805964455932465280320184802829328930201970753380355227551334319584379070572678439102165756088364765411439195159200039304007979607064939500650107995387242038046759747354941849235385873435797531829171901862911957509116150138260036388405969421524577493576627375650216680649674518834635279167030050596922601663185933811499043049271814859322739247301177049325549643957577325796043129752140349840152181644217822804709981049558366170893787059687222837603889416540735960467711596603870489910145343328100703349714528620693691294215360641282854359774119227090682842394373268978848301213430158991672977285976392775998157939703875382541095195566427674205954117197126487001015999600254715244002022361792911501025794090136912854449863009673719611916042043902685933625299386989268930974688539893294464970935138022925829757987517455849511197244094303340890448187297755002315126563716812545755834693055615109023232658337549149415891572980714541519797102404893499790472987099305070612814864831407341056121538035191229345317469906232011528254680851633089384613717168814090744253410882270500191504039403104819877250166860040062644872484458144240050871441789595368733072900967148234552110882877153341844477196601875740005578021638543587465245572009818015371175860382325653936999810514463369518784481300341117443119386139949427362724003444653128148710685188584901714009266586300415761303507652010679809485666821371200422129823387498908027690085304151959802704946643215448766429625910301650452862367962850393945348785610118334541756530846834020833273211577242208884764073691605659090650508546576059118937731138538574425145623428798529681217340198998454061496962346661165921584682788580169414927419559608623590309352710873540936102225196695930210044816399595329414541357255686678774305459329298972895325188268567329257636616125726132508357651701752773356992751877360234087062860974345889257384118020599384149424004270747804991990513494348841410278169722278103325514623273083018672925638813337455999466405973762006387802282880386470111576475047522372052985637448944114694967180873174406683959659909087288155313300743951520124650494986924330794691574844405635929359971600986419530070516245966611528793759628398142009813946260461475388797824356234902189935584266627387702185675707976326390867098071761352922407494940267256560046505819430014398632192925369573955669842398219903282519864854037776490866130975271330633643979621149089301935275658757105596654925464348771506364535141698508518360343572191184112188380794126964232154397597336256182597458749318732768394095015693415916989884797845938362242550969493576809174275797310746551986284325351427008361691832589343495165008621997525579402732740822186393579590002731228814598049922136519554086570084192541816144094230385156426609249840344267112507670062257071134247061021638226340078853718372976741535397853398922878627159181043873932589865585318783678358333098214447216460895378809002631908480009059231177183389805516580224823693713669644928280403136115737808160333559394959072557749938758116633201805105140466096056220721372147521509817857975150325266504094971203208387252811953210664951227044574423950141774251802124348516164956662473102905812790842928515206129675668786041363686726582166917822515844003013785389617734637300101938033197736275395762948044456504379900114321209679472500006042845653256306593830290093360676299097240125094494104885673437693606193419817443792200803116542766563472945092425643725825138824585674556013104975810735137576049407987611260032736714961965040319172763501534758614602136678473600350501524924600458782122495701914705455991793301984564340429545882396349966329421208700659696749368593349150343874031571463739973116628134502331793364019599371942933468556858366637192072239184025872853637916015390962093454160850815867536241555800905659208219855625929715071846345269970628640189116707871837582564605355537151328019987397218635129153059693215364481629937506704035783296016821324346870938552535430708382230275839522662833729237904613199237078636749885646353053110918297220389235707012698201481357312650330763411075550990859839071446045726618519207221902839977846400534268255693081773360801167252369883437237127390234609878422120396127598846826532351328062618758926642339169814586605542953748942687602057031467804475780205334402108697917567573837129322680174832869507508425108812977998165570434615223130980300804137331402330001990478963516085778994327438654463155084384552124079125660543581632494446929862491197851415676201788097044544516382632997816972118499932896887794737060984874682964463252276345304587692249647805041524404218292189683132922445968245050855833927888558837871920725486546108024300727505734017620314608109220743435329144628146760367853120344596588412296947931668418437101569406172584696584897156573785403639550342314589469232509192067669450518712831506250784246217346412573675162669674357387661072991888135449792822071533820032934829588700183494388912837265404193742837005574514817274603453394017929794397820983242073663480072515565055000343131477174786360092811383206488035241375644351461947152146599211875016921848938445331918867563339505595708853201718205972141749767716808341735011259717019609845398621558968751063726541874368276388383011910614318523266760820014025782756864533109670256861720090753935346289175880571738901711623576669560452426612252607420206157013643886692640601456515904062096781874171488499076423259848300537844899169424724149775997836874352522932870650235862967262495607449348427446740249886837565282899690548893738268527764295510777075803169438577478709010665216644512029151766428401143234493697849371650173753844012237292543194746427261252011703150811437056130883349012744777536389735643972629362537869676819064513922393831377750673641724500015836753154258668684410020457126530599872507157474051465227969473514417354787650703749881172136007620579523352701441428957022136116496883828696904199579137036503404268191533419316784267726333159409434654922486311647142278261221074999998897418327744926033052431657750468984763371343763533918190804307684349924796161516948491578624181261893319964015807727209787095312712424313972673180655704757697098979278156359965089825849959824057858810774391664413598722199082258297087098559266272575000650902665409139576651140495544127959373609514045754523315418790982878016308576842844661105711097992115899287160274213224075690876244786947380572554242175276105726416288120009635173854791493639391791080594478295657642510579076706200756490327545361644082495344553584234381683414854126931352824317424973006026597057036143033725006746680249492557873595996665028534723641550947459736310675995256274319343299630902630158785465056803491194487402864591703819101976185263439329129787116349469780365266861335761386115644496508129175245518093500067838848065202370761272783843758242051498561288781071620535260912711364740766406729021608592186267411576717993276358328125724420887605546695361559902534833712684360554999527969904702821401712560055682526940015939162716525895624795156793457993712332005122985710022649745796635298366452263678274951231955148097082148180135605705998861503205988615231648388034999880267215589691842279242366421794975047338225219341067929677547259892835003159028949420738103087686651178454797765962000615817977268202220186953333460627815588315092979474934586387489291610477734604979861982538250646734741967125531608466615522659020566691587447520536610622640533671713549501159612960972104892542350940678744111632026709398436410464162828811664095473367730654626416539097340841490329234712326458396288346545461890429065816833207817275430573786724352287431251358558545557272023265936249665741522791483919295236272012897468578496009097657006912492900465494979746976916186247930121326700751725131070480876096915198985171633098505420995450841896300681542842298073564062886953384020083297544710972770123300518036769819937890539847022086794951131061345308669664977630575325133926670434404559426519667349178324356380187410481780336774994747947484396588583214186273062380527019797172487910075029236886275792293772954406679876043532352093677431119363034172892998062880495926545126327300573227556593878578403917497092621132344027476851366893274675928870033382202131941788486802475606104452019593589815520530561265113437852216426782373001557720593257362451473105322324852031444798326298797391570013874288560246108334534450584086770002020813270684062307172205395364433472792460134071839240908517564310678265550960479776878229760068989181513765082106275494732676530034969292638104692473959632399038648876972997046961525917008627478932221526828001951082129934209673339050988020582005168075935255150273811921669146038960655999009446317466598836874781552587372244457200320970018924250161426419291541627073495131765445922706213908743839984942832883346014042764196176160243986545728263479998285532500830222838630356188590310933304055423658695349075953986657216601607084518391496055752057627167613152680487416788111320180974652173865629736079051031606162296005513896993305124389099850305597741787522439452442780404086111176463017603080940547697479593715652703103892886747082221851875203462581409705269472600936822386692997437356766490221323950665110169546153651917091104039052401271626858894323603564871961319738642909396769378670194734838199683508294987133062354298069827103333641211099030726211116611505449133370095923861590045985916433439951712004463172490653293811336927764522730368531966677853668118373990581998359387288774373313971891183497459481566200016002224063503502441628546534765740664717717636163358085031653678520210602522850849774815213798135005013067900851643283561829419897108610329118169858085081762456445587063335923693008224535758938209014742784093746922699453838511505155414688512229855435648681767410631744467294172218772876492372312925550900744245672538103932076212945956052570740418118647671958512549472579368456953014238533740778805827613553548088863154942723196110928107637235869425600418845079064401356351008712407993782828171811007356784250544761183959701238402455249551386740566071007296553963886862269537807895108029375775779292012719307730644091685753746137923738697713183073302154240734494887904165895013300716960621873721624374593775490730774308149864984496157641973262784283380430969801070408933330068225465015769954763559711000945087680259447276956818173829633451029512615441470291345930799849742914834248828296013344568525400877863175059640834958350636957516671545594703984908376028598498572914255444844549220225382179010655203180900035204966129203764406891092209478988652159610062458998856867598528639815979836513388566212770766557611268668844743485928610903137341634887318513624108146469800790048318297350395975385026443566128811062248280174233186845726654169524215103208602501193757057615640468713250318982055042992887433928567501186975142717197454147084795961332053574981573733410214562132464932487843382823492181340075233654414472661329987069537864305767066715025914822847002690873368507640490751794559459226745568731655382837258046590496915059912112365063775853204773411332380144831884491555563756918827093706213677678476872916007269932459842642301339126547121851188333354301300798326781329910085663873976445287445603662707893689453588807187576024707704877117468535176085550829704020935923867979725079242789836403753994888347251960431442407690430673643759052517817298473742244356425806136288636872605434670655941950182441310725200760639410744258614798723090466433203797813930575369852940927993454509103194953667660947024551860955082120347251218468328165602280321743122153804753177699706506442653143576381102835157232227094208105942992530169316276875843736466297051644786216682384564269681786266070249568168650088663705196997286229219405725964251899305408301681246648767419604105247385030596855029285997808264431915686178967260233068426301174486974488789845154410513938492888911995497991027654347906302295951153381249349962368167619965783808842983223050021509280720747726258227425192560626059446981787426567715354556277015861633780725368811131830518118672129135595337737553781990822358129721260558312600824893448172989691444410712278601820572674686427936830202332733862484112075678964074154003828797796278844161947943331689003392728002874374378355293907744980119854422987396051571447416260644746359518208184466020570351530528328605219501083483861792299854369937413352294843511002552925850283585892452118508203402862168554809514005923768335829973836010603748928749168042748728664174216716271086949585337541044042514256960640428847853290418433075238806051755603261281038005684988006662671302703817493180771642792011308211721158537614798921951751325723081923698145454162125440847643460645868915613563599759934895797263247940797541278616167351150134559013059138101063299279808675607188576642836014912277788736544798693377762136274845716575993722996045885659691913335607628006182108617250024048012104894872377263915987785857533279234445455125143734357312658476083940353010332717637313975281881170400782876282469340304716320126708358121665388369864374683566707019682259057871949347656109564422787410021612448094954994598747099209350828646156119539347026427626629205600128429539778361053896946653711936836228596531490491827156332388148674114165606010333622920210008483760900460140207559164539632429293313504815860638088742909190126432109528610219348734440527361661902026168323579035279381573273827372857491202663342966237395894603004606454785310475759252807222493519689656773963981272676326351106826303138111611415940926125283134241033613924833298014644159759394710574414074452000493031099029781473200890642488163390765774058580042632228359792915155219464509402472488885687601178051091924649661500300698555420219679593504681817889582850776324994880603442759623708061184585790095623902881653688396779293804815757926298397196341700720400461837882400530774952738108928430112889256708731583349363603703772180739253044261180241887727323437452448915854672084072959424158682870184437606093202258405333518067136391042582892090824448733150576695304994695645809236608429500118952960919819998886921842332621697500514199677184235472107542824684777150394730528104024278168023335983874453872670120134506613498962442861664451528325861234647313757099367377307071139016467200052623236018754260847837290460412744184603720853353196090744867481035390196492041371520990008329652157423546066745702416412606415777201190598244678505267490794710876032568624533742673919515166375201711836597581723858106545299386691188990465988969812713377286235266006223887340502117639353014951447199561277869523636756711382589490383352590683359477521437329388397821071121650922691076786742775639101150323897905560670260134651302992392930053499315698881313109331189943916340751733867839849253650027931733677680548063680975664911371734034198239659900358300558835847595144573468157638877950881747207120163339679196706643018669995849799452395740112818407651416734287727923833375666181049914164506633745366108800148275647126125941093291864421036103450935312095257743018548882293282041591126589800162405439786168490235564025757073257058662529000881514136466798020808624989910402556438118808095931770637026713899417459350373420712472415877694095061484443753124024055579790628334689221192955264396049798024081050473477148431275340055958028037282599782211988858952833569354311133882179675303068442203090904608657955150681017521838053131765166123992864043061882396081083188001939477893423898701064650876040815569547073967357758997055245017585005546982481425504870556338904680334760497048979856652339241401673258723061631719271962599584289464480964212021415348310225666007962585336965904369087246931272133473832289671816840628624061674981839598175644221757416958176974250357051934033564453639321748102218317615348916785030179280931338861163746148285652205411642222017969838800365749125770676263167924309241774549480107702514848391556085465307715266016425539117019668006367174661935406459795523814901885217985234917229287376122790490605435280472971721290453851211023624574928189031003090532351869484873774140380441048165383063299754389350690904544614644499450687911090835674787249525504329030642020953731522099999593461671427917273825535247095061150083450426951742944902348518387142349499817695092159428124725423878315428724142304730205870642277128818107562606434813108851084388528104648943367856630021257230855031944582238987529925683935237127493210386339366473365968440353534699024957562705678124652047475390960431602123281788988419740340398041443541093697912361327997978424500908613339088847663370655920261930971413917575920114491305794806971053324020360028913540165323691755947638991931001131916461259509004824328522999492347550018648518592495467673581990030469659634130156684141617308179947515028289812413456781818443929226141334968705887885326085813008793984898820408440396065052081229818773441785464979457212359871541281023163234868069364611558769951940604058016819693053030299007776333998294287418268444696520269192735306299102163830684153135858345488847115751859187601544776589651181373137799722021880021714639823101617343358379443741067678586319910869252176762328607742211733730755068797082679439733531184793762708515752780084748724713748021379517244794055010547414567495876679868496860861388288851821477486358092667604652490786713613927226412948486988642204175805517200787672243735100885821879765988146246026359270928237758070669318244165811714559649862990157274412079341790869112113386615455722105036208064997076793402336727239548598376701416140468657714888063740596232518927683164257804191278639944145894934287299530567342378138611803372929937562489359688326272607073293127960166198499205638435610834880756155962162440038582585191341113424333819540073352507103262023114910843193081503130646146096842655813182329001913789742295789952237970495655474249932815172980630197384558045482816412879460512092567329529896354868543965366390352798786793571115084035024860960151496115670267489457961242076785173757411444929456691390374943778217596235072949999811670219532769709432159685049523773177371222648340329331179381557366711034090054425722349461853082271782086683719343664232062110901112519698201403250346813562624526726583998082956363800769773596571635107386338221325365764654018796804936923187861719241701857073218695958441860813650993169416579101543540425363653297280902419593195812011260089809190289258252219872308707198948151228401925230307721278629458744625361717210795251730843247761967988109796066948877417614206223407597673643027211851226374608777835197161874637467997194434195351235601830533845136764570236337004006963750690092931127419040791879449436440677622108979366000715417574792256588623769717794925872235014554485864848664166903974022800206497597015769166879413775061549799026317574548831942587681199418000703844607573838192080738256267896257209624378671721729032942466426629181978647643976549246459637204053222483066173732246611208100639710927987674966116390097288191048829458977541167768091792535386941171502660026037338963707438282769135302687040771337136300547433408490039624365682950136063393440874468664167140364368122528674391435575822845049983918069825827290410997081826120308117985440002917340124755338732940602729131689741148807495068928417570764738549330774164920398422209696055746200985632886593430245476897231394508603039423499753600415903974479636289103444800046626636236908367508660796251533962249884100427994017511716171897776370739546372628881992680056856352111244863814133874341710372114603809481415565289496758590089430084058921334583497724273092433611059677859424358055567303666568966703349152876220417559525575614912237550401245328669505451926654480932957718533235840553159162005137195400952784664015100287148574953210468980101200443711991763348797761908984802200460750032770654510267044782395613237428741263742848175571741825940534883791871536403648313312765082699092284981526372613797247682250472136950969453017424763935947591339933162341277323280113528683279248315324012583268758056712540343122301655872677795069041756747967014043404202685411774213527211270169062455448614341179507007822874054999987523972617907425877183086742472205563901670622488266544280673592260400388211099638485553125718388152299210517500018696387799075294159429468457999367716640784278670033102934838910610343187765808974050190240028526001798020755408546766189273398705229073717260489705032542606959783633292921147764872979067368334813508048492398563907105083939017728038548105078060701671109789920143189690263633060657087204329715383814313524294411548060059960695455583416021065110861672202621042344513942679072714148829755383371563753313606276795987043194649443993615407453253009921677282502236306535155674636566695524657431016407934513540103896189039796245371734245680325145531171998881969491988019361510082768474524037847889587564105956733704618970773387433738401055050521782082222274009664677707429195655637861518073915720612489528144379956187235202506097796403099403220210962570333763146666465983226958503220753090700803631160963468276115168846760923214786291455314058496167887576535073971722258803677628889216530215295036021534865173862649506542680937317232373081091249366671080991374116441457118912424035063629172029759049394818554678254801593636251944903428934970741152285297012003724776214404783402264278017804322567200955077359712374852448778580470526517916803013278287690508342176750082790467211192991332885763993803516004205687529089360840639113413722139273606626849917004539067035917958158748016243202098207417364152899379280515234258615808186925968101037839752866777023713340500601362815712832974120806434452520200721849349007404008420681565598788799672960075935310087368312469719311963065280090962733870912594002548684881841930490708637510415432084491090211653120747979864485685500829562543649781939840872044334034703596920796343273138522160372871101075719877266989177969179287432382786105500882992879478194686498264963930761045031149240385299501161476184851646951237121154169569228372189825143697718254961698066747854554918260839077988844822279861876093408247094010033639870507042108987402927175943198642439042547490750899536808714277364869599092820642364984152900107833198874562511413976795028400664454176021763767850692945782020353669100235200887896860194334226475529260995869367602992349391313094491695568989383449250838015830234971441673853026222044500148166267345702954798683131094925025093802277040545509033116408437440131961951202911169396497342196729681707324836796081117675765893751970647518685452003897821388270300776955737189552496151337092555836794687342436310523230925838662906216660449882446213029270228616750125709539889233327681493617776639601807982802141280773092560802942290130392333206455550673205283399744170924341646275225592494141473721778203362570400568997281810183355918555479781841484403340246883328117497729184708731697652495682326067064395251877385778387125441339080832881233052924226671800773917590238541552352489463589981426116487876506253632441267684118666460182397704639111495462123324235888743574609485999322770552135910583144368458858858886702751326957262770389469176085976900269504931624510797152915920521683769397768016061122051431716775181155704001022826725819805527571126152702170421648406400021877021874543562963380562319419530355922069442085694004469560597119535686177961745573765871022969433096483757975882667226248311385705641662258051342662419089722218604949363740176606470912978802426385434214496636303084352501919278463728637396404049810030233198296191543815510314315047701740943370739129254986816777544984397933557593709418349297991073210246151038229048157417855011872611414130228910886936120379114698553567913737487184309823848410987322547875035763400952613283013137189361676402171132395539586159766211805323784995185097757885997037324892416064405709547098447443474732027177495135802315124691775741453631198553031092632618151443814821819611703398249378334663940436628982943290047281582968521413770659063060030374472647130202332842867416866441124225020894522276411647679851813660735809000851566221880457580779895676186387683457611728014421913984391931157378049029580219835822547027941268160115541571490746119161857708057372667974463070326845635804718090464629015161475177392040583538822533504402621589031970062339351287697317546946433013853125275622162876251248513095450651953186402485775378544247125334089421336842974177731289323357376569050540466787415603897984965984799774421316255866945416695978354483351275058440399024119925860596880829840646100569756010818196550397804173511485198667199127073386282958674734377595583644502008336825638177112093227214091884629919938556004268618104963087679785065061910330743062948767472905697809301694677984782981867546719375103304886431393998320107892511238021960340884457431339167651748987203871704670622000907077029037376330668438229412735516882347159963633211906588897518501111959843473349869768768271432794645970037690136899283555706513797163397193636979156558765566983281056512790330466802777006753048486617211653496767466655663870657209750687383393131724732895320408628282000663660545326885979127732849904901893959422504836125318161385657033778773316713590177107673967461416431775511174927498380264723332304685981404302088713227667644531586159194505989071284999635311508399562488314707752324843416541478724518040967081948614083529640535023589972765757123947680648137870170868234830890132522328862926490098759666898922901359653698652074319685186602448807205323465214460896936343070138080919902432164799603160027443606033302396713808179104517478667809483523512324934935429989464193176885006397032133792228089226897770320456673850569039647743501842590850124643284823049786914458056163174305669810617879692042846051338809975266707338467779031602658299925835567518176175506300810962965867681312646772398280522697606320801566813050034832475901314190962249441682113990947487596143559287878389717574833197123761033260221290724367005850163404510724880979436585491019951865440620488394964506141769979640372679233993054498144244881501769364435694882529566437001921730031852436763513664538745920804391501095292304511843299532422076009915268798883826347473824946694434353161904943721055607060098578713593520309385208144613708405877977291662341436688886143538717826248653950125731763059227127730301353845008332515703589773290422643852487490341476275483283743810824683232872470861847340922744795004140443991516047134125638280608771847674994788585355517063950207640170734057782834135818201104097612530502791038630231672342204192608538153360888471954481326727587812248051844561632054971575971108900842644854915127093635877632587998522793502590999706190172789566236889464339579397186628983639239081490332646175957529978754055038133774184086957688086352955724507168960252552973329657657369295404113016973551427224112079475105156788120784789497517257376432762099858980188167215656578285519807233599558219646659974805499887924254558956631225898024765100105475138354700392051071589722739532151999690540362590773552910842547837075785999107673054237960379941369229513792451910620030318876234294921857098257322979765118258989834533497788939008966152536563200207917914240579766200824016267535271270228062166899861044672135745126891279236435582953036770579871395514872320405226135722227714198324242375773588530483491585354766011007231006990170412127432319737747914630264275126079593025135535993263311873893992968745799098136532507556053929588025785478169615468290769506116177250789849203164680826700404388310853399567125619417691997404161069795083690917862884671249883081521645093305485100742506229655222314141626574618041851045872480328103294168713809140836011297927452478274040570556595886091010798837972671689016117325442552662938036409271466622860299690297185963494727454920149422455644910014352913329383254292713379483519917003846395471338189056616298258368920038807409245620553005680551313826001985480890337696109802489763780385297389077930908883356449120622750183742130393733946147107043361877473409305185390150995637435896025411212776932205481961747890885807519522431213136884302610244786871364468083043010954352051091337259134906059478629517535725322515082563296555719669561779286778666346237974493638423881757036720743830478189678600584531467951491031961223083048746721789280974530716470903658611370380276971816679289825462158064299627799510789790621259339645474487840367759137772938310271662974830395292003946614320238378821710041694580855623277725893105353763153737648060356591258628561566871663804914818586953823385640141771748853846368176029484222316386815886596543686150684507497299247159970129597980402933786669546563910429033329680844495935300795868988139713513821475541432281458292590719353314040651805965880631698282780666010399760100025652962916556855533808492260976638214606136614792869843423160784249910732818899409505240615655445574619458414059429861358532956255916069981945696888822887368828243386010754608956887622241910044778630580133410717136777432443212455256711575931271097559272998249906842295917355421723264940825062060552119141716402512374466461364604447201184173851452594398853744727685121322677980603704288653937082878410723460817800443277250961984171651174917404289812520050469095943976644847332500797275049313504051987133421812322465279737475064255028467306450592090915359275399407166836381106103227359130371692279177478633641659686862629885507867706882176294393455008969764143683681824335433940076119269564035587978284403587537308896890635433693579479802734636882053630126574283592460338528525990179584031320648404559251966647394226709124885778408209852815252130494355644206641749759304652386227701872537739710303508933950076197485176278160816385545816312479155977151387644350195986204633136654302333800374826435604074786541680965787609301594422751109983776638066041766520057050784879404099314693297718135038166541789833001593576939214205426300771763027314346953457653797986383198905016360722020140351061095172128512515715230239131826588319299638612466760310365418710685413206961553636922055396788198055757270250035259864131229621369382850524158133754802113517156955765871458448284829374810395661790769027649418611758235099464986933273086012899822194665141771682916331328395463292676339121074957844688778379497719786657985517407021027370573283800432695322077630809186522094463868701876853191427389405525002575398573418576181562479065934672544283427834822839713710363301150040925624809756602938331975730445825986965946302159978910072126694464237386599457121073886500867147972190834388837549360885735202088847951635650307469217222068892885195350920573121603387087588791141208361717398415201142634363892223419590651340443620688333373221321640721709900948871315942237043445689707103656506532317444999957001687277373265710859608247288050490128677038418114706086385361754880849355303095285022860484907079952003609155006139884324973301568446669812875402064363049723470731593518843592119366360986864873390552177220090941465559675025801663137564955162307366850511975148554119496679576011972430444041984281971038898869549343859467147976315437453893940434212503736971543075370932331219751689485919545684874518088966003139904359986258575262973392560365686884725774121860736462291398095106606358380501232048575667498319394210879624871111023720544398862003702099995778750945716064633909657487480865225492921169666300532621129819380606077966085003536658458074393731157380700888175708975825645272521090874463922006078120910051924895581141418748832649883218088790820093913770901042528678950583890236446581208514082717592476921989726951203744943923333727363172709105545233304812497351431473496019328749926502731387243060985207789609355010003295874616480447766721097985979071158073912098706609365054349531499871659259080338480029243014119619704262853422476376261293336875697191790185948665519189941407100050819081977665938401004984354062743685985231026712900500097102679444205614420571047407288405470757761881602744553478505887838918678202408360544269690220671972520620915073575018545551204986720423491516311428127222465437103421099977653903812851581444076987868397822932757508342866032073886071687211158931997933519166136671266626376937660473927035551544486979985888673826768801003064684170958277480913426409395027981806578385378035934382756745858800040422968610662357173498259817663341455762860215772066797049247978636730143005539390578940924661746537989643942681772298517772091781384946999214931417821717919597733515961785333159824656940263197078876858472068520238902591124898665685123331193273620565244315970684338473100171543564717876677614190208272974803025941668352100396710202203722603262140342357850022130697540941213977647204287940957299738354140805406377261061008103294473495183847568147146312126435627615861184418732347202342687914451404581599130851912909529768074607115031713588450720960429631946652240592851290158846823359962498284680517489733932550953699502794329435385995889744846988397249575636173196446281345610136843082423198983634156280970026475487793584347319210899260743821694915642037801907746211186166389828683391699242515504431968414964852043841931328000032727904549815483958724304524333939518833059451571339017690957178482057320553099411104703025820280747026687255921542197015884389243018213256810548195695642832316894647155622250972033916213617827298207941962354862825950947065698588735563127308086774099188372391924398029419944422662834345236937257226148865501055190528131270048799580442163322932017525322900769190182935500361737128997315362491300395322067884317698455505231938529593487311982964599484984172834799457443792906320574723827619967150986881178968832003442003553247715249886722181344017062646529353951080620564998109275217624159232113458348364804526178319324017984284688112194060517284748311004788236633513181186923547596360604034007252204217759118886286845057867676494798418809929262019455562789113990323219578819142401756078448467023696199496472614517902819134550719982464681636286590794869856878969140972678878177711378242638087127085031465593088098006948668410438736213656067876168452333105728561021746255545577511796668235120478005615393888152843034698175958017740172661413981573702206793567648168304415557906228713850341058346762023183953998625062682220021937476829046656058484804880189071368246686063973458103308904431463788957301752186354628989895903309182350102311727110232596857849725229067689640656614036250241104306334817141421897971259586839903404848737264034349341850353010518912452967222295245011086820061688848023422172003835793484056215708323915342357931397174082547345887408652799302588249330554461152346101659751991254057986284558790305489451753361960538541247983847252741241807707986932819481377464676880976160581039378168020134730206337850077637126040015502573042563805723559665496879526708283924953257541826669404273547165552643942475749271583989739567349868300797592693528916230952794515244544685376938487282266895949837178287952641772895456021088852497738298960478098480183368786797712998591897054314174573461730274474080885614427437964168157505152109081289503438438352498849834925214115480949077932212415175638880613698104377615327643293209630931758014481641056642034597298298570043102177470267383007442163890809514703877823018526646261156765527301518263220792025385763631450600947010531737696249304978837310938243447781926140931367484043580130245545259745133271177675717748937536663788146328755738404276489597674076251897116575245625247206249386824558831976084984976568442227811998861548795590815086173167067610586709770111041587189868018613609015063873184446223017735167447713005296741653870818889712668397748095315384753103502264264828331307576402297527112377968772099817297584538798405878273513054259927259473104758405961760789979352795103002510888932912344518958245866503651636578424761903303182530639485399671211386311459597339586751675667049107131057352549525830380441474700637598535644768138646279615284441054030366731031170198538967196649808044836456321667613644337108850802086251453272095318983775201995551113710444614121374435553407819158104890839835617963717715983805436639431754466047626105503289558743429024260577394320604061038786204558401626815142859362056896250124471285598143712930838994565803379753517574744958155187037458567448761654867978190492486492937519042318261140454649721516153758826420437347610224265614297225016708155461494300867352605073595073247842705473686344212571942477346673157100409238678572619391860918070399598553850177074845840001099396921484105705777453790320219809832485327019450959662373282279924690032188980026665034954682668130325129703385050155930021314230516678290192329778736878996265628258971711241677234900345763909687531624806900960889879392954464077018605415414911264266045342186056567720023144521332793171591539749946791460005991306716819775880358477027847469186772353375741373137919298614632985898128380439744838773345315761338246121970963148777472793140601587117566858050557934783940196762783547418908973782596614202710759936338848125155923388593431916300012146745319806831141554570437181826112425457979576588684672331795116751464372759367223739912573102871181589667538826867755610533266523804804368042401139269600960403748189789906413306713024553608784615292493270320749498615165847421053959545755887503177082528476118575691882000228356506029757938097339131245526867515740778940594786666799093701969739819282544812694203314046288693538119827152290898910586458320669560690225572233606164943218316169944994340920269106290713151385414523585469128253991981361031913135242133456720043004444586694192724137097752486056278830906872825257621883451936728393610135994323610755965518872819361490090193937475723189546968997550282268444949115457650107114726125612793967908133471310163645921881894178682895719543878405397687393484296548821737269523017618969871294600493008404097412803969606594657467702595266802680516448417704184894484907035231109217286126987942803604216980156253717531719955885911599815290828761505000248862646118299630017266312700963254029943850290839182068115852933330341675879598232365613417900023022363291863609193712896716797409886738253376908142648579765450152061134193315971575636031109797450498187060205995385578100049276146428298319686656788669973497728615482896504280473943388623377391116045222405222721464908219910036778993063608032849708880506289833346985045529022437703973153458829444897957600341683850300774332982730602108126377774602224687412813871633276862808823549135438244845922363242802701426062227090969483633158957035229366561679720121770065769732094482788531197124448020079732057014810213755649891587950900205632250306713131082198625725054068392720450471137069949393254046630806126784252412330000316713669909910999470918198717478223858530832304105136854121963554123795514740111352116339700819256233747998722988037080007762780030292121901607611463862687723285976135690223084489910013160252234245007939392265609411474143803223308939100037418447052200244841502792889377981120004428869323247005383709842939962819548018590167033522682201703796310380540378503516194938609370987279385218916832036569856058907278127931277708872678680853189228337206790279857476457573319973074174057662861483034511165851266246653392305353996288974233624626100510842597752532560297419868323272706071377181758056034763363323220061855797508940601169706905321791626799931088359682807946843370191855755089907137045761384496031424526439553503158013550191771896471084028839122112861251042333071431957047485447860599900358305185051538355530389019888321156498927067503459951228908910647292516812881675929691873215669389421863303928134866451761475203125920085572252443599540225674850238628898803025569270338698319666169331268213956043734618428925568856009202301080471679650824527388860812690605501813123506039333266821959865063350510297377646761421935042081408383782869745685076482406425301115466208669800206253809072884177104479350484424311519015375203018136079802024167895066408405235682917326857452528718447676470387666166892748250192176365670007782894577231162802554625276205262692546407786150951527645644439996729177993275467214087622304463283706831111031968947454180878698731265638232768496191843591153048401811720827905879062118231302148165757449794445841198662561309974865570729349239657914806272429088812753280277533067473972198607348049659777190496107460500920778966526030771058211211047294422533150858931213647551857177037303945183445083141273981061884347094055347856097946273821601820723549377426498853544826578218532301785463844611714909937894255321612661751377939242871748468598396386602160819026376068908231146281446306951837054810642873119156411862505916228807165809031012043094306409045265219395465551680840800362093028462355718632600237208499297996696470507278603424661691761157712722612592146650410272882333236402200492238915154586694189354515876877614964837688691997779252514899619340476654870111143549508217148147171522203965347832109565533647228397910020968271140735113191604087958123977596293619468056789688150046884496438633058220027729416023739975389129812536328167817689821692529281077876781070083608646870614686930002783967894965782261687158372475626689078619409413031813973138445940235006749571323490495669212134985142723580776370551564957870760479213853395108523298154460667465945211074984530659262302803978560569039004398820508694788131686813240329912072638473073529350532936489715310685138209322935614612082840453767886273195104725344951664190415889184895119631495412789743774129162225066363776870955016583772168401194098394525207906719420150990165972880637032396429973659664302852038263190756053362568469249175828399412871276479496073258786842093002592820604983396169571115393557222670690733220778070168619325217014802180157920706228844197949457116074132983030036893180021114688849621014233862276138201569748554956788202739891120676192023873291695967178340262177681601729942088764042477820538755278021011143127935991713854354136339220090922020352198923445242346331210665640562336258687018080085916396875437884333895451578933367127582384415440295522031909837958994389615047130680618225073875421239205297496130170870596433252260715785724395455174913738215533143154654876581261254038801050841689346948598595111245245972183194932955582995639932243102996629957590955846964219285920047495821262135025015607316911854330966402127186797980982109277150207144539039245193942165693982400869254380330100571963140020403261424082337432688668646992215118343918275432359185718374410264731030216968524401172338140559538384306733798173413435761118037286046586301133996947413185857791561872117952947297793444156478136303769557756221855861690221343205140201332030648468663706100457010217908377985611374792529159053351371401153137308382716204200041521808564793782619532105909447294404456513376554582040888807858444187707424987194425541907645797467454825898647291403366623111033963762086174388588786562352371603141126785642565840184831966967133715480124859173407550570785076849654985293513758937386480585268992915208033204663114809380456500357963024170201549694570313972226441791449678152664283099641117737706664145470869585048763731947804835813564603080956156232388386749969126865830443230743886115680450299686954626557012387419608314195806328060817630178690622620000503101399724828384832391046817680433569468510282004839575397289643650148953161354394736945440797115714726203825369440365180376203577998510006912740364596705288567215426578875399445606569629338712092702578212031296003145597320365446504247389230695340408985315736578221676115400045717451519403086938098439138410609242540607283713192084696285273231561842255191179879708956485751340321456823538953095456910189187070250156906723137650184781828244715440196889460597172966542770272113657851079939446753968451508243047871596355380207748771766111724837705373117003782767543766235542830867236434604417206173162724456421879656017206558830557032874725955710067804725181359094005742490161837739069596557052687965250390060091312347649115875612665073979939706017224795107987796081619480469141779691524507667815359696958676797879880597643509273189614590380977167747085849002888908214766150657342633456197537748258703648945290800102754705016394586361298166365163342116754722140996931474219419557443193806732137176753992149372099696716069318189925351280252937325666793626990752016307250319882357455024229448530937840487261735901661932718686836495110194191579295852683403236953962650804557248803388004627034633491031808910678209179282141269898712813447611518297658422774377985754890990153848339694474414277184967772322760863701212268513569120483714565422878729416306957867095139581997714853932264437403101344423032430288396631156509032575857061003466066066153215346360396041633372406800033693908184728252134699060556364784771219432073034716760565534546106436543820223637689183385124907292907936409371002410437548226991832284792428551156368785986868900150060147448304413134163886635486771922762012346538995024656002107780501951036509416580757431185281816567730385381939963225546450072482018576429887177107171122638512870920960680501011583315424178547326403642710092823315824891961084249801084827184672613923743659242168999880828705052931893956512670058681806694655873309807942571039706037422252103623715898016463732995639682233339252731490513143131134603948679665000497425945845064614332171969277419539850915931413429435162024394868631439054509570597226445681490878793559653121253757338243609923563055942894585108282359302895931503048347660403811135936800664608147362834724742269931435299341499945583636498569533338902619306959719212815970807547576516112123287995452740719160689716773493932741436361894846285680797608551600334525182783764354509084044307653661308025409462020610933781061313660735274431007932288582888765378151079164848376794593159182061774896259596832273283322260265059544163656552103997089461620607668555067020193500364684362462573161671628962057534289063688633001794855391667521452978590211207611694470340725629584442966493202844962781707214535129792695690023720112856478746071565960764843813433073737186331550353958766837006935310338924664535123799537741060921887921593179588776580023220423552856144148034282405704384969588863706755365514942773565711603312057358797908202684258919500695878374561691017382666621083668133396206365634637487590730473479192632030399073329213670099277197135667468525541219145516412146238804890749455193343815882116134430535862527289139436215152119767509520204533004664472245590643696946856491426990029344926196802313467785218289546506160227748064643854591794996422513468617985768181087472212646351702601966883359326703732398532976821795151571792562732083091078500639674333468515729814981965100004478759398254120815215371161692745379637669377664556409965745071943788880615979613625149862868225399367254878894530698437555811231970705053174143019369488915225108368709553494177844006325228985903043742993337732415360874270297012218877961529636503958568264814578676479730293922016383010589915523393301395587896386193628574503870255462468869607945402116483537939552549190502327041601604023715900293677038720032770724999187542522419009273487312878528268699915914138044490687766486265748894091028629675495965268169318183739792063267681536599369293383274036901478347551758346864128218995151748581902565690641726169510802391484073005054877912567768400719757585326380784033113127623172670917008921940666694735123537009164779556125841568118744167611192744602990390173168485973963435293467998761445989541342344983601323141633672543687801842444530053428691770350375576754697512014754304580273006331849615255691216186893817787561964918708534821591762395237563479131418705134071021462279094541776043156660096939993786009534080873710361771802039477073580384298504966521992822563353341791510282698086876787614086968240248568667888640955986439547680975509215138187948863392931643655859258052160586042999786638381533162354500620558371555358683042659273946426143035355011675738811301521996083002647835630968567957021400374496167890201538931805041584091011598582087733569551757430269453995347382733080518197714935963176622779028736037952260973314600651525834536086341711289118446392422968249732395881602217830633634797641719484104999380742160145703877416841431439516783489231636837639465546539077137780373390028668945297398726338889267178579288353014069585361614269676573177169893446781820298075960561175489706913448691310908307846769625807111304824771997456343355859007732134238985987042286713145147915875537573600993401315790451635358366296087346693681927904943296076506392491250729877474917435961729464479336167328055186555694992467898693407539978735452768069092021332163927497443997947440801454551413330128478356826372194795340567368843772046687579698520626684833982942422314405351426316830334287497200617566656153607934663772484179339481270918373858505981401871622540097161213776595249365241225018915295379964106081841597920529496155552283237602725725904872021281450253723981843159689326123616708376010723553140558856601662570633251285677285538987969875445190276500069277935954564464090144086003488649340369463296478924315230175116296080657392755869103803795372261819113183429644570218809474189635894826119661860550493653495397901661707589641790793580528067494997607414773555225890484367479701217003853135497348488929156898391016010184816340977311441746788726750557198697111077281706808612809518279013662045317346582195492655276377720746291663541628409908571326654724584644966835398069625950937783658880477528666232396795263463378537867281241810658047716240137511442871167455624758799223307099814667420636555235436727905848554499234938486379614257109612617719022602261208042139517841731644279665638603140377152924870874365501392790625573398557360218594244556614979034002335356111720365011999750474369641904560707363727206953928079522100199200411714672624731147914049063624713932915231330385158140706517012522109637121611799218262403321034805274926912945063410514390102720803895604202915417772584815252980550258109046771181535477579571825592262165839815735356106914805280269259878037777186995995055037822621336961694001866487655247346940027551953839500896673521752914663672332929963504311819348273746398748028896432218373461878770476433217275034336493075927033691106935131524628226845074792480908438244055210783066568866631742578296959877825406062147057293676525067719394530173478548935844475529632013600911920742949381557602475596541332123703228206807316670311495838626238713858365359107943757342594036544346171844327072121197451840008208392773365217486220879821337547894195844658971398019347532296587802369543883220318649332103535136437026449909343998379575608924918773433175288928618478615590556423324593935007945930265119252852998280963584346953312529444843204483165755422407637671299142269820859691283882581125324461678853706485445776847084657597639546902755161788236199999424760232683549021308135658554414929404498807500305752200304470291134423867593712353486765560947424950205515035284108277986126901040100521419812939349220480809189547117995404505893953626968479686584355608554849406771699558820641923232040953480149527828868673814156533952803804659896707093088833488215531851975319984058520351079210441213371329287380358081019431615423906309711800848509966383507711533412152014264401893600188673337759575719433804770057518716130625703341043714788801071752941403703399363824384087190320969924369416327817802147791959945098730684433216117955182406415008026730327984077340912236165848751554416759535255287435570326525350076610300993904480468281705884552748184699471731334809493945012666713079934433978171509375491884083871641920884515631935211619420957600060887580415131212608489735456727848333720545016045457818490381972259960959530882220139152487113900868013432067958527890855269362193381488960624983207569097499841776197831367585230833473383053764448294250606225242815096231335463131601461847787498538517941997303281936351718957833596916949988442916310837419701457185085836924724967003253108074475494183719067218811552294568645436396400866955122905488273809791852621412924644163698754165144305081707826255356423623694788058663235752501784866915167345736764522816611865291838321010587421885300974034274888513238610991986771057004419832391595619953775784714023426142515308077054243670446186597735237425215674113862452729617382414928116225135144708908769795858366138146746894250546071312222757200804016484248850211943295578446724010438261786623286683083233110958352527092104570433051939981659763153712450456119766462573693588280322725069962131530779593760704063016837787859188756926135547433033375707852633420093969412800181692370816114293594328299419949911737922042448597122285732909913726198049369223426606455564938672339365982184997597008762124089494943896506119137249414913564768338586354545568688091047645427140473070265204229964577263468653998171813243611207280809575164578925152328850668575982133892094107591928461488027721121049154463042084213308119792898086353897259841603853927216428644746111434583364286569710673529232039429785105553824443528820225969012463540220505890195904549464322291708476214705377813894961867422119782977586938238308653881598433936481814821243267148826376843140661401249795006580524514231118623142560171133280165826501069458231830828016558838676474040559552493835678930932410787597481557879147854294232408294235470353153880320966614296706769481516309371785769954360435847578151246709374823868478837575165211250436437032388166870842857965561509006201052235974319834402285321258205335409868199404526717230045540288961103660164203198937667890888429770872031008956154805608083150762466169049467557011840503627881695695010607781559353450421907587014353447817179816062254099224076278452210530913684130177285883472865782162634461491971349947806295994061312262048116579088029912729439810059154077216002044211838626865665892647964878531347345602023136258919989380024251353004657418466231460129001553751579073957271947281616194548964817197378716976604407539139749610072474985912607365301729611850209860673045224240950866965202462102961836062587324374090391767464399904797121128389603422208711214781910530561810948736524818031213463214551434931089032251098128566498714552109761548406075461770944139935990575298546305962529009472035368779211375737638830239475707367141815345766012676585414986142977949115512105786147779868617951101593785963004784934596092841143103802457917616555477008470977094089904941371888194982697256536134995763820548952204978042244128035771034108957044737128779422146412601507952188331053476295584925382974019216142040184036287836456833839844335755474307160089675921773103744186506943162890047752344512313150567345093790242011892935686953622264260414650412182391462948844219984581532429704871093154500217088835699894317695896665488269579507956031951403213345862054183781004206608729002324238440820282731236659948037996262708764090270883294936885555474575995024956653877105585461692508580151562493199528965399601339396736562089988192306137946145224793319139370057383102539547503572642941669625167348908023976938066684219831498139436972667723236581898453024780548808283273315557529511107023086952034106820430675661859880859102213584614092762208280340869434761859193571311574929756339213757650170586417376431703643571301565606690120458243679605426534976279333920039936064061605062924022728265332203466435529639538853142908326081566052877243569876067430502371134414475059294590753251279533370699604331718865439563485633083036032537238026773699464466758233358589312521846239637707487693650957032352920256691733604588039358492658870580163657174607963146395946990918302678419941371461731341564008371144681556870692269912180562657985869121068795089766219449780696836539339332864532062316463719157836848735346591593477910221344966333364065095353160660792503623468794757069261617731655834520998459076806467865861392478579206383027246936284360469081530987452301754256861689446292487768039645352155382546641421735404073322890535451881457686061338476655487422962222992664890655771806871540095112462611913777387392702507101767698904825683883797619312053488676926384652710817132820635924469007207682971517551605683175727981190091862035062124768661312021994724525532616271905228040757958134126642873510845503387688343555497651012640874867251651509270418173789481811445826317912661745890789268665488430740101135086237661822148168115102479718136408684575325270641988551082286849167699505996516892050162657030466281779523761347129664410833091499883276181154309218675522504234897294749055539938758573281933808606142387339907486171306006106266909458939613744512354928183477175838268483306954279088921337329025186452334004193146786385713769764328877938310926356330875983143739582168115945336551088550265270950596596143300909770133107861865583850751882158120228664105308773250110482307016764823924803488610839875203698438102542206578333069988623353540028280760712843015847205112662861300646307670033113737720460509861174345403683642280054130579550204941899382229496420456607371427955541010114741066614267985874637693488074818710154865149573271127515075610510605055259516710474622315767442181018665140047202885219491234710705942523443711728029069795960371388392432293188675492720710794919139197391812926619398991284219918958409263261984981554480942122751086503510665570086420816355507649650448331679905333596202467887728011951346223855541839908955734808616039698000025013360148720799155916138060174518458690498476112107369464980447024187115864105007834450583713854246625296618825794698464323346279040533739008886596914293581995323161010408359375964224812829381047990520099680438507584504766778526777840982700773391852419326785692976327423747450422257704159989289754141500391791270354643783817355459239518474593340522940081335537037274742494157732645858067552545201845368479608580749031068826625557765922837802541003989879064742119073369563633578344377030767501078708354657753377491143303497711900984540137460755275217660864896833765537069671382559459909914322105723790659492868676497261702837217894843928116283818273932184837464287826598992633191756952938336734328102562964836614089226291702935479331346916748205877012236636564721719323166528445281700015875721259941342308619841178737769232611999578400972700445878198590900865913147360442735641798418586701555357025205511986558959639673832614017450784662898939654713772956382387474568751470717631740166685545991320457892657153626974970824668837533137550883751364627598610606270388596658180650353173220160128924618044775006427936721827658588632357436590142978395722486207160379215609560320404325568067196368272618732439006539667263357216871243616792237650667469358736295662458403139515610937014408877885635863196580419754549093057245603169382517581727661819903821940623559052581292030213379192038268535675262061285180857763083501309173200458403307320724161071221086308149316439837329586336142650652369174250111302611701483782477266022583245499011576192059131546634374981821669904027602116552289092912599526534050422947731224301790092787580846713885010166049742061470174115486856228446453552814667643272677528518414499763090442987643419286335206719152638913973815186229481348726737303846328881611461356479387242080711155125451658185050674363544099411036379669306914176156877608982388342274810481835427927361858473129883375198167464316764169211911906021333999443983721883085063031597899453951644603969307860361479126925084217704237709093207188915320956465922247555391291044231465149462961024478242268993799726063876399344609419149819177755413717242010939861916923406617665831696259091722983989872377813895740482544381822666107184469354961595005625335197246540020300593559047865140369591458587889149450268446949553003157804330833587987478052522017296830653000845171425863969584809201561176261688153198606355034845322305604132180070271016146776201695566510877742899817731704481144837197089460323137459569884504937123199564220593044440359989271751048248079717850848603775954100482338968461084446592467600753779378129657001255486803471330171389651972595665202515423104897911050280033104041347358519186249446299659469845274474026943681103541796431855661661501095897268059384968267411225904555055361555209953180866746913760879399427884499648532364156468578785145538535238078543804754847225720730858826957553928200666569166552318222537563002257705868348299605351719995881864097076566351006780317201268804712867988192315921541383919173567820852576203534063208123532699257163416984196219670255634089697111060159765537149952338705728678130026015742762722838010463299436475161079829258246178236769063486124404571992660924094745418491425090801333689690772194483540888430688594850940557291576857619350827778221910807764549108383039308167980677109437627014637568171601562542391531730689987261099502179674913770609847495223254769323968111086758987066515921186198501521952001058939483219305324756162489083720623369437530964696204638959031995948760406695060953092631783988810537527601527040464296175890680085477025103514306329399664873500791056104286264413715524847006336422806817863976999362222714197281718929879955103976307615741322376942680592399838351395337000297664506656664230270064647596551449011287405938755700177112655597303625853924146183027771221887150058090224786825613521729606529150007762296639029625078879100012995454650516418052843672633894435634809987733781328064404754657950430149115447948110922321857572179105368652298749898093970853865884360691098199584077624828930318852021788016492692101480061856569075687642219589360463215072109640819895152661239531627009411723458129830007240560583654864443857326846332313151872581171206390168879699517260491441054506597815497913883783171842448413732217519428482819546757028099522332968270098525575349111105526919568653382738669450481500260675950876239419529583505736842162896579719537683677913706830271527412921245895522479364880619113003520959649475617495592061718755284204419854607279352359333951361107580389524075323580712010339300733875847358027996486917184778094355810775120978640285653895650520344818178652890080574605496144244671452446943313355003690843233195781926901892289716643695506950704235291985618771621243798356341548368988021433177278999834902023077256934364115418471028016981838289518447245609077267854891948100105981016677212845585209756768460565352887225915469710429022305165383155041432136432359740556395691620454428552519678687213521227924598973281252408674382820985741687769069351968452576529922208165914818171875803096670209178655510628160299764077485400851651676047807362546439301013652060916708158991315781728735376992824505634701770779379570702149823664068817002853810024950243847184842617997593381086313237170836928039397510335515116179797363398224238700194885084021613254707006008545030146533318448464952851311429226960680243750037505267681725926719351023985188479930381049774373865212904106219008292384249304870428526718198169066743324476454876364371056694006685402511338175701749301980137577081917074465405598557748629071116426909699861891349006081352811349945107316206929239463135390726117426754043599297974160654797945577383607922826025985218868795593258831820351563313896403632389829525248481896412392916393573485699031548120028771683920249553486339257815978402332583396623385346960459339093009801239208243862158544951453816911508372776944365378924774803755174582804690365233988867971205110620369997504760105909377524722134902853291423546332003145125819753465194459568645680085129700663065633398688336747880621192924528346120681294616420113493735410491178156136278550656394991029285028394124675715974642862096853743647036870334353913449590299007563078271420764144737011599278602127191575606274869101441246666050631067337049274009624085861877969124341659155234862494571137353302554576762317676134002644653931476746398933718998058412434305996873470751213933067147553049197265639744192193198924854124356486314237335608845716140635704798780465364399888008200699587154159018142867926638210696154363325901612041481903029047180434666219671169469558944046366553230922352389541737056850155202618658981620283920732148754579944264727643857255077987892227483147867326022665700534432327255256058339477832546981885313810818016448194768121040204758277591900617519850089905240017373456711823895519609656736069685284527116211925246152842559911464438814563704919585735518016121813636773838614703605182939102170387949871527167461281589947782210756913544346029163906593469022671493095699717282682409948574346181691728387403352573985103836799359391994638259051316667747672090536363013248273690308762330873500290806615867201198346530066506855589150702670617335091552247244349961317650105579112168920264976497169068007168765357905582135374874697308341924458690642077668637224445312369077544420392927357442589694839632957820695713063966962949953480307943389387700250188883150283582630776348990330420521161354867365983318799434536099462443276163037094659402304902661793678930304432602839016272014333405610896060538133895468355743975378677494529616860220779858014168056887445309451556890394927819842274811635035682953590570666534655464341569055739962120485002073274837953761303325409849927932861351982449133333999552010976860784888923421235223330417544606234705255873516318152974477282701364581332274695875571287672572592301936453795154846040349979153895690268262924164738614782273110385858135278099512933129108929652767150258482189181671685349140378296020026409982639463205012302261609989643242336135806110841486750706961186603119069092373713136338270752878120646102133588357485879955916587995443390262697085298930665632131859283042816321545371357706799679541352329441585624245351314784185415671374297223638599073622479308167514295972183070358173866267795177642141551085065748877201323251436901433790375018721870162026471883896763147709350502000780646036252535779416557406427967372053022614840711557160434649544533173302314946859088725942827349756743605555235176854415136530283534557729262054239806803282664035020645939080988862208839327665823895836916096494878182485238314434098584138822993884327162119296985984557534907965571636556729174011178909639344725426862404560711893148606536397031948691503378841612894820551571670477091669468750", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n695585", "expectedOutput": "588839341143230728047719775393853504920953844721739029688201512719874135468507962786366552662036725982739028812646466396826888433937398448032734626393143275801005976747936989440475526212305451807655515644265017242144519429337287196899094467816836091414517058319050201234384670944308098139237558819028473073552932082546569370769654430671998958174771538696830565454032288324384063314699695389402832458042776549672408798061762156226945298786254985165126373393710600758754387912094704454708975102511475981611380818313852336159572363967372517509154490654057291205355852436176904270088906124891802313108937739756776123945510320061461766463163211767819013859416404953546123753891199668514215693774679068639429888240223894226562740838999816134182102267519669503945809624191740826484829673229801024412909748694439644615893236554707338767690569371560767894599000350734800348383282209770125330346939132044884954397804189834896636559492561798278348170146049104001401417711783492725465458507331203958973476120905137645153470259749102464135072099315953016756728265314084596419019295585317786530950676217023274277442912544536239046866564053857590221979132863555817039401998278835495829180715023152613031484472158994322648004309072733139747372878654679524655924890469929476468795409376559680451352624992670021225234598269161195563347573088202813804787594506491548198937915311484002358711353305988001992255816421444888147672419503613849595834349734681427021824984594897097972952179894360768889756803003697973236122161675547953039153931618731986787015496514929402135918530117542706624354132668810606792502185576121620352168416470656423148195768442316681163209116354854098376729309073238218407284286910790625362395367138087053179035255644782334758087935165058047591395748507903445619854209618665784333701963081788474668686598812179014518653891774287110225319299715223019383380019479920957176069628842968102699359708917758263863815534539383104405866780360297449980009886737208978306816820751059354356617036669284173111517178761896269142822530039679937413690388438171244969171552128007983978712152776541240583935396515016474677662725791547972381075972902713656494171935795559191947965388499551000116720478058666298232075007110554865896982157507296733998078314628815990124470596445516406176077279670492183773873357294166493386584044805596059146859076540793856131527859924143426074364861030345874510950818385400688016798279039181220530498794952349100860941000315925167914933675657331498486609085018290498704633036633099224586480167013690500663715273685119040648028694893153817810600742586824522705742147611859040797790306006668501961321717584716519547801316115917031290808366045999689197222214209231803634898062955430472940086914206824606277189451532152454055638564497478105590732244775042493474009929398629169897739763493401255068561382979891004655836437416789819871228920749088691279203876053039586365057305011456958326541058021025797752412080270201225692535226808206776825241151235463607220505777102895872116952142198933272315724576845261379611699910176028646774397359142504154011914389137103800489841188762708367269896140581191473391738037617748775916046559962366172622135793019176409429658489676704853219061687156554527190620643962584136498467089727586275156796827902234678200673307144294132571854769742834059356076549032186865869771892567781188396610413708751422334414528403242820495328310397475814351303211774873260121876226952293588895496885759243329429075765696150498612261433630978554081817582712709936535831458951681412712705874318351213143985491991628302806255103003315562344261996526359935813753983445255166868969664219358743289637115916533832189325966504753550619296449042034948966165582145517559927594446109368843871682235494940439888287280909858308451156389723004008343766680481335141005101215829168075722601570908631344731274956695921351759858273636013076395704213705689858500642812532788974233070920118983206234079493341913677585581390465617839146491935939011142718788317130308052734028664396349251404005901559089579198923353057744936986623309596696114125111998000418243421779117157703150446970634328348503585549535671669777859328812870253017147704308899493837527163823977855717509211530187403654311529448893543578105428648980797372395110689450322309448993412168068155425258503470003268842512330878994876692618514022260898776849809797211407989320138477258257828491396439697682987382111581887759688440608065940564042133558679330092608217381198066371676804894396313207843885867818719170814809303064512113553784672013168828952526256079872019400972913726050436558088218612340938625137440311435551901382809614853122082322593899331796778296957935871743500400316498015213597692061186319554536580140367970952438613995032060470806442156184436639222987580644830960120306921702033695207312648877261351858737639306045302462786261521104071137170542972474360118789577548477733095796506766466867452669860952446262028252161223543902424877619609545850743971381608668547789484581537421933719560549092993147764018169803987506069915150622314431949689477373224698698124999669906045430665364321800467388798174063139506205685532080663120498862385543240915068742990527245246848910940532563760806952089367799116152539312658326018140360242761437115947654850797670314052123895497097773256108387712016331175499807826239294370149086775888137111633263774241513787068491640536642113442866777235216455470436723669674188222099768911742793474484203494588436800986808822839647973756408628497277493374501168097654094391869405527426852793526757325292659661877580229850308331861038660764530024285136404306713801444424807025577928913937187067943626446667307437016899327510149152279497699481249389974315583556872948261429416723091913521352756935526840795784166631910694694003757565053562893654650416173931971649023559369572443048552187496366048009106407148629497198920316948231302423558308119763593384643864148717511863102891129843317757649574417307895323296170245467894072396840221196175798273901948039995910755315143365452116954749430458147717872789333578406300764334811782353670244485406242816325712078015465257846237212899651275760312508249291232885757410200128584279031099467734292874452552344057632064526844025249816203234725332482163261118883553253244972929377894728845589691665493672239375695428447355289300161331901262988825344069659362456083605674430267929316902183281628193951418738723023101682264134944685090635700646101109637248059241934595581003268609225647563039043282754480405316312231479528159443650110870205783271721575456439317530209341606074486709004751710257963207906229708783494949069294791089234600473126229273982992697593399713787859692653228856177992199505243414569552855367082664339637798920738305451589806477050542696093172699327617517275843141966881325486560731353586420548567644483632987527597022016573926368066214698934932219256449131079703178582823445630463777687284494687730036444286147107035981150200565549230849915066465088922674399461651305379332681558680470343451292048358582887523992072203541982175554475890850733536458459699912769712211739180813142075346451456470703465523774448199697744315952899963282860719282611199535226790972950525037586850331646352730461076127881706190719299126780647153993906665136270623623265375755415147328344814327239954033874679986270406992433774071661613678334524029136838157309898734582433243774796800926272588859080465859683040789169122594785240086878079055574734295213528308417139671706763637551650922620868290823357068842681384840150005735105696242437908159034797139627947129981181016023376327286598306442874052837894675185988065713396041206797412482928278696043947412470078417649554131785296050930746290825849064552807049335684035236840376219443223180720161462404727269377339542059288718587915586146539076463233187101954521446262745660441663682552158567052472620326351922918525123071702125299239757136660276004079611631512210650317054729355489178932915171587830371057975409131531857747542415087345329837745073488670816207150012883057619742567373385681180277313806843461453231888117750380445813081859310742216809353398563245911662988368081842504238975812037853345337767350237658345329120122380432977584079174972767724425709244771043896496443582669810732968073453532345494798255249827454068689160453495092876642912783689455129089354598956996125545062770510674614492943329948153705491494085610680504863740503348663861107797142578870752340102435435907547330121340020201122862805516576775018803715744095295992491269117487271101997070025462866504519729745337960835084003901821172129697833425330176473289162487282692949040283184170751230693170222653011564481449292378639995564283351314778251001441824900094130813424415821118146153868221769855313007139172304537459491603739997118250163905146651747470183354078136340054236598410869556525871595054306010748934985737764435967682636688040460282730697362515974097659892383256291856549874372465179202244897763611424060506860817332053462952916497667519105395473469987827311165994980407494092642949227781346302004202195752081580158924015931331604666720485594535951099951655689958386051859187674893969672373880086073496760787513930017786292951256872407993115454059777556913821774713465688638497825942961511332101945097105586921482532063126964511597000066607250728684380485128861627238248009142861219733671624630697728671672109118013796056799687670095794889993594394911132898063737331532292847397424352601109505232502272614673454062217961022248865355751087473553633716749240628148734686548679773137958676223636119439327175681421434633278025332265819893502522582642814644058547318036849959007458673919032336005669900583598251081261980981904649337299759248414289157634250237676504338566046203719869592865082216395946188816660509402859931871095098621956545939031729191584691687607251971580073703082115713111352236658623529237550263587920005798045960083884237236891959746996071476029880751905679736265023679063892131096586537714346410092340897596359206389492540939100526563707942196962565587153040898741557479584800962961244707180762289292486165802055510063550801097297306874772418324668551512364994795094237060672409464375102565112613923647662511507095574109383771032778739096886857571984365415900323385195870038667172018060880860575535234275975045734410400798721577355201311537585611109836716911583850527888022510464973085161999567969738721817356610089805992061875084126314583006009666274821699198748519159299298901208750139135279942844626646378751175312737738255322198806254839419387591555525209715494044708396136666652429887206242860921609858360189458650457391375544449349568783527289929732102382042679755986785066583418056227612139746476956783281874983141257990618466461591484359882993827024481158127762281066567197875688145408412106199065350715084002629669780065534521733203918396570109101152762834188438711407956090771917872542111764731289959826976607974221988002945975264787017216680728357146803695001748139014316637458513193184068972367353519936783056899046298046844961802972411916461255738722063627132165031393387375059870699974017141978679077586756694953048330892744863724842558537869497925320580157334358082312165696271470554354414009711591671546415323420213243361784048673315322611141674408159528113220094968314923857748895193260363419675993217367658531635009668310632205830000201884300550644367698720523438897130287036370595142918805001799353272513496452710174838583744857953163815701363011422725574853953023617084041461812730464329771614715360381259620024059733012565829417529784021712995756064622932238741008060211367090703804957179333078421379812800815493851646270171438122052366666230613009103789198373710531514224399397582498401705039617055284040664938731825188633950312227313175041471402193266289385847903195181071965037395021309366210706829219004679945040027204259276239393767139654620675238477694129911554210014609035110090134544218902548298440358419852436441460710733102772608826454292668940500946286477240295792607583984545929316718789511705201409846458519569132861028803310288761654660890279208273611909776349673656678154821136154842729382326904825709746538971743562384457840193057189645352916241863416572060396406218592993676113737525588996634236942020086901668315458671723791105970032175768149459290869878364653076556923597938768467255188045401973918609362420941622602857011474901957106183144084682958409961322604797972961339229028209516659467311587248264250788960949014122424169650841362317080582213344456728815829329818272662251901476335641841944033657677829451852693472954637623965198232683892522798364612618785373685659489110704045132931029285502244767600089790825390278906469120388233427051594544148089462416640652428555396848005434717688098627332110333690982208416533924011306971363744371355580975250598785194599471558159000736526484324975198596176101009413528541962200790730133298403971328421113994572378415309188445800034879234901591793600302294622178227822077655261639241747361037818445818473829936072858906244945338682303081107544980981490805599437422753520903536049887845840559851625108485009572528449049147871766256892755536721275735744651650107947075728951697973174216816977820382523885571573415015950512773635749089788994135366572929564065836833160614852290068828377422667604165680427536514762443809924964904461051707759638551923299498947314609712549218677096959280320862433419368015443129076488821180422283035970376162901828172655716218711227130783421269753824077823244599148484287896213694178929704868804352246451553816771888995094999805135019062019140344516054042039169131641769258486374361409133880419959218931702059942031538666952761307159942777831011032774527666153204802535152189483999803078779782717833832453048182325690721670909321525689842615233604136640157464509780722046798998432045640968837289069194871410192424015119673943060610858749099946757308795870859071736399770930607215112994727222102220119476203770904900237315683612048756237379323115927527631358534905038970437714736913250820140541406686941634098453842823873241634264494723921260037447971312057515463439011079463971048756051864411783124690891820375990460579076042622100083624324908934826507036923480345873388197331490054240003179900610273959303560776992473989636989824278827189603136995189346873377556590120708447193777903860094694573220144872082878409267628899844239793353538413795720419826842141422899991098304964299357379802118382325936313339997529525804433571195976766194764962753208025022354511925106714508971846786637850757525578050637973472024211016082390380955764509132118671374668669852758061295682978250863916289160959415674874406252743658554654434223446210009231772535273519452830731900746833340984828392955160416592069843863059672271438038893696720806085042689711870728995590448809951026205773140661482154288977947012704953109519966857747672009003674929405486573593550359932542271686900816944095563080462584108420613677890832885606622708405934245146909080539850686300279933748790362141152074842362323051093613237174503992537581378922811844975657820849244953921072467691862521634789397109241679188625307936286993208046091731419026577098871828185460076323759144263057553908757508664946976349859534526549435297223268390174428890859839070582728093708226243663963492514987135929738859844209486009768303199430948518028120126097431266360992571258856851770341016589188365835328987274046356863116778085512249079530468890014458519492363475159680248410636475848889090276917038432053327079209354896287543390504449766043973327753375310548240369908757349606556760579943918675508044641893712010829012243781169057676017094317120682694149073446913547766378271631664747252903563527154821034580541878141837108431306965566651032194116585238889235275634284069771754760577283860540543993820721305952972497864925439251174655098142121376492866900970019459032022140791040484358575756964446287988080828861137300535346194351989162432532141361192193107443845911159990308776118652510038323081542782310479923917055275260586628491432187783111052991589890024807529502314913250961710800867296331943834962132327503499380084857454863558184218856299871202230327013812600246413762286744677405684804026676101551023405833826802058271048486054644569418768463740728219410654385118696020185269947976501242257217022016146747466942210493295366376099254416942095173389333753785752797233461491056943973772440704689661043443109422592374767975732077650187530401283078645324187170449632503682874058890478279853172885226037722287604179336883424844418208701439470983150194778019835213523680917842882501443344292553655104372288041858296358926033831110670309641832329634574881697812134270131602928223103275340144885726383418674731410039072309154578722041608928358330069255392313510079795711144133108326086494595729761721028884265412013761462475617684445344339653191510165551558081862807061559572203934866157837393302588864782262374495613480007916861875532253001576637981238555839176170795560110239220286886049479958030656489167707400704871222332459708327066154740465471472281179200517981498047593097261492579662016714308007455127497196831328502928995258339983546261519178171236015889432560963975627296672737026052124929757384221946364237635213307379038414535398465105700895822212530352680594482408748652918263528614966833549287815586910547664553719886174908634352560850022665869966567272008242436331942871807711903698238821845638526265404972879775583511730120292242900174234660729385318453472827964240662583210387823081512669670489174749682801238374341674018297201878312261026873048234886226538960266226750543385010660307681168942335743441924911034814137225401927384597677114937672050702120694253613995189909577958815670739740296019455078270648030140188486274885496723096894714643388354061374994890918538199178180353119893634587058684032381597766601901488964224949980255363589857233198860177905133449331851501767755552558192454631556735854241678078588034097700233832003096143552956840065930862442997743642750214226537227273518793928674948559318680517519379671304693274442910688701480685999452232198018215541518464765944217098658619346820227433343246308377583617793144225810145147585508317085351744265642563841097362171591945831373182872798721325446962994471683794720537501410403336534272506515147446214681751734670720192215215857744067391963153804739853572614418208010467890271273121337487838727671362817348314774299568978117238698662214683137346440183395752802447780476387388669672823948134448466744414932014775907907910533526354355926669567463977626094482697446056581653737770303529165968809503945355253393833538174427769089357391531682800726551244755044293231027999531747196650192809433154152681624259890714884294415273045923471955365263620351585498880358573751297519542932156701747510757263141906236319854474718008499589891895455437853209015082477134990054382545528757146391996888013749683179184729149032518105199570655051165255980360162290455739201723228033885551990402646276781406942027994745165904675039131130374080086573949278042076350562334881546473600094711508164215643280353958920023515672555944056873741813208506904185674174605871477927899461669453877502164247100032012404645178406135696990079042766617594822274281441580964060223654492796488218245550112883367743310177950071655097251156189196715431118252671727503909432743561988114242966554098972386118351850999830694031394265786783881899853576816348427432828126601641818025399947111114658773435934770477727800209871765087614106383459943946544096329467036051004834900191512385146325279679742454045434971451899857605568797267445511417746319334334105658056124052524044515756664697034995563466521381037094784190336670260564789125656690709829054957855393546640059201738115326701384865458133689532327348822964014469204678341619416140163265049912507457328137179238651871995679756850257499965860823591448737751348696641196924486999028407832582933322619856185104542333795801259843084916369387324874173727180866059063770834643800167363996256773095524761638175160659588833347672663755519292730689551063334432871794435179810105148754393062513016111670601442559004165894150221275473710821481277504161945547497291467698163379585452559133430177249343951116009259230156831150645334328063856654129048605607787673788971351046424325502803505303571729152429886928987789170352145129975703387124466944476888959443033101204670008368775846712804977037826437335913458517159239270870681604116127400032340501545937528806557720604845955950239539059324400795832661628447337157637493264752388520721212511227621818923359067725485787888193324070780788396674025954605828445033526749212608487772725318399146420800491996148869317461375008451422271508804328158724861530462543275121275076982794641073680402558458315690902213358228572683194778707224612504811428738658038590817031354265850656833482906890110886436526733556181938028772546692361406009460915253337202183548361076171589849571215939141036995861419979473254405383241423052031030449217405270749370129590223061155931485542817397311819964048696063099868203628363386705664775906308709113317976491572889092652324890740359832845362273767524376635656163875901833387629441450188558126481690610751272064409254108103653382811917407373026207339580957429320223893231481008916903656314898505154145606696032310198645076848649190828956848597887171936337176213342945321604888668569107658717168279199360586760881533384851827671778925297902974649028592135288031542876165937672415245072175801237475470315920568281896843978029250186491821886596875263311274726189607425372527746336674541226788912784419939905574703236138202928890922375066766615733678505452111180211738390543703675975165421366520662639070295875348562190361999092577281719792331622552626269651288422022131704783560572230825984807812053789985410606615673592680007824217078476592923850245277243492905296031314584078225927414270360217131651117155106775036809872105766226018953297205628242113798964354671125539333637849893650369862619576654241927235045355811385019179338775307891393915659792995116302109113530043069620409663702812357710455203985538447069700533644014413311061032583766471329865246097298783325411969927050128871512839848660882745444731127568277515429231183366793779431775479499843522898125098629577684821874302157913676715291074987671863602753804035894823329153119204164764603514005804425427261636044065802078419482801077601111962390661240011418177528997761823199594065464915974651141607252195923733895470360634530739171549622051603607874052997864861054045374944192419273246026537435406723110358459096227120180768009787434044702896671476211807900033701261728196146710042235232205373361500377789557940011900271444383171337789597317910570438011907469990208999544590050284580309096025896903791852906244038257151238124121366378027532188028985559728388254099502616045858664975600519100869322247235481030138252309649916925072180680053378085902470929543816786842569190591267076292228972445256199929681616976861259172335326815189507120187878606179542251836147124658493855531066222158233158320784174658495307677582026990047335831580833898698294691162134348685431588546796852744222349428034467929005980442932862252014882994895938463644098239924571224660838845233522313593590920402146966002696512444603805373874025557935425128757540767953147370277249597772777253553278326471676932642318884317808950805447715574866244299414531531963212530525246652515233792864233913615381878888795457375996074011023972030966718535802609710580666276314746684312663518454510487821992635472223949195729323222885139710464759856862949590027658753366440555520684391982911305095641093227727972278032189410290150732569039152283229196288570346051471561620270625288732293301315403022683276138843173084988585970818311811881491255381332094406701448877772782639780584108988581014928275122972193780623316389299308077281218754413726697136455486820495016117961164911052871759054311340139866400181477603321309359395087182333564925883141173591122799311525933443029011424123180486210979561124313322325870753287894191203757393164352765769533876264494067182807060493093094199897150418824205899893252951538235820592513355234347106751729442187817592098909314709673138648181608914840866387831357442892700125927505593288122190514199386224096359180530021747355170853980447209678521149977287462634248539338958453190500312897527822161164101339926095147371800725018736145638324112541579100250949111386268221674624750811577087716434972525845144027448109361722893903704311590087577697884157966174276312301917050286218877060992998581755600655046521974308036439149367656919484183415749901703670057068495070753681545277586977034349858218578398861740990540298424992792364645054619880475684039227326716697147354195881095634079610762499030879000764867410406398139095137226941824988127793961319612143756710377504646572918130970177769667911040857140404642130877429592421482148586620127780587937622681610336222321407283404354417259045847329751943831139856709806469828868959506171383652410772602611434309646178879699388927291928889719537766403206237028374422512676095396323140773818042525216717606308894438104556929722624430743878965600329398850632800044806635888055411963307408711142290808073831500184209150725374867869147137780251362285015715872684721028963996421933442525382973631807832280916884396277863642193894589603546981150835326967419615890395613853528139003255826670867355376248282396118201242136632564993333621768725874496365107170097765548647417498471131776447713376674709679532812157386728816421995177125434836189956866042957156022558144929789434249677446138463746797934972459581982642112688281122811971693152967481873785006354905776155182882604262857253136695664283028266850155915376052769210108592214418813951808090572877546539629931444975012621931068786594208565109891207567644701289798053398071034043761094750706036215682881817470880309736809328600088758057451856340972636920256119702469479363344809362375812046238103454685246228505822929259204455145942728401476443983149139863781619205143525619602062744721993629122422297496536098233076478916965968341248374619548004077476148732176455047382502800733890651043877076717477413474518153071306809491928273576524347986097999486374594798334428435080073964229422758856225237661672590696502299429600902907175679968954774226685177058156061071884362713410564145818291508931754633844306420293280994061833383727911915810601753449901419530837084744462083542831542438084983906753476653142500032164216081943038831816550351275924254414510839253674995654260328859144337788316137105845827625797642366850469821749693629400309638733967432563715131123176904956080777488052304192559319987257922979337794909692808142222482157725674808657528567998784269869821989674595866622214863026640408414499771891053018909768494188926093279444586834023301030540865358440786649428541128291922826822618582320903434071800507009878238128723325063066185471550793358213620254117467609095870232352431369941341993758619383840369264059310116665487356801224862407920071771359926622719436896526022810040137592972786843776235657196495991658308837911298580589753828501540200507713322280567192867707162381106112024804382923298253841265828606524011121103436815214329219949253930523213403843724376624858013704515359946850694954811348431539719434178751200587178678327038155192448039497796304079002918647845112607014769526746926521330551796151876444102339042657147065977663145826863687627795828908326867116502760129410554040662047395317963384356031508609034877342206721770590979749067965210660915278873697189727507431559493128333261424621957914950941175722541469754571376394210592110739117716504286746760422650223987608510831052567182569726878197747489050065125290238151230215235737863798853475949071915346649716887019257864376784240110892165220517775975808026591420566948420518108081199377606067341345956686156790849732498616398081792193417212717204640883203093276754442262259396721382168468333719443911489258954178248094182061970166391437881476486397913889925742854027925339509411728706540325054589124395418516521846102809620199080824201661669654916059351257265095057830504760671081409987554584167176191161369393327488371743637835653399778659131316498496960649352309951174855553170719942562892047773723950764386967869019359339869087260351527903308444761718209209669817461185729906219790347017304509413234062750653981222099259710299457390466287002234359195332891849722110101052392482282139697839564652574228548361732027056186003108215284093723864799922000907225669472403295788455219354884696722245147292264503159980164510233806774229019691496745906249925505700094933729960584565809434692976905889284199839242103851095497006026169610984792350418180282471668538439601067292192672651637992206329443995674133663358525076927096252487313109280295447404672846806626388532124227614187661232126244556912081220295497073502215779304500530112546843774817651002070458085260482361646001876431713095332417885376981128125193019807709675643060617981681927430154756485782076431923449996221828180117647204680344202519436802154340339062899674788928501396828358367717478044021670514498863194823449118165065095695625148079028440328881989134634002350637410275765962038009366345701964305360630767963952764625815925393330988741642250768027054122372300820634612772180513705759742522867718518183241702420799858174038743267250515975128632553066202777997183306007508279587287753561537775444722759277169031140335223678750004088522334225169879488583484892280750447182149440723016058119632416859626435613612341775983882871275213842194254485436547830204766736691847037162960643465110747474289885144443179831750812776995395477671020958080996452926227793587616083981497423892365090989689099652913159153221851309922280345241341166719738666892267882079075758741646091653164943723077066054725429211881449491260144102246680293454121044094305444634452116037513492015862628069486175466331865054428197243436612366399450459095319642370246814943681121730041417423731710439192455375098197588052671903952423270311185800328569225015101450247719045697549541221881176895421967254614908949703674534804564311775865743404320875642475871516588330868948050959913243277888571647136433478206136311908919851120018305545301939127487858605947514238003557296598144523181772929275315090723876948964007204456016587083446304771629733252431342706898213071620076673905766346227898719802976114383018111570480557015427926110766420100313553776344504210197293366738160365753677438888317803777940639971960395360863911298236567872244771953839539174419439017090420551518527781882767922327130940281110451583709986503571136425475678436763092760373245368661161799491274054761066828813822345607413419856040507017943371089476730909945557575515358533529489120461333810082387854499782772181787903584559811627425332399793785152261037988533484952844411102508630762095383942480841707697683919790414650272318952433138879462984955660958780736446420427258349909244285168748446131142408584861910369651181759495158095489569694872512248456575623372027180678514148430273532510953877428515985997242437694365744090637378028238708400295618838593321667646246855491354657819789179251902107970234541838308457650452205669551854035145342901469506196487136580303596984369699471975455569989755855538692152312360911541731281765999046843159270766534749586346701334603699160791312372753672948364050258444357056299327455639684771987255122459382163609901792139070029824590438572592802803771665626140832390895203560080117164814767294130505490911552484821969395617646269688129238719667515032217439828195910270076475709517729485656871423371177321561869567321116276375082416767381700665937496507973711982197857056206897069042808003863150276271887716887476925129125053345572220853869098902446483180770159328790783432408988608056723527657632670719717751135330795194190573404525005083981672750821657962676641388261130619761056834220128631513011198698856317940953794174525550063375671940972885305960620727851101420574002184563522238258638984966652694766140964469591568596525235093837237684319335682299850463041799718992166849833525856084522334384576661160088718240718322558953766034376380675219088160703366475158251741295369942425053166640312395325068256791665322257142858854723578882283508324917815311364265768089684784513786158587791011293269186728563530475107626124521855725835954479794227060002522645324304342220132511214686956402113924331996335638610007639180566682364292036146540567218020861124537285501460936273347401664450597854995470920288955276140803262535486109741666372474809865981248353954802804772232786071090381511177086532848325125517726406024516002932165938564873942917290068405307950084380549306563145137781788760551703318520582016661462086046249338240466578170125505563039408411799889094064378481895003334586458507801195922568910619045493934149395765216935972567461836287495049220624480163855380073333351501422631387615786578135055905054884300211982924599404719124477690191399514873685991995860628849645502098882665105525943535953171465776418986160069643469812581229309291012829447460210944815122119144355022688033435726480689922858818934928702037343397715311891450271692423237890995929057700631425625284299952043706560890235797752571626320147334966144809066363951778032218205886602923407639366709012517902078096910614267851074947198357871444054965903901738301312094882311238623632901245274573026125713389584898457934538401684158251092539176146560716214150623248967288334601279352646915464995159203583165194676495473593756173061786964032805811141811560253683044286714599602918599171835577364269750390725423408668199656119768635041904278573350051216154384490157999452677305615415671885398739079209960028951695474729994920783923745939235536708718712745324070412540970413481328422217167743148270123633907105091131854451529915840137974306800972265910017253169077416455431302959536783685269545337498013297907709043986259797950890638423606084907502435955896562714666835131743926066387290180910724938423396105800211201566026575100676041989692864398733857625868866578306381498649830358739281015283350374942490691265114104634824356102510285819701568579085509530413421154288720277096230084212416757119578482417274509838987664119171768823546969163414965172376525626978140330013142641235416612485169918185300742334179525050679767104106159152825544883334011763323969564128587387794666981653872005433245920226190347418121177482380956220886140101601752208526696503342961057528756272261086049360433462758746353918071379043005759394404340267720308246803746574132035200458884841624268890294766401967170370775010308035949312058302024498568478905822078225262463522762275338504861877339627653764864226984045637394316186725730005153801505533850291397484043785226889086650821133135883116742999849843237157055918147270286126513074878547215396791937805166756916898344234485617342407674095942233932655199583271258695144717714267169980341875144386966320350069768942159561730509303408627848273361603304898683102883256036446183222624363972682555398312731570529664911367964547399474719559189210736816114598678037465514740202651107392841249163911522380560229649184159541808911120274127270190364352636383585368831550996640008897208658455660841637053164908799633181660110310445048548130899526052674422037059260232183982622319727283313148587838006295038363389495477397794489057337922593208143077275819554441677426375852240725385218706471884031138333878827172271611749883873231161744596669938461431782479212601235972632041523843090539362320058593546566984574876288455242103981937839286301395506155262444127304292851611022096791089721306165988208287791965214738685287502123394297786765189779853589544705359033451774074683115905632235479322986213100845769784668284670951881733742599570442732355130383767266276521920972562430613275214843494041752339582527813352428355551955548848668232115679094870964593221308122566613992207121264549483199765756677553293924947584007138563216626267652749493701281624156894624713103344799176948332618206218477030848246777558495731734383007034177283618598697087570144137361385989197614827808156351012831911279350512104840777184437627066338335743661109035969981261675749459418534367089812428863480121020067315280043159326702093971608817526363464329915352091068089939516199715016126257056674146092921490299514568922847726469164617903649293586042590822713589304145070219335071547577889288404370652476828805922925642611678649376618027358017970643319432151459423483122036608514720316254256684214528117227547884960688967014061401673522372995796407428247120095121980692629668119922330971200598687672398173956974927344321708863011084897672967110082565245089169277501187782071609429456105682832999436419956471667436849767459082488406493438324045361973371837413030939953630944791220038454235744550152946181028957124853604075773850098032972075967727548572980252165934162747069618388095111573651039357904906688755513484267374305781992963866596961233028662601341477344732233433732215845026662046503087317986680481813394600066568262115119815871833613701769652058242608925063064430540797329787107478400606669243830625939055298728690339195558361744234360997052528756736811668434931647900948787510081649485659657502592327182381903511786971420432461010362632079532531522004313915307578950446837933821301223129214744075883903581974709553916076983758922217801074186841063307664827245948605825423002384688869149159158276659247025558481893223597157375156166485650878337352567064070602809431408748489072584469010240497017836094387104983282436974135209640416379852176163667820849376099457658864643423790315459868756180663158779384103514684234841977268951825419357868400375163058932640384905657960355987859487489897578776642608112308394655377172781906110428135827019607010227826830256161210518235332983246673481867977957222273237826620435164456103589357077856787032532568531105435681782815847741384832985284467255869496301797987476544411592503590825833649423514390684024875245064708688831025225439270113255206200402863873463496714228207612956600004330578659646770937856728588205425170078092956041693210663736082102767347290205554012549739411563529668952373535693570793774937720902663206308552838417024093406595897968914418204101649455363101959924464001835378197603361152467827268282492493283195227508189563508284059367042251444374670600034331926758521996639177681720961781696047314525051102909902121003641827679297527050882905634890421811850862742043361740597335498542761780594689471989509799901364369555816396368707387037321654335323555728454686950529891679884672757868718432959052289040685050663577675886724234308672768650893029387124211660077057603513560995928391092470407947492859486784433638761267899052801563733346308687269069801182834587324178737832598538917271029001671809266213344419352955173897291298884611700780026462832918476628945082126537425263327505081598299538079423684082389303190019446462592026549750190121036584507728017304702307701124646492686657933052265407235288776307984911650327971647998060274701877589341189878556073843623767350679001060267666508134637358132368037260269515851567046992586550967112957493292427394334505497124637099137994636247596560978909628455320539994999350181628237581285619871726588446192695208272696670407178965381424661661019747198951056304100566962159190338880507756169627032675427557160055460003614455517319211720348232815161439654383449303734286310410469100641168309819578534209719981373276486056782463108360370686069033743418450617572592300263116489283717163030651993585725885966431466667691247820502671811837610308763330561051427305983763902521820825774678981676829081929699686150952027732227714088983566277859491056617677805032456600611814013710279355408638118856635283535977010801745100698538980579442957329100875560114247777575122489554003984118780294034271726712462902033674640278824246520119590456936631871854850768397276625967522850180266978578574677439001551772108768844314785041051309956200765527272341461489506027532064504862730166514061941662342469694616637664317169736421254036141260097127902236150679136073448468041531596928036456920617100890730377528286345390797536777637970873203427034056819711467772628862593669229370660135883855156662459977893381455919065947817854569477894298004118765620631732867287411351397897292321104264279881461758074872351446346428535532425589813164403037336115902266527701417376088395020363054284959359924345127204745151285763755071026727891450749811572010467125209505024677701132264558064404710802584004494361816947322946947811519357895706604777604711799613073641938191312137855428501394872200974506943697062499032298877856840577097617119217037779675815314943713050932889245499249951521401195880243761733147766155815345950317173036765769944577059686373985948219879678667682977846657876280300993044500708490951820273380916215752147901710439279406802363608868584746316074366448544047045141459734441717338916728338083685120926601661547032593785178519299875077514145424576805514199800242903100486375770534520723053804601166197060231703163706907622269456209729971899299892827944232206245400737143965916491222474860841924360579629503629493244791456152215877925787211698658280026012853835286667671273666477879168398841658534809619074950394594136656699883577925894691387366096365930854170374532778102053054575239445629988517739431381844928210220283312204109162334035281309991674787084640458041105445250239660567721457227487841094719018132645539939194357562504436777764681450900669915671600702499231765472016422914506586197797954028370997122283654984356932005144999058119698284206414745033702636878501955436334560052293688874323020666273832879454512834107330640859495999531777178101626782870184720469193193284507118465167985650799632726181034212266599503889376401359402981865326090737543639973767801533300708733106254734495533947036837696147690769826549170337766779053086611014732442273063110092289112113911874104449614844793448993553599770472459208025726997872879958416461732663504105994069631236431083286753361191807665281521012741258661487497412116414315462134136264943971966590898187206130862478113165166056876376537664932834906858323349925668101379906963089372882902119168016963343850018487860303626482108515216872654226553694592423206781127462197176012827357848848523697525573559387289401876316714434884060179253363598306142300031399353719892358648239964444943470497494487033780424149585262087792178973590463401988159998419765598688630158706640674025552212854058980360184450455953471697491533224930008419644027723630668022928435433650241513626106839856339623538300127870254454333154763403321984956513093077437738322453611020937516503573505576668687660857601381167788437974330417295398904222533077661699403802348841378728849541030680480860890833318037578518012445611595495776080899405025552474782213540819688908147446558418304720192758709851448846445417505109399099879156028867243765575881269356352553400737763142920352143751730522019093708341205954060448529003601182834842163114010552988984069237603097508023384321289134236592346697088219758953980772759832219434362749603732266725047838543724507565628260313032542454856413923145603517423984594564702042419824895570750944217651970301356528977397836858159929924767240568852641086611248028652814751995148297793353932697319147159891778139110874494624215180087711933163728974443692513725267828996471695499451911777983869530129486045095858171501790399908923464767250782425365280875262621398606610662545630789868118976929877268128786500496787970705868451566318239582906926168406902767018101918783808360686596548850153498627036844385242213211755667564958625181997464560194188013127886067097742530895568645989657270183370268803545372148202314152675166002235192712143236162697854785860396721868077270527380979298740337570023354427687274191682562331590298980681885456754992169442994761722825292507860315522675581738871753857959899505703863447506971854725163722985396435746803081637688482271563995786079408437085807711200120343956383618152230691132454742879689711134827499696828164351795526896818598960119465582444893028728860788038784303807965763364594369365513623778524138893952562040069931166073392586814370566153854128513729792500887877385245398831270922077051536936496887250312977250096987781866954146044325630162993524453864870399937302167759695173042191528118871513679425513602318898514200164897006383279058508084557240316461815203473262304347111500095839269424757937774916013664122801778121242933120909031151481780341055902043570704318238452568021434330671975142926645181469340534183001624986894230923432291677550345579988127837311392521050112621926531782086530334247670486442586337363745700117654387096852750418921403500826379157875077507738647171265289828923864209378605497473034078538987647982391242817356827031433870692432375366604601311973006763793376139343252369757617777640138070010812947406900567011316675179940376233493703889375492230105975486761199489778436401310277636384706427979541780294203513296661187704460569751026777649813930788561138622014825197873272426866405991869183161839349326631803386264727663116888453700709244810499434332451133115146267866594881021840053652979373269116554208067115556824312347973750083891417454524228181498055241105892947835263142716921646560406625608211829608103339724302113837651362768236893372875903892978823447293565201246174167828497543776625502288573612564260002291148725175940355763793423909315319073255315285252001613445591510126551571055088572085838424003670727964421125835544411606373909837206055207962864433612210530813628499866446800254615962186598346855374049011455597304179486035988363559042338185445783420436399078427792622125069984577810992394184585429010873310627713947131436350751574322377807741124083541584721223290523645654836614091736166529869228549125417947279085255651118897903323606410041380288224884968392190411455764461715413806475108839337531927154102799763958001028276506410301093299745837458778290766937754088264625959323213692844675834810888619033569212369375754975478633826637904935264018119021721186505880930552703226637338463396494702722666205125235246788254489188912852640623475825405513060080035552327080489343603142043025583189747594800868441413141916929703159001410187926173232143178560263812362176432438633938675952209091639845526653585100839515269048806494775212105743922258665195146116620454110087482700963196665301572908014401692498833492251757781222388008793923644959091427291623738627882453271229909815177883185952533130251883076660639132384206791271980318354419657446066989533879888436331028370036108639179450800081067309052566431238010847245601301087630427054061323533816619032123663705532804842666432166675890656857046967777301346577048024293252313958344466997841366825930988245497998637533494293795212248449145374117431288678123550977458625382346201641393419520257365571393635970868603161968748183759218063888086094648417990530465720460935023782826196661231136677872441391765856773649154835662933242019990775693385844602731517639904936950474077045291592414031846301663039047979377310158966634809785602034697856824752333888703136051868407267536269170689845120517729149508471964827167995258275751596294277383856234407728078590734827486198922040510552172389232245656229675780836655719112520401019230395344022028786870214194883376253791784562065415494094063703545757904544885761311995089515732217785163401043617473483819326712454003193007543968883477202269035518497384241105332776062428237592470590358561423510736611159659824799066305218550338403388768018338128418113826491362916418799267819841493000636650930651364915465393243316636624603626833465704390271944297973405152825496614633983118181718621166504579907163852869401350380911660157874236599203679202577405956270690421575939001252278241556035026728396852690687073116343120876854874530529370328621474407547356370778260943731178829843895175017379405882950511689102745242557590550780248436203359837160120428605929269359066856975702522863409349538675933274284555679998848989480687410451254353940343281585481850371362937298606009043462746701169093000071529336226770084370141286596313994697676061376262992263011632237504221276276729299307802353956382890664304595359044728414370727505118169565333757150012460456582095914532369159781162524152163850502488123913651914956903360559728733574467559438478713662188220765372596062026710007122011223624634427548158344585680461195136667541715321757611467026182567170983711176224969652666712171950605975398666784202250140205835829718639177378111803178265167415940288255718537654466003127181984950942972652089370010569450437384737771579701482751309112886207500421974824597940725154153795073522884185137064554527779729626998351717226584539514302330279357186625708442311425075731433229320361348349968031199766712140041858915951760259641323507607460475803710183937587518165280896844054064176673498840161433659163751001347109271602479252084377731567731456882782464055169218608582689649259028245793408812852599548523672618358073510209980216904861856369283018230493914537371476593062532173943382796763490072008198212409735711755315479916019263993330449833735290370605432509111701235657439235670778409464589442306317846827910406234710314939809707674668287559358168971293256305094513652555953391255579736650299292411243708393334997663647168356034548922250307690750657295330374562497262629782873170954802461947224682251587717171053588466866932464961124482401527360143649412797783986920849221108283660179231171492997844525784933528899607991927372772726721683111782672809843509016424382274436338113859695500615606987081424879189764700670140952977455565052965091682660730053922992678812209541638449909331571611182378756719744394873233729613669132146878136151649959025374008707514394089504543630050091410747320341683999362572673839839104782846241501978714719409720745299061818892947084930929445257235079899948913499008465072828682007007605667644932484409863629479032822268688181152482254164432537718415628263197157632203098846880640161337220505150388174822439497853431090998067644551190989510355384568058512706526484172484574800600883193858208101338872059395466014003833320489919189902042203175804085925880710645620127762698684202712936278174650536685594392516266479355269514036855644249108696648406378455498326938041649866355373384912465639981825371209976570142515766608264272270183886543684932860378358344428802589344237211725470041888416912007543648963156036887379164102554063562916132500270372922694021635102236256780165393420211251725042425055463053363108671425709281893741875127162725566502134590785080586557736968586060866747915479873735346186224519576513272900648347496365354509800615406325742772270511319297857417792152230829137708809024708681920088372312356215018125741192349474273296216998005015831523315432737258589512273550993036638229177610647695489272331602272067577386862665135325928484535809891418524652844541865772429859664678542088209842231018946649781201567338030009872037125813153530560951759186393395597665033509077966831148523852069257351016802324957466862472394614494225732600340295900375172537321543082820490293730448730662401048577811746610969095463041140291054693511895065997570583531170210739634469944955658367667653944329663324898418947648616029701650460072522455349286701130027275265918361589045080872447092451554348676982017995434264113447355583986489319699871584225034401262868143720249017047139582790455246326579538698776442062485353556432354599055520208496618004594706489857286135039629275305048216444483305163548831338545262669117599533007532845881726527041259840748623489938233036752446482744283657817717648032410777263843484788718199226423594992748220680404384088687679049488583294700166852073128041237582618357287400196674752318146504282431217159044686813843523242091438346119279003356994222596498543982967584540563562915013572383549974656709521197703099726449033874940420977815699041187204453753610009236159233277939919209879240314363368369745605621880353425528384356963783498487089564696364722168632513648663050492826222614070331358620154340198151885020907841639319240192336984288057719773416542476501653905867777194196278267102113799330889253914474137335260267474774089455885677133541384499656838666259756420529759877799697443281108809231201932939228020286651682206801874025461308350146354408239695094106649259728877990358150778896014543951414583964334166686457679558486441864961589104841210600945912811567258297256516002941064248338008862968586237760049198144015070328119816309927787159239298040652281058078602408364877819166061943193478086368285782803916568526412267810710878847983452384931951888920093767121349721078372575483227498482182934197664236106141850241994458812675621803156211702506909748957532331365337435239943441021280107145211086887171606446363909948929295432441787466116302627136737862906175309226868268604854351686183412883440799265914027310843602523717284870345831169774411185663575117921834381078544092618454196145766533742060094086539507715565802286500542744922264523778785053010516100744380695136953793075933098968774921031163209809560380520185028378920952148615579958184716497624212686638414158057071007339786443445633325289951072345030270869800786126389865209118199276277629419072908787955806560315630641516159074480483690827070567174164389930842551394410792199026104780185926248330900920716337798819664160081408970540173980014600739087439590269812266254227973400490566985049007749301669507734308560736455182144087165908606090375262958767855784142772552678717311069163143081907247687070063195425286190524319859468648780173065314644410262351781877337227401201399957348280876913469872919124735192794024277244971419275234252074413080640716785554765832251311050003856036597869388822651398153141422860080616428068409309492390088934517443427871885590626292033229425699353798855376909882153825034666696770099353023251563878516654477130227018886218647393353622745660720759015107584839636105130033023344804219119228809363841966747797931759377128560166841178334866204236645327915083727663764186606573804132033462738358447350288223548550063393179552772962907455326838016610613000239079976966306100840644940076152332889885161116568354654594353620902079725780797053071846043717076668161982782122273777672096737140319148241118669740153715475034291904502449835568071424654995731640350047942004589883580854784147885615804923600517843700088599359870614558497530026513656673796255855561219317469860498632026395808273929541193600096588788654009009765682193800159773682723047440225357308114888730109795384666314311049277175524780623036889986357883715775289547582311313928996260653480331546913565077647241587408923187846126690876400667707910114868039369013582171808381021858103755199508037523886648670014556445076606818584429728158510220451272648349111712921487280412503845771659719039995647482232372278459029806472053331891212219738848162257593984341442177186606675449450279498487793770805797447366493980660969884798074626282408499834026295498954288727940255271748000509444902947679501737254714546982544918862195056712018587106927062094680225522232552334017961426692706127960016271537416912566060561258805454732482242024801036662693097019595726142752175166122565501148467694389947821406347694699468262476281828549099987116953076626290964929318189981536181462506956236685564776324361547886461843310757326418008249796335260752207632346579914402983474769515595513087773308078833793307537569132936335650019806264770422943794236340330083077179186192632026810266127899941166208578929746190224241562542390147285857215209975695906649050422253075611116637258414777245736978001053110026174879134503406243986894999820963693523251576284201630063859138494488860316167105613806887641377854277828234429451467392160166704833073966110454245892422830409308090559611265019952213221215652072779946925771890127193422672735160573239111542753221232937951102885581238672245914794584961756429568626704663231328300687955177243793154293495588380778919404604535436885627702649838596639182988135596923689576832945504218670927447860806397372050963558410056049680855768263552014964344481470931785680479008328590791313742366120605234989183477035297770337697458301474437708790805004750104266860871583631509129484265269199388829645362663510304131376216050329282380243339528051071870935732592974378896580720259007506640988147645754950405276091442251260019067061295590526167042032324647544413076017265522510016342491813927112212779112255928886038178076865529139297964066700272504889493239391024924473907367604698418722228682582482690288487153121076011431753567221774778602589250730623518696176586440616859649640378794736836405658554026087441579703160699924018890936312659782284084524030385827430941976471559910590415100228784079115904157332975109878562425892665629814960472717505503829790200403117462472014424217862314192004670548680958349205672423662809635511601915592963868615603857970873017049433699341812276603449253480665387567743738184808989094098321460915575683151792298821932124922683464530339689203112116236711096059015430795783278809134624637716377320477302962006117737078340155359938029890526583845131936230681517738610151647935301033662695864263578037367422423662420463853680237416449907085978426544065585627018257902157968067574233077250984679248928824803416463084904775049646847495439795572309372408703037989999008307452625892793709059598651698290362974508451249073391659515143859739575973923857993160854121232935416427537314285764263242683920192864647255316981774422240565947536467846318492938766286163938084882770167506408936584305469105321797176006990169055763919687235722445820632914512315941978665095000705569837726986431329711993348001502335407489462702568235256031646801755520049275959629121067632085692089139439596531528574508489051224521967845711188507964052396747403868466804702946680464764944702965633522591940821116697367212641601915554448369814875586903775002067758688504160797004816263312869192684806930111939651315916624457249293864881147161433630807860293289070976701605125398509689863241235037893559743922549129138778291380099123899862765185592831938302723900884056419142307765979804540210757342331630606799028925476416489546445406149600104182291587944084837342782159505615893619694819467086688631021223285338706325826976706786679713969722316016511807654077357473352575721584199554775151743024293887244623055654194580433853225523935221926387413338339175610811230658516495941863001475653668741643606256486508826839347722427825675180129726641515139797771130454481193771595614314547399154872798243186848746572970312833805061819404879451036470428043395372016855252257010770371206676224650453230336881732161205490444704091384316016696528099249848942094398687438706093031806881532450181026536082225329107986334436317650625970759167353753682227837652469511933218200664406522659619323354942297924258310437522976910600989500248124607304484083619309611610922545551052781829094652831303621011424587396152640735279166388745147624826775202925111703827563845767200777026185543487990946557876337590308325982220596064108106279077299917868041719045725592183428928163695947119307352703768794294418902276321725176607945821181620879735342847649754047949695174479106892165303801365761878638591034688243117394386671503874400838083487802070209922972774290112269459886435333635062323631426160734204867087161955464189432878342704444318845521401176519169292899960293291429759539397609503778071793513347805448521627584004696673681270499587215335146544886237829960999242310364197020633179955942688930166432286463491007535660807325198831031043278793039236204619981227179385250490602669414258320913978586901996224443930569199677570653651090147664765289606240718779796773382163954356022310195091735401575717991495883128287249209554007806353933482899113416546223453604689187684455905596202080953341120686855649700585560812752799344961732859766752265896479276805340172083331090910531902067895832088073189805686082449929536591380838032610669558759809558791430117335852308296501868351593432941679381181241970198161710377427340293984041670315925183100062853935088015437968433377902150615875245293012055776468618767085503330612224060042543644346159096969566827523113864508179860800702825482623901887208484749664199365279793503114668521697035094128183557215073276602222283309525070234277075018137343983074736823683248049298139606512745017411962847578550468987690408162207545634247918892329656976174228916032886951481379499005834787120344811863910114247326697052017247126866962589699273594990213365287153497826520854125821043156944103862349270850241022321355156999482441039405532752951631799396862346382080957381635941973161504247819394515033100886538221946294975813446496131345958314374350202151783762494707057039421284288629408136750556952333072844540134521697456138768209580020337128466687021737462031084680606208573092918658066664829086278231757026394294451213995759491930032413771314966246620755021779719512332710499245313607087645282252934125689389405519136143188234729115308352661093658039267590879334220492182744174765410502477407777496531668993752408031721134214039773081555512706280710332287820301513004179637624649165710969110228849631749032111146373261351100848250782203742713667959640941056322375267733110924489690351537495989672138865918598656519110017962079995103629947262064089941796910363242414274083353180162971488591229696297336880585371250678083534313976231980309560535822067433832926011353837938379631315635423361105965956933862040828693594685235142845522449514919389024040069263015126313655504041952961747213596840099824177887188341276987704189773132231480026907096434053625685858418556780152537445402399633090337358316403863515529650049093453090935088848065308314859497182144453959580657913542196621168162835470792790364032560544859108446210808321018903854142431043988526717020554827716787634599436655582149943677079949950997906637698203951091645107661258901890079741570974059882393578160534326088085676524703424128924695514870218129182009710743275530295855710877774614708156602804375505847090274763670954517152646850011252708779525435238780368304764650985519829705028867736032249253195685894665612959114008901469929335050591655451326504760613600543925126844342499351304989332234205159365809939124645493070329791589787590786249891257324470254384460107077162159081449891400653018895857139803000097758012065967176565269989326260279124551427740308498552012573613963891486642595755112376521651640354683624711962159948268199305011482313591866398631830681335218361574527187261329822181158321957016077526551381813492097567167156049683058389559279245119022226775938590639987927563550976039528786717404280783482791325072289610027192717320118316295391473601057574889813401740815389902948377643162965751451083196671773016320162655661172886301765780485277096327153550555839522047417265079387846578708065853212744735193815101872691792013994177901759134407916619239503283886759545514310297961751716638969475791422111400603638391909460478886624587596574071443929045099983738839567340587596878206504853168877671352567339056573712230948073157719115478276531856929710074895430607667310685910859389266948101946722017687227595510967154196145131750896902419389299001614033068861743395088033457179764591556918228383829815769092445979671054041730404448004707088450219392278066941313750502087838359481352547421182339181465871038737794637270829626446366122234435455185138683646319730750311287069092599063445383674371817226541089822426405229808159852818633362787025610155032695888195854757437238577975838877359617703104135019921942667484136470319069757550578744956660821653407767886227424341430574932075090177134390437787592338759201959504878862570577260583063789924453587517287347365121447153353014459613637384207050925514724878575815071805045908496661126016404228228502773624242803537602115128013110863766488313964462675022379327781619584703768487327249007231233038925465420872622983587839148151936508671365989224150165908748222374445642925595959561768336613879208331604021441673259012938389461133814543851880012405687581773275675271775522762436740188481078250251620364930931546453182054032133468739950276726691914652933295874084399281312622993681836278818588305217274872695420274675789990092529695751413854429621412794258566275483980283282353528751211188935535227945448350270240695074200613592076736421645220446523154503016020308360105430726524920383982387474410184397154430885839054622545469062291864070274021521410093402812338357593133488812747891398629152754418241140408969654871185258515459323441547959968906353252516288873753864312607213335889331213419513580119935336111222230378941975608653091761330139366372050575232846078275386849232120765676338431481618598951260044997771942614547155955584720398995731118714383356407148381905262924115344598879822499775068628992123060232991411869685932961966873962643351699982851293763433625952793671997151339186891254441755111497304487697908657213171378970159315692997791498906309662034440515658871087053260730607329993759474334047103406560165752872336456561850606381532731337382702362649910673426282616347753025903980799572922036846590740849646975237900747429219917396850674942066894436713643513519052855734212691978358250592730920404769945558254488010186454000457102583327704470134545550277842655452352152426358143938608860148360261851633379057153324864168393122670011215918104296234628764655858514427266292903748115778528092388348533306453297219696972479677978517056737973133823030039783273500601342783552290620838736333017486394555063332516218833984807403496907434380126519733433294003864527081380717350706192591270945052049408533595995333050485624734381698762078916505889281391187356823659094969467195984552288064975346977643419372078631055896701027526823041093652696029038926049348786121820301430914780576262599293183594278904026380449180024769222566691637709050127260625161014537368834858318453242499034558047290651792730009809015487730435509106369147328594322504291841427402328340492228529728236391551343692573445650112841503896593783450738930441504333440490450191943302960672720676240831492067222740569633936696151369769651464118784903116627925631588860113502524034529996578390116842931884446251253033594775357918182981521126532667987649653540464492753218334277853963778834365343565873771657437808116068589651862514362744776746382869645273081315927512448590359316511938626059612912720202271820940561139563147353714215703788114364635207336337633303503650856800370803179429935615675144770008975996354629750742390735479227344260248255299599822333079025227313871459223844534139880721719917242825324169442481433090234106100872130334618181500242357071811782016175615425999275103713737139090644694476273963824665810852319477892205680334868251993401213712386752067293875677459459086989256142197850806514667740330441712777572963573162302109197946638975968082090609308578562365690733849456739871916284888061598752254418810263254883068633811291403750006783489460847140152999386684479526302809202745547754726350541336874884546826191428399590663286614439856679717744331686874634316659232700218261801520563206370228805207236754454177182769174580678794735402111514696140333355217929592711189276958908241635656231341253489713568737935553883383634362637851646633830005702673155683896396384295374238555949749849681346862867078261294610611697301826247804781818245012501249404820513753536936948324976538814256734284701908808595689963767896005126301211839034696198671642651112476055212881707872326762540280706501195668761352043694143409497139876409718178189760250616569400397609180516592967843152077527333933661974777079131335343160601503619453543981155664143722581580584582113180671359365941092143634277303833414473772925125255548201574371201468291279276656923363383174766996562638632411301019090097672258593382357143324475352803346310766895270240021549029586226983985392446824695720776400359259076228706383122680672114000371879698092191090997606493242782336263772179683580061801494536475239676869318483369145730056969984053035886013791857844940362776880096641660688473365147932172649558614931502145225509591716746463872449875245532143132327330081661176806483481440526298243241409059049707781264853238347104690392534432678778446349391643219101899523274391124012285227196947182253587488109736312847802935810518526970128112773652401758902612155055425115462745615809771005294773562173084069856486399135740576158869766781685027660892357104541288936355871158993127555595213022429456130628563801280574226420137047997076280911212287229332254310147507030927430877828242486383355775363067882008901125218703165327524735313799768637651623678027958478027644237000106111569088207887612266515316269996040538373333808446191406144244073486522931189859226566470707145454807600220195940284254711345413201027282730887386760316754420331005328975081212504155414561060395774430518789103048476441535454647405902230621751120366258826767757837230358291367254240334240513507207913322407472255059723753040143750610941518801873010363711619672684400962744679473060894773182557718316602270789625868908670316440757296798936146748223516805408024284852521206970468365135424492506608949320120413667648039865349901681233174374987213879427236947853824562835379696244529846964597645215449826566069836457801071532971245715270637656897368511438050902871770778889002774545763063632259947919780093366026949924675768174530423519172425715801657308539696809107275548423891372359353158743360828020749618444194944938715470035131556822311027793188081824468493190830589375559417055639941301719790873809990288318569869679808096234401175446823597587634929768794642220523598802078809303998618101584504568608192582756182668910140579283502984155760168190268424626872869440219471478581350022246247860451237295187335874195322989922185775288862162657530588201751103912869106257089876882510837831041326035068777125607093469609121508728089384337538827957452279009167527974616521637772197380936561398511544886870319551142640963369021067946966849489864719855737573740921429122563030257120880729725592169445628920137001571428558350013066981355352379100384169507765529241915257456245969967914231336000178689584127081019029074565032266503247391979161775347309673887473867192086866832639827866479922249013735671308711745858063130569699818444742836923236134775782975901156688833534274624984921531800641307112745126603372456235947689747571821106007078975394954553453560550758346355576598188114154692392580022324154159411546456211081810515055769250377817007094689617049292726146165271419154083560045874590896030583169514797345676894171351981868049736962818353769026673850567218345692568000052226424223501607534738284491818867887018774783559259070460514987049731812184597614935597137320781090533724909953962603304784175467774125123279663813192560058456923624631185396670355073295695016771503665684540741533935944702654749115489193597261166712694241728027535040373571180028671917020044358086613330544536069837079163505751228013008869713166729607696246211765414775659766296561136218059327963059391646705334548048791123110848607968663832409958207444137229748763024810541266010863250305479864370730307974290983074579553550808695867046591500138617345002524153540799201929273977264116832632668199770570866339783523217736982955244696792699226615483408987757553536262275163638282735911880139212226989487043215613675282794140649484735756056114984013043393488873289098832916414519288433300021949925640349743745886443359636780961425184395853212751757009512570027768500020112198332003688200482599627556746919559068032215008678390721038137471522243876743599506704195153991739733869178323400379751671956100295427600182946853535301671878115714080228907435110822278725593864529711415038309932497139103611933875217621590961417555589655904742395979330018768810787398108388229775930351761970583112769041912429996333997369196312019590318531349357842132818317138767145772524927400313981445921396654050587512607826637509207550807952602176440111197335591933812239126928394417434459087527564786124926276299897349887413145469904448929197427590878913350653559184238100237527760117806904498377830653848115589221781042684245501673937745451528030034989848869767369857815654356854144242990571029624002344113828185126321998809201684265552007913975488798048800404428890551231218574377718915849648479094850275944597532523156113534324159629831886736404865449259746587519053768930896502164243330737915843845387209332744065807136716892610172018320426703338456846258954578668003880211616997677891920251704198922250752727349331408491938262241134434850813108901163803816787684948652816829070775293316748494587769350491007122195114978226259982383350816266934418315031454290324330363694575696639615580332358220481794957143569868347263916823613409916868396198163563177179727100110958110275288593048550775121808288059296124206427235079128236315022393365180754515512214410205150659318981366119636848512850771910269931767645757215891167835792465879065017749022605353349249715058296208558423229423020036171192605007071846607416780087615385841229294997971266093013816609500936941604257434502442408393313392805043792089825800948172049105457051192627974768695782237276569153126664514966688345118882269163620820686348736360735071320200680083123858620015526339440577824831582372694003649491516589765658166636175149824678759023584483430094042453374456933241716050824225476434533089014563954830519037731545415790144949852026510906127079791764921266304117258571205903546522430461601184647914013140167913885355482700681773853164166314489908283058758662619922748732696547833683900116645046119848551414225326248599455369842569667598680407429387576157667573316087288544612363184025158980688738277573024683489296318562241039679208061170357326212113358716467875738296714087996201714883683645481715172666913805657206062688306590232569995501613180914763603552565257873496644958095350355684049135438355137955821528725058272124757428277420312667632851469641576216507469873785026341013028347957497157152107076863134320588074709240262871122528831816281186980960826013083138832480087380359679559755047239801408812760849470381139344789909598728074230309335670880141435255693202791405588990034293576497441443431415925160138368015935209094676645167847803970583225598963439355868274168663818458952090229676966506176751331746487011622593545399757346039225263364616415544784955232417704711391717723951397934464436227656965054064604437492289715635814688967466606554397320503866327067579829414629547789092492702937741930852372286482652249106709754114323146125347336515677810884347222102841131290931895234059380414583149183081991046659881957832233280843201042739729248685239982237877408754894744752904338658905471905934182059230990113134531632963281029214281486391650312527968644774144857805513749925215265661747038876452948749437341374160344427918881041168779924583661026436797958446940136797689540833455396111635451078422050627846579890451741864933316643267604244468244080931467498140503045583235053571226748811112669345731643799298864551313072676088572287557596801991494437420191462756599136682582167059530349435767192485050741302330594155468541166286421289300917744485988676896402817733669855338243599006405710302370744262490815580348440297375903036341599513643467851182175921371175824606127851300193929042770218383943952616027759494102501315109369689571476624478292861134076064232064923729666709500198270564625358121470727947612568426960095688988780112209485066882834985378950061324809082529663967563416068263925365447641587014380544845172816454978112010617310747393926851667913419334785340872362987528004562140980245513609958516750740517978738795865346315126142316044314197255700261310645205291639455761722514468874657130592969971004219375869479286929769526017622913187283407530360566399775602040624878589529763015159520984531297998480813910202893440895660505731725613842718730820991988094353239489924826097747188798327337648622334688978939887321882831690022599136051676393788680170088199410895587903800690818718252393972534251144794299428378166736935770368552763426812389563055411626988863358412440290295471235329036293217640195092312374984901165074493778081722275559265084800442564563226391813355418916676875472594786877215010895110681402595014424210468792693664657757940959746359809047101236754914099933444721739598200176922484446262434466636361455807169983223496288929472600243508848105966101291422368088824227209046705526930147672712863070446762635915542897742218521964783443848988493834163409232163715408017113638019632144357026539477111867944348118560771926528975937242123364074316154444448516033669257987644591255223813351672263405158287039094351481990169644271169478852405704507390349749343873927941182087512717245155969725757819516827491515587586343264445059926803227698922205579378342008471034302546244051594012722110545546754573417698550321226032342031034145714927165824375772818855939463119727648454308332641882957443084502473869818563624912306855940581217188277371614105270272035979913793851415077271331720629636083560843362023637769251086201936755388150407140037388435283256173969469286502748488949931227201650897509552052049808977221559203001640825402038843492801271752573532575374875450894485284169827795949900629515100515115071611680190537370173036270030851899900539598716327409366310097969567760373280881237887073742228310130197891306609424128423470786735883760478843552605986685117687374942664176245816556985453461186529817745759927879493122824091066151631617297970954936907847170659168290887739272287346412551406457006645719292743219978987696583106636718291628959701320186956311345244125423243199537226713321420421433622581227668240469836628339581791269522901985795720128624697356544445984173659269224889933329938886132657565010781962515862812244393465797047693640505429719051094594033962544476502876364398192747767578582682702630168581980835085894992778594335361587338944946014486799878188325368449190558648340883553110524651782048726620775182478193504184637163364905598253850304723385817399398966974013393991189223741498829219234866418055311317533283863022197733700324333171950424232421070921209088823553846105727327845315606580523712621251607794819769510412098235020633895704064666991527052179106960101243322120050732697080863198319012488103507065177797464226426614400237218313745322532579008794112597034557498855949568271322700615112237096646995467960247021600262472261528347206778949318943285014164234430120889410352538458390851393581669272533122437781965087242777386904895395227878800717146105165017554580908450034179883945683735482531627132113274557594828802869073444681578805991788120386316944745215981107714072080854181604203539258866434962841126627062313693815215442525454489706841332576194492247330771021855294881210117841314597982718392890442191609435360277884272616875000768721849558106311040544137773202218565276012656724192072748280933706185180250140187302064308032802891066873323751730228691115538612670881522993735284117125784784650991340951859848744406552231018303394621414698976024820479787830948976419121293405792671851309376648788316331232008949052113911686921857500162933343015042722774003422123421162257478771126845570530164063738004856178768464969216357901429184296987761679723098166239579045608859681307348069535300629746668349005912223088463476705548365361597984516018436548022800071633538046915440071610975650440689485022567996356695532247615319048966139160178534952386518225416600676725687458530509665550304584292494879585235916595240915551817447945135357427038542119142986530775477677957899846584637050213002257652459367005422616552562694299228886058436986196500056382039978884531576536227865675174532563303024284626481451155658842292213021742477817510498312033407571468833652475398083360724449366233060198712183565710720548894940747555043567078742395742826904348736245200049471681538376377207462072474438325918322516491782509816629158481803253088415473767710809981628809757485096201862583365281821285629862306972943192193729715234474819021596128393021639652786467523083715054672370168721120953002806731105510017159369897291006605815201803617105880144527208999919513668956897143293217057525718823392667996889701606420050940430089625972182011096502016503889518731081039735575349226104693998875590119132638093374481077092125771356766281058347337297531883558014112544725525711753058456223879223521222626786778305388143190013153976985990952999478453471308765615895588996269516616396146827992457940730788561144095824210114177497187775167307338635754760878832936077009099095715110180405964108231463973633794914249150528628428925985639957126588599245673004682866230262173892431685480970543654298875888148549405173873341781067982384970069278464192157276623055721751002762255943848458180259123120913006899003275366469856449346569584686113748221655839563103428742497031344245381699664059252683633034508570087339637680397762013285043818123105253325750454782994801296052698967960154628381070497674544974012618370611539563656302580068701530516291468413735151410763103594930629445607410783726488039769827864093709250921705460266850126599564170588889673785530586397509742437140604954918743208261242310322528177593989940200870969787692476647433684140994673446939379463945075602643348430426091699658657973416979326189824648320016865412493346309590043780447012002426750818180834217712749847255577333978095127792035568841601540440973794976770136625340633320241841683105273613878872324418808018474761944334748954078480915023144271074102952237293350119340285798834463566399317572490696077000577896547831078960600973739330371091018214071005958109475465056890236191066387487431527378146457760455992859768015327366498523250242831689027571288752348384948855770361171240408228282221160593226928570795818909492454606795059233735837375587034989711334884016419036147390840451814122245626929952558054399088175199813353330295269218661020394683708790154617220661431537166359338861727022422154320149956604456371309742040951882924645378795032280884505312258059891005476227924964862116309309929935673757888577539739860345754881188686424302876500223989403499129937300351195701106016527628648205808417087567730818033858619987437299188115598343746478771748962448386210830162560586928248582474223408512318838092775325171845283155797082313885177111174560240014619785680484229542754024250096619796204164391629492791763271034033947135509255925909675987798021298346946147520277006552019638262140060188795549729934795523824147344892917166100519886192066687710130325639892546812310624543210096462298329016856482292280644168428481598997656777386247651039508051690416692165337977955059750497423254394329961818070550079907941676078430876892830274187775034826100841240296331572576255249183733331268085865111549861867962218457287077565842344859037152595957864350208911302126952056869396369888067767786057670350904827495870772849187063655006591311463904318102410989781253769641292865328087409771513455084984380542434082546734693074197337787384176641445082259478269832842686182128197703148821442160896216037283574067140408749256739290010194959591825463973860938332360938652764047642076876348597662355772379641456436186058675658800782085372392848464150840596934299435436122555714192707373837181949376201151659192008959448150837724182618035148790459981337134493226837139019905319821913767621830520548962015792380352319543131704894757399929173931539623238381788224432641858070781292363688293215789799496464051755904499921348228728038231513855857162794616469734825812784062320517636316724359261277394236688043618765309039908816180283261939672157528359393636477304289276434731895263221599481920070796370853924424779418551461969505591516013038096702907438384421857892370737527073662652961449744258180658379182538177723022491581408572522633213806083825161367260754565060040905792263634227622136983329772405866834450283041734682633571804518752500422050861874209035724411500030039479508283858653308097965878844876855691032142130270005115354926160046546085332566016450909542712516418338401305326208436030600759577321507945232932015898105828448762927532207645203168175667891711915762500446245882340102776424825105179175066291310197991027273644883674753296624481309120069113138428413721041810953089927089280142078610878383769405823565264003688675007608675867911275066329183724353095583664502756863196049030400044106705769167497227496924904040148558805265278114081459884900318272502171073054005537617037271260737734743387992639543697905966973124864083498314002322499850347713351814230232501187543294512693908812757282239568125025530771728403349999990848463349956872264221082566365610752800570633890938326739307557074645535190556886067695399632953273509481383790562543818344614019897946222895387208356392801727773423380482312409903270436023204528316265182486617129506210787801620699566245898190760111788036518006785068535799766877895998167296601680423528709216579840994997749439002994702764890954309115798048653849818927423884964788053435031227458509822283683632707505220788921161916288561396503689963458397025012872892306927160080174514865707096212872423261306526896714437276712253779655204468672225425648943933206788464427814555504021267926440650108580409980992071025314052182118226994958950735505854965243356551648550994092078304036536779090912592492859267683787744705606309128873644259942486741357263273196741680778573830355992492346468201333820586202262504682409337812399730144690410726050204716245875742448265667933631366941201376895000516618177452140141224316746612179146631131991721836628443933283910440953865088816109179406049581354987517641810977803348321365886957414393314634317276987687715103420332144787969376130779735979270710193241161413120442834173889047591460866322918317869206021746674237377788822166038473159369257752952784754030913161582166268297611266407073458900729345972249132917964924496499688117362228602546812677054100073063231729406832863243716244288422886420032105712851623156712737953797862011201257790231574457574895579182769697621997617948171707842284099793805069726516659171037758594019179760014019672344855945692904861571831379025339823328971330766273696773083782911307320474240272687533152054640479124809811445185316544877430351975603196530003425281087463116613440484579504558887286587160860631877428035272011339154107811346094838707650072075241957904446074352654411726278555432897906908423391724999180782807697521866585060266829429059965581815365402726181872567638053307376470688177012577312146454611732665447477401233517263243546340091796239237006501107123023825469197238685428134819019474963364006402947307111169971830781881287888250011934589685142719363267204096339816869122616691131663355454841830292051033873292786619340047044966150895284467672786841684979209944598829260806680368129431476459698439460934507978844455067439554790596226945253683512443732545932889646267398145555610128557621088665223941896902785874879477002128190430250563764875808211267803585147844988080274077249303925652194583915170731782841966163235685276426179866424637425530052604841313772485967318339129259946643692956798368433582392204712291655280711171891136009630813722590013875386859945670153812411747335201999449270423596196122232659264226806396425851256638942728393577825326437648447791721776491813424066156345717797415068803724556666081821672489718863595047084981940906515125504596414602755508643365097928162530777821767849229262192929836734669703051190220961183011547054003750432882839909214497073131938219243377223856520078167718408488968494743826088841935829484003700592499160276024517946874109732261636961168036976701778564350767960525752089554851470062306780629623940361939911146985754628440456874040879471479680482694638704112905637451379768088651422479891549014690592828257444695888516823806995719547334485395436845859916694922438632058737794998080463577979666706181485436995513703219005012979450999182683494604949516613433346324208059605294994848814206897636246635114881837664120135122156760578349124904389752834997571553975891309416765586342839337619880566840525618200086119865529439834246105252019424433169462313740717642258386584239786059355473253626201950852677932653516790407225169378886836751645568326661705311901133371385630500446012569292872461016206504229811285891519815326766804876571217355375559155611118308147795568953113413385977194301715344709908911233285907883260441995741977140796882926094903098173220368216359396394874774970529736056890365444149580042896786043257612309277701644796968698947931960618175446730801496615789773698835502431853373120530234222146558726429257962300953755600744334046113298335079801321174020536666292409759878958009524638749121611465739645182492911091336208576186592395121548796161433343133580767272424777238273693598546162186604610993829151151210509806934625905601846126746325980091866241183631394624744805603168475211243936635647977701351237007044831422003493584334856260276589315138519231778046080141597333299459352453759118416200841083789847974287858501871320031324211551569923971407977549101091808330257468893166069178032979085107999956352598263167585215756621889835087823440804272450281599020359758482329192977621878254512016334056624376060447143422367831364085897206042518622979298533911415242975685756513076501789290838955675692352085526878130682571407424325852956951045151978235360106402632798286536168529092590146226104614518575706821202872501160893229885466103987067634416526395296762004925907591229758894751962564600181821520150941916350556526610271225945986039005219915137914732106231442987035739923725162149166317091627396680728209398671105263440041851397671941988258320030021643574851783689528200328211642441545594849568720771381886164900694757378972996384223987369380708459863239561145930985290447403874965153636286190521946527636222799161292350425052157392653296549480387530052119053824410664536948999463868560585633107964240362389204036312344878440020422905884111909306128140070360714969723386285654646708782777711981082844272529709391401095645148915198471291802616149811298099236690591549673690300103751569752425741484585825427405209944753614183245911377613153398611406855587776828495870798620291817473250212739678240221729040868232430226807864856331992268047625726189732123849784452289713653962827594277332832607427197704000873591070563284284414567066608275166978647417148697945111501737053704920753278044838716421823699870373173293960132539822769408179401967100222489672425721243817693911609505522589332217997715908297691262061837073098151466833689207593051571973739209782320724431812375688582477211462915426041792812944553098032138961712374145489864449705435973295554567321911903755033094490979973974300445527491220317965384496265318089433788350876635132032159033772978460225185910860605216646764141123499812960623484372620493639204128912417088698796863507272499794816941856261919096860289684970741251284585231343856473995480418597081881003025212174454561534266303040825565702384922803448558226851720865724487225174285846458693768468436404345597548494500955313058237004372798478292172107831852399804838845863554540758618470279079531505656482860670589347084574207995607030497998322138800987428276367276663934923327437175173555775533594686704184904492406840326959910069275245797008206115367113714217515135256141204678318652541586856227460644484971583801850822278669972147702989366235837493317993263129362870440730282282798180869240639664965742718714925469181599882347866145501539022030314097125145642563350778156143158719601913098163648529889405436301269794131212407122964942961787744370872646416284912519962285354035096807793269804848800782054506815327867252284205321696846270904397141383915203282710702413041812996532533916944584988251795756192704191520419953294496198028621220167657471469547897140997417638489838578442810444304703106907247613634080341319838912961177156225183439134801073285683177464290041672604579603213701595792158643339715054266225260519488460951701711968624221081433143656700530953333234595316191089628168067320775919320269190607175762757879965206384632073433000877268457755418475599068701598449667998324809305696781655779080386819100876466202870149044621131298796893961308135832633950556176900264152253086617026589548009627578965317586261678297645997371760165068688702367175819698178580516849091828447238710749028038420443561142490333537122035997545790893640116640285906154415746350180999125423624127222345378425777382811651505320944938868701234146941805847583441081700139127269834474392625468016454939046623804452638946811412806141236208373601826540716056335398821119831746958295964605052267149888307176967913397690687065813941686981786370401532351476888558055786826407630504157175756097802945232516874962802288986776059013661656790219374330942524142666929095118006792859887149834293812875027872203720751325410860536904454620469884995652066373059511358715860187964619277361627884929208846308314002932554161511386803749116378526230616322467071589750121716138018020986464676660993700491181500328747928114108867036378829039596727468895382628393353033108012172454132812715633249083282600720713047009548633808392881752715767652964682213860203079152428040816592617141639080948368197117354622572248679854732275741425667707044519294070341115921115815184212447774842149094374272073361407856494516536331207916089223482059434892220287613696588129581016255420036039564409794211969942673293462566285407100766432141454103605979214332340561916206221026421636479363986847017711653892030876271804378079680299871389243661568466933438173489927725042941704767242893785839092782476146319787147482034390523955948010935340741839531128960471975481349320662805643382415734327859232077279592435868484037970763166403732298139124860873267480784884301461559549698201493063469625674167992324522465363637506322948887233127950234353558094797414879822263971872455994053691207073185634199562077181576355482634553493075003842607645361165794377342637432691171493717555411906051300359855180084128664172323746587029077807602844659029524579112552717909121652813599036910880194358778049959477294225034200413687229396884347721033090907526611915764799389768577379145186967345038024267121392573047213966805893653196121624345138359251892257522277799494119849517987492352391712599039085955808327101383551572122504126388376593691753802847891382279288644980675183115385005245200796859034021200803434034977799370181184924590038805808278552029264573054438768543739533124346581057896139166241223010318607809775645282716538820198014089931924583652414759698713163408653009748193639451269345302988294120457982903559116504137033449250947823171331598388503524036240122648252305613428032690206631966026656747835098231309590214726181435613367563197494114948404763146942573476731155958268791088373169070233993217282527344948556715580635511277843893107054682414955636165401848972040309719934078257092072232102522096056810444975280600134258481051091932676684802432494786424370781511701284509867617628749097896644563573942234884815417672509709052894435971950490153134224692744410655122333361328647268289929974812883670985310332128880016282753373824871490462133403677243886125413291389250583816580258126549448924605178991856720692516905465484703358871728682014198351541349757295361469870732299950248238401744348181338577561051289928170985006068919125569682620799053820749234248453699696451292603215834377863419824588780460728015135567911199521983209538332227648882233741295754800926987260438013458929672306377200860779594646443099105529261170686168924422854082686404335644172853589789813482353145299852037897970827806817500213456580161592727134694529018791880409448952260437159321786723012964814756358493985550757321760487056497517645365003311832990317882546975874752670716376813253706190354989663942255677686147623055114425676021810750826313148232423845248577219275697077754508600580874129994204529453494092466743575197873449774094979659656476059048954669674009250241214500249871224906406190549456599634102434572793865745623449594159541132623125386177538381971155106624655212109989878727543866757905748868304726476014766809871856840186074590313469285767648347505256405403443040999737758991695538065121985762058980697969264408245555363905740939756177742265662227821985910741859471368396998871806670811680431551095302610540155003879495887338024315356439019679192919008134670907338608551998351666145898958918394409280634631090886246463334160727089441954986987439285656110971098271583977559199073428911722753123518108602301087114729898702119428561344575374473528202460872292291200784479466733672751406005443212109630443452141210338184996947048003597597142763209237390696755109843962652673339323750460219790479754149881854168194182336725679009755718185872526761340743778831320314308175326675568317035571942080896327288871942996859792202693243901497467747489644463233288330496128127911964931128228934554341406827292467525200616934225157871638599930259051904078854117263982215823048976370546240586017686960548614105570613613184285725092803134424766796589363943627110004565695791132623021730837674698634396074612873778499625455419266980516005582636098813589114070300760655671607401699499687950713699578586673170035160351368456913373861447508529856795870644301094965239544371571897512896036953789344790320695714889726545548203464227098871777108854637234712816662778626659114305774519806784802864424959224372345701393180132825333835310750178355845281188029747329458764060731400261313074450342327851112174529780834846803434148799201944504430369159419654219725597700583564302971911243882404948913200103377906070470531180270317720742413158646599833092388755908569341955162273441092245389864816587922303583243680667680728689418592486513182012795481929485885686687265443579779312702222128790923461783630593974926662151855251461523741869485620157755559260992132322886991236381554888681191846115696121052948179986623324420657543571384710016277568444394172932861044907832631778417791772787734767759164305228598919663266179510315932564701964904400636184204008918446434767752233940333233162781348901847025257240008321508849424255132857573481821147361235240666243381723897343944538940181088392585860584758117978438512102643011486847391039837987259178521012191109691154294029788353912983234036738614287437278052481420530308931347635730009618786887711760782439617403174259952233176212290730589655178890854643501165682969234418025715073098148337630498535837547982856999306381389723082543461229899192948349994146590811232774759536545944201447570483405278154499222594223045177761129053250904485769526903017576939440706724442853470379859929186413232391927848988556694604374186667254394534159871288142597274879632711928875620602197199913372417193946636628030294655335334043634057443241431875343225625223898683141315336366882594696648311245346571607038086627840580638952035773971361002954686243390442484896206653589681021540458264566061827964649424632211489942296576803082763271612924732344968684381806756365374258105674802707670875274149068194319555849998209424684637587132669082867759657752149012314233504414309800675659561748504774909672222907639478975333202806652424575208788549572595366286846775232270034985473938039096275771960585997469739440639998062011982983205179007316772028423965674834928469834813910376218293500650336476570761823252944509696416325366590743696101354533767561390017871557206854647459446441040391938707134580698199393482330899971146279032375350797656301540747770454762741010518282374079572511627770828628168976802322204760290318791330191258980193719590267997616188569722983830683721699474435025918098936445395770413121854902293731410757615122879382207623909505346914939200102861462635924162239013236335537524729414331846947450806043370199692807858220785990567820663094120506145551158108260694606707457748570453187276186245375948884879136202592691085269749407725561320562719852894094833034479926557580231226796466934698166559369882713336431464387954862054614667849969539106025535089818077810178613536589501026576439227027970678107843049854837780777780951014733405946926547190877507451731165424834937909616626363535158202332576276508599321255807589051813339220774519117695134888345557635712332035576646795299138992324206486881223963279606468952826799529474961431124305655618618047339946286452502875452780838941689109425945191377852328260054833869226021856830360639439915839746569881261937537576366191320521539332466798738868211917128417675921500038231989990477688519835096322294095814578938175046334033525902205338125090603260204278066396907422296685233245258673481574215912162228224918837556612690182461996259829599974582074857893576641736338606277949785351322049331324495439670867500628688714162379203998878351315418889249316074212562607489268279415254124424092418023856056599260969362507422047233075785768925801393678968099503635025074281666183764810861091926946537058928555850558510180461208904867872004024997786672236609818269480903958209442361938267440357280086250785033565276935022321920383207685908988423608554151116685311447481693826716121604234169850986566051919640468654109874459884248280534444277606082404052684258497329634428739595896370946368041402353861138449263436134678914530337842543429341561242333253702759044831795569274292307461006364413600146576483053074563157901818728323874275641076954927075954157507173666647488615153104659716432048349554564673593892004455233374264539645141956868213626136256657170600704326069196353013723745069373172325220077743991085199788293971852705165915519266588371516813768116685689768577872156861717701017889929664162532456302546850621610677860306433621506140717398577409682739590745263438997581555024106614679651871569375861454539387085989271112549961371463820039514971931945104870298553501759275789411240756366468408112245881763056352745955602845295492445498528686813051219658101748991008882415666831443107806223793557837959450497668877573380010449879073998819376273989411447408451190366878315950958892856805107003678852275439797677115992230560305895451751373931908822530435385666634685032236998730637515057284168177684890763141544720426963025564244535448278132614434202014174545638081309070585533992948416529093761162070593879576130040533519281546089347539173581661180345438957693601114643403064536707859285955529254228686166462835376039952601975400827695447220019856497189553932239248307492836097042680372190990842243130762260277049500958027334318060758481566504157544291834330615199120211707314977313369292392642936346951384891643308074152173756396399546647749309096915172622772453125695005599058088661319049646374014613547315821087566476149031560279790123670681880370847911856823251942848167784744231844594611580430244821480420524470327598096676720528791133553638677303833542830173184938347445540969671292431169715708683031284851390594034197036892881537646906731403892079010042441343547156381266786983193717351157854635599073503644038222856241407244883185717695453945787413409005192585390293029226515047487565136943609641172080808838535438610477017195971952897009215652457700567231549337958054083147314533488098237549142532421646633128038246109762798352307939203118120814545228039157854998023193541966420370926803533858784497273944802305424324515143495975591486302618189940726977807832208463147057110621442149433455265739353203020274009995555082926292826587647658413213857665442983774013072242336994982238967916540817937573554982680446186111621077012293669184573892776219129576244088784275460176798741135274877002021455767387536678148583123896386170577431954108560774939490595270270094901866665697436574399039300936093382391576015353394971093276655675417519762592784028504871918857774631964395832173156435507634149476814498439560920720423705544042416702332146890668413808288922650728866075975209017746029964307067162497461504486974139371486456926055899536643241767532308208927411779329692215292571992647368694851160135481330477621529858928121300678164600494900037958738363810655929011933436417323534701421615989815206815034286920205682885470764206581071685764299783007232805849670254695777078976637417615147127299543640661236312531616688759907428401088615931964226813359587375085747943333129295629440595460079142726996756227298755163183398890525546789980794371351544888828580873265719706058980583904698887847351012679840895454436480644844286565363416617164353399421504757070045546130272360709648457089577196737525322805135146307082223483047412365543749256019498957880743092655386203174882607419496508160449266352510666643793113443028612758663124611676571653335862578811912589030345150720656012983797417670946523178449854304710492104675301841951095726793082057992473623277136917587026598156753114290942941817325825296147186270642275708735358858096280072689709512627658926398328262307309310999871250745965803289998879132157470453182951822055176815265243858873021819609964553970218987566526487020488236898809119723967755253323586698083231985162296002721039602000065211001036176681191595165931588782990968032857702121068711847321084865500668625464562971048154362150239344535944660977563096193900470419218845880282231386746709651061352463832143998358410674081832005416883805349104901690597480575248274215700545762514207830288241864552120245358526262295836477207534529841903128512072836674238311232197126801475537371428100481739746319223990894789332696639839678380737883206772661834775546247305962412541457779832453421205338974381538917035388840880732691777131782830813476666290569227276789799426999978538723040814340607088544057213624221325137934151453150801255273078097950422431569968002970450238474049050593967573916447115269866197727911595498745100790369580579826434111391657215759033227888441914298729238191109027544665893971375404321627635718471994614347936550197600694499019696782732225390497674215402012692998745647446864783759127780373927089115855175765305915445210939304046531033894521073169015956553625237051161060553640692735619799971405174905471670478148369407514049848003811722706430968195668296571334938145239329462622506158055732621647199813983964965956838981880670564784141508568347156037035461935539016468060495720650662654931664666790265010073335730992999257211734722897116889985430811938611723642794980672644390930221091114289674202082238362172351943876880973731662062135616607674185012216857341628709047362862267630208349819261959214547257183062387634214132714569579281534496776345178732062742060814079494763919724171705789580918156898776819834560131866566266041252415834799783318996548452140246723126347851294204735186883120036237538937946251480652853090257407928982722882954279808436214298282517047248248794547865749042224121713114548680306853073900911088952525594704134983612045880637250960304654310321433347200450825239993970800369646863669624365716041398289859455214196137176268469741614055993665030713751465414227789303963643949884466765162707843634423776003533857291371611619631487587789891724798949010543753231768253168926519660934922388349659413770455536759771833243773989489165220842122414485870433726790321536897524675365303367007966271438202803981046967901981676172578703150998361664610664415216313028076378962460712116183686188454519468455581158170464788860601972452334368814623397396927782529520970537904606764748851039209897984140679224447690162728950883441993281732644079127370346986953298776508441706273015051400404178781459512646585165026522390067753720889514617273339788493921940258433347995010441847290972417096929610700139183222789445086199829200160559466938394927181490165484205363267714923026110158941518527981909629707566189480070994586998355829118198524819020483883845866012838065121414396057395823937210962584234020078635965161563542151282370334556737504150575093973904560735591910384549373681577939318017532303121666508972733056026752183923238216895846398946430724373233089453061548346563292051510205765927905658882038554136906739735042369305828535421391276435529623914966343349295100776639919562636243148432717799024884624004720708996420460162248812482938696354803595076514213597351338921739045285646114828002949210909810506321799903269797251805562774440319555569284400702641870012709380913215173342262260998593982835226564964988449402721163547181729518229501704069838637645610364079961395056580589399255216795773739745699910276326575207918914846456010451318534618344974365102810254775741525156488260229583534386562812984547199809570064708845300484047183753957835419462963225677790188722114535733324219357699732333327809304726494747491719554717790791181175036796318769844488073453680246579856214334893401663649647449688039612871573338218343625645170111483860761544568002284007337699813374551535052252418413447064898772394826823717636845255960992367601699559519735357891115792313636659505155673307410096461807007124280227193803661889453769421798380215061689222053370229036327749282589093770466932515259306817973678015793103269108765177751810564373326491575351630417218857942548301792093668233613940511438218292017827386275875220145832862831096597939931176739020514256701390604114622535941238690120443008972779316274239719468198352633814403484647977931406599801677506706483266287836958798776140191711326376062885999082365145344495791556601891671171427500114860517721743109819663961871333241605306490240672905647192681523786874383668891664403902791167999857571285191700247326261026895050499168999834108272251926146649179251314092048589015518266619886205215937595752801904000211568844933087787031020327818105751190568542030137644365933312238350391237520123513563929002121768262937537315227621569968393269367038985516593359394196554586874396457214273356789851281458464911510368146929823990526742251857907921384795452271633768261019822597027840596232070153037155649302693628521068079608402355128181531642219657963020307102830503141019730692990655222280217052469135857292026893721057310176566422099886959318434281622020379682540210336869052408811575273913570886225192517763693837552989384107839466715898661361807714577522311698672443487269204293676283196878491730504884710495175252663892075547126940971747177487007650428206134662102634527257779057917566447938568589229133860333854986454261822135750647872806657032538782412002410192914368414387863804325183816137169661295079113405025153597952557345268548066422787748781787772798568666285984986878609354117587741029398272143226888951271647450252111221349373149872337122285282081681401204015097028864962180900720630492837455754067680300268253010551999506353635848438612760957413809565948963945756221609662791711537523948126829181196448836341787415293132877607556138401887915303522628163567612910588216922465266096717634852484633174959024782344035475727442743004618258495226083543117923554571800787832909981556794932336277610956783323040589006262374479130784521990912915830381516687475669132985726450336691979446937010782338902450590788265351937339514646060510927879633980108317614507418656218659126620790662864853419893172303464527024955473813933115977154522678738699177427524517756154784950567098010198676237925885190974941774357125772107868850279576221164325816324400401149183178660338875860969716429965259187197591060351127230178025803947969242871308291412210810255284093190078270330350324361415638902527310635839589876165015878062089337612619606410497427113294946351531263554080787036701353982626881724092027333296101727880803168026392727703573601383777950283252626721537525772624247283372381144228568354659753431751921702634446295418327999197286714071185644108524854343058701141743734001739035587132972085913654347905428763055676875508124525126157804954528848843381528294805634944679699148254589428115746893009755542679606979635158504016832934736965505648437276829039764037080336034404972981468866328380547131737708536660911563684377184612663755346597664745189122201424658972275252118793199671223300643649648006717948658447423821165388582682760441931449767797048387181624071998801203314143471824643152223903552332178350377558754387771774254954923627139080984039866229813355930616228906271613309802686758596559111792583811124743622324624778991691368457114074898715368697854880329814181365919583752105885504573173835938772598368855035705577883797875021484414361500588569104663440692237091922402941903601062481928838273143503658944543201915464221196737441714744035194255698791787108251293538949453777329670098614526920374552281044730729842885287846402159159915076634049385506830831806343040031731419686360878353549683404144634262758662641081798930193819069239078538516021393178902003973534459681595199617654206199926056425996637040483839077903609661068476538424630599069575656962744272446949345363880640511403860742845270653050788254338586781083695750654495153188747829548695959174340637838351556025744587906582485657084991835494887074914677864350958231848473491693148581362801221638039988618074994455223533139205221129698554139892097598257716232385735817739618326964665448261269682106118240857752016207583586240367353292889882929382907749263025211831658654595625337368147852184200522247147465253615220442258528694641009708258983020507474040625497011630106569264876343173252859752480835919384335615611194331631235557427768579017592243274152305380174130005506040549294190370682175759846201851145208657241461788120408976648083435619863780668280936828429170897066978155087537780248359019378601503185450599513765669202734917607782235400603849739492960878249602359413792515218476991600897559846341867420877058880089775263409440359464182053023787478157031629794730200104708666156369661432328693221356467988454672700615936267702041808626638591603963016046858958886532898761041769230438301443931397584781376421084197799914023475512161837283591964408046114868750001341601502912556984804954036504746694602128722875357239115235584969027083303149387897666016861244693859611673761976439756763884692097089997431581944300714808327454081125161020085488292689985334688531217946508095006004873295873954152808911209310119636226151837328161345028919936891201380062026526702039428506050813194169752207231208843844675902383742320272767676554503904444428112619145861960274649747762498062589748599872155331085285518109443480357830877567352615849346417107059628166775260145280851479270870907694070321369474699645078974045489186062621069044366320627801047617079271629093577627294594257714415013978077430394023029568174779258013252802766264084417686055087990473013935190901057796127726082724194498916553385308407762829727681032135975596262992498183844456372440260798631553646036290880723808205919235731667853059848635026423143706225525776752339845881686949244549024647985217918332284287508060707031807676975853428672542348702652863620434120386032488012692206688128236768757802508010069057091522090944183131982351322449207464952424772737099487394282753229418044800834751382851647320183148427293892015184988859917658568003011555632751679928122671037204968209468822242845773121205508691479871187345389359792951064059373214506716438054971647082005562500623667434509738304671596265398532705130588349791810699678153251437716904229465582904417296802769746960936025356679966858110744910717794577840401342448726162434653062485475639218005571138312022901882138290470407853427854703121911346261789979193630583433664097418332804331865843001954180780970433261248084979086095833118236490756259390530803769259371669468939787809890413229817229500459217108909279931567502844132145680229141364232014689788796475278261986299137763730296409440488800500085755561705480291875390246365287267193474006766450181953085394508535978373688389930197035699955444051110443062379860423384400079127757145221409902000390496994730790592198277673046123639713032872022717970763557759492825712166461408753980194418725155903312947291251025667818597651449342153154734128329841952691868439539638394450327472593679456095675994873578294549853536761909846751997698925039973484337132946814879054787677866437688103202011085755662623069668291310758715511616693050593349311993279989314335795153091478260191730541711744082434149287036505597296313567712540426361871763774902734022275045677290797133572230435500209451959417508745072746338073432032985241645990675822365669085263673829358310924944940950435501058313802437165353607720050781947158293454273515096591966970469364236606282290411798528435965841294385726307427835468327630479331808906680919014253873793165429113052184967171254680589844998377532573800107804633409066419642611842943536647724369713994438272390241219204164348110778005749010122556686100606657686746498283538139916705655424683135037791758246064864779341219160021419844516889249762337980206926730888069388718111324426805262616598113378982608037676791757567684070586670554594390914840810033748917336454462351618353114162468177914873552778789357366975753240034305044825120322443882405226098109671175590371335951425175838176264751248932054442579015385999846020950903438942915373970196102905731889560696858452935798021762749680549010895385218173777994780656904916448044462794656546518002225307960097195616801002081568649306824440419332843514836320282192847940343960940109088734289271944317406222600404240320590007187347545252746363629638479737159713829022503641489088723075233916526678047329128783142602504324918493921417964972917426482787003017204187014242417676673739397035684356178828389702472127138617831820873692680117994598588463918946654439107945104726261744815936384894597224805785781856802061148341266997395969438413456091999449480117235026887078161688349684128468949959371003722344111572383287217992416886067232695377126695517801430150335307874499277897669482766932195009421816822797455011438306128859578128220950004465883126122236679511042985403050420606885550755084466945440396319771282877862289079418216881213998973997235708414800768320830575429142299834880042353220173973120835029300227451713783046667293147801836006464687644748933024080396874428720447969316442448306962878213042992283605518471989955261981749845843130920399959310600614611893595664901687903962612151687126457586647377029185779190451071283332118454948461038648944454730301656491934324870796737777326950488581179784293597284022358742421884467344743055535356388817202026897622172802899105966052203766634551913485131644731359865267911655312517680653042406384062567489252231155734604627269565156283972083154077430063929522632012831538499205862842950840483655384606565595385648331856005892161482832853842691719268126518473779897670862517839917146197172512728636837513738996486600927435355049337308141676537592835809970504253067269843035352197471368225880073578616501012287208961385397023667096774795787022523928356687096553348600250539556102428035535611102319905149408460800871987530222129221778262425141603634318779230022983758672968252383955276881468107232600034889799627586014515388757741472882796473935278970398625149502963348438542937719805685486874735090511478525316298456375431225864066733924285824014714101527899045611366335735254522731015629072645100488415562236928842655203742536158743256318655856083639036557673186945580717415748168651384334104891865054678410920911901240263520601289544661576543243737722093190766996749702481389272345978698959190807258067452736792028933628412678395021802158660457555869442887953332816826801492762899024224001562583294226326271935556223409237892394380747442023910523187928838748055193293853834487734546124182344225740106650237338359016853355268169078034593435345728899105435899186579785408053536286094730673167152979048882691745412665887892329505205035140297403715200650094180556351912434879364456328648734618846525359307028137004214104920290740850564685786151424346751510572604322058942576754961014158116094492129686813399717681232573360263511037118709620332112323454169546193629797668437975800446696590409305253132958765766781823128461568677857854358984980617547719774565058443873361720054121942098114010997902982173597269404667064764180007356835879779582874517709259710266943872623859289452118395108638640146408695432087368059805332716149451942510725837958422525536041269277712377531885322200162781890129290456733222047909364517061232627760211188515509810159595006450168471457972113173746501550452372820404387908074727574696023038690022416191113871147318510297582464627173458415846931787994185302100841709419794086502114550138847881801801815503297744542702490786866230149180384729062845800963565221466896999782096657026014549029986661399711124891188450411391558762106435878756204002072300320273537234916486404830382952482793659039228461769550678777337169466077119092167185055800274139122581442445458079594284059201909025662998692092564678845882288982171972229471975557047263676526047425144075872819297970502908870413409682033322225087816646298275544940328890055086219615480085166351986194380981776909190025054908489720175407083756108918932755515847785938917848074374428310622821769814695895518741902513196735114403276235119295185915528819064084539644980801846581221474319611518528325283481096005338649157345901595896170384105156596407064763054274140175507040245404601409435176575365535225441502320957338167722477867844397478227393305742186425235604047594864085993492669074345031839615836383339292607984916180431592737619147105542313346657878182482470396126447724846660692663590524692585307192914490892458429078651704016275120036802327614349680143986835594298216925690579418829272543978586554335070798478309703197215987058630884793907379539370011109556708235451467664837302458183323302595577628880386743634914452057335085485068439470928169802338151989997061123409088917213178192679506976531177348517811004683752657038687433833796899568548353325964612363835794431865725503852514676740501617221091304110534532214378924792386286109243874004605288691169485370103802153475507939413001921713387284688366248174563700647744041715006603933696622335682433548103214245320007036433025289376649446680148634738658997063143935671696735928090854470907490615125443619970362442709672261918957035079329181641479372417645608808320691783169863166885191657654904949310137991395569745666858059788572077566558596496583388735939369923669615130587709394433399365413364662149585978520853803930330106349799753384423589145858798793829967185086456782920485019102052833838413168017279853654770561884871282266520497158277685121005581049312480051872056101182815593821066726019105988192579863783231040790948473401683179913443837898051452601250245150970678738784677432157435444077026973485088137302530249369374184593587299788472593163350158836574456493480134713226195298460737855068484032084676043978861848930784853336860596306968711229434384217450061797315224196155396960108154312622877985375265405032974335111821194989238611979948659903162835880812788202404764696246185168394534515199299942583293827079845633115020337897328674028479181815475535207963165530370534561518778965258843887656941309580272511440298166305719961389547635479079723965245714846634118724162768647866432449514055675167248361594263347045983379221179300411231358204453066265150969223726714231301968008036393860281058212523082403066233118796350473862576929137598013273541177904316890793529064787326329879160171670908918866233434513713118106500372150975397676596152853011986975908777965885981171154189150461397872702456605699764776771559460015241648442959521888450843205521775717402568941728373198444430396519799205691973727138134416210061441663147591378372080787282427602656216268360047011899485207607730168534881739582371194079752494160712506894463972248166224669878478837682578059621936281145441355059585002359230616799427535127717307176094079064814478052742439481544844727927531272198627632257556045492028537123495265247436861403731211119288539506173283279787191799894845773917019739587755394354616978697896395506926663333575513106663689069298786525984179987051656967266897414362941606474347316163863097255553884460651332859434630400215882375566263843160631782095005546436408888365501195513517129780186031844036574740166041029400243317256008729121231051281481112672489426953612173001602053330419198239743452835075388236120525457454970749149734476872204515581922984575955113775016722358917597500955209391843886151792766690414457489387542353513005235554604162182995938281758314887714309627055588812155428596941429087244277079276773579135153310673629054973678321662298101329614748770715658332594354400242514743047358106517760702291395319263070291156257713080581765783256846665901138524959004145344579537847512417521594919781263958832948878305744615765866704561643904682292442726756121373130550110138222806351614129912706430084488454482227474889421083158768596461088865461550378334961874374254990523176713313333616597908460635108200786286238654984195390522705199535934191041571267874835284883425760142266260776531678810444538781095843381697090520748922124301507044331483089248867871139441934604766847294054581699193938172087378234084110222811795401026520564150656381976895777518280350843816037374383741938169623247136282277948207203113048953900893754630324426813786655086935993463198439005496226498107300358458118283634264334747434652361619430867259111587049774737005250482164155149203325083814374931780292910110570346218777378179202719723937310363653523584632583131103148106508598693458338539397228746084211478781006518483342938595073599801757546644061613285899480818085949073099351141925955300238475530870083205641252617731360925303979598728572631298758408043111039842079511877709684814452428422545122416022794621559286582178230647989515498583755117862248100203046426770186186874937194800373129906421038566088971608532472251094138603113660007842299192800568944950834423263819492601164369078109894964247247350871956881336565209639920592459518305434948038476384883810418884756987992881097448494467129477222274133758968809748674009518934804486020326753132340372635534531030675975605027630008878417084592046501171876894008329254767196742547767141426145198485734207857355554130309218055854053405241486095019800247943852580707776519553459353751993664843749320072742920546378079023532880789555515874945905708427762977672266630343782886599270870896370638434169042015166360267378728711805352467267710685061852208618150552852966435060052627854847236985024759759573769538808995991067090363649789717512708624021093285621626115795118076173155627406519118543131989624761301049499537155411579677009270316550772484940619820467624814837364879544962347414621765119950525128745413305743634484394669387193332177220180606407446627503465976917511901728273690332552233824347211938318363723011388151786199567967775340492904746201895428413332837100116555808466159011401457386561790474437486713722585902372408699862756472411914383786107244899073575169312935244277883922768007048137087758018425434214814185254697860394120110907805512166595729526806251279141615594537068293157941065571169659481799095709799929604825537071950021870671173723586823664115198857516887276146066850354568440184591295653767816055471735906629017027177874504486672224466452195111244247453432329433945145420608767001371846964924834828485990225489672101894935937278033809939352767239548086165707222418010280684494302796842282770492479303383122192583201264558321044320444134060616416590579883111064933414357280175855434566433178308639517541375325340128498276351928202114938176736369295410047075781192404176692594181815604581659675900269994245705039053895576908198736261769997434513336019601073088263745202904844182287623467917054443800916017473407413864222147879807414811677736108076040322807629537727516928952741635533387314570679054273448927486441103010162481633643347726854426042261490950809470571520384839494231917049922488141813117372241796359244963736012191320513219024708811162457434528359665025544620409832961536276195654011158757706781809303022892099929668602261944043376411316307699520922805151641903899228656037033572618220336154385162508663352565175741073089249364165397289753289955352125741496790872507567919479040924339381584768810698265587935934711745370963032080453297539973571534916615815806242203584913637866051822520834642430453463118666399505176853069415830780709822012683984914955258988953341036318712874016421115430231711644293948732130622723968732145590014681092551917149487467556498225842671947527357744495330589234247170419585396645520376847734532275345359678843707018904648357979320994032325954463641492052497747848668002466480610969693425802861928975026243724665788106426595537728118879527842907625973946324978177924049178098502250792020837124669153499559121486665653067473600974363084909907395938932157956907061163330209013809888878034864655885781761535753768455027068026553695226281210772061764766208411869517140354054248752960067138852078055753207845876299817374310044594460154081903022793101596487223276536051927966166656152597536301253949657395182694768137384648696825911944638481535244310565189671079644041500902007882787511759068540006556497623969545764767411306728875232618552290831140088976738845448321753524734704484423274167839463305638260373650938423765846825475944162638366145242312522854757227596571859072874944493306731969818311602446945852913932918202343432900789143519503464640767482564810619046246847598931478146926618241297561595906715489469600207324390868109539041843820820603609204396385316505405348401926717153866548386705877122536166354715629318132114143988407300891042576471652175585387297301299571503703799370637253072841990539082570521552027099246968333333580751299673794980954365550373244276023236351669167767047348770057563704768215396911207846765798783481252044951968653170005559124184875922223272595433393784856746125184071176643933707639700171820434587979718184853787441618683271645555734535882624477638831813203584862450158225445082123609017182983509277018078085503202721501161520982576617112523105500042929313511872978183448702807492444023102314215933557432092952988244800646353291058917242276851727386851780997447251623447415566189506115737955296676397981260484786715073503502452901891956774756999397386178760994482640473710781002040136145658569410569086612619775504642099884901241413812053469323159294245925071632351193340614414389234793163762933966306436051320150982046022961954395500860892437455048936365245742763375025637198297210662506417062533223255057371121193158907313778781517644713436660991035473283068479877049837707412409341612691440611482277838398422523747100016864890246671414670540130351633724757259099232174841247624854439274732342329958463776844484130128872254648399882072586897661137747410014342332406210039109930335051076322325582863459629228439669342900448107180229899877661979899456645599576463580642246842176547426478331257832359891241919003586410591870344589382091484736567124680261203473734034377732232907384537296956545014186996721073595439431202815243724758586697132101820175886298968925768715784591150823061600315669767427058294835422593642815474607005691668006881832492501795762981670840510654840383109285575336503980161969891991723330326880973638506757165773142331199023410149593023143299689563806786309987035083482551465429396216726846667650481798538603853010228598137617581612599740055457890986021401948898740969877061199460718573117764838642738031701968476071552918833256237273885391536286066184851124489985192138249684053164930716809010733970463829490105919086310529482188300828354621287304538302901812752351968501135246910452160987330375022078003433798178571813171291150468305010490172042076177953612400640680993654538844355000823494649566818219491063491972526556864864032330278209077969204579117453610133526505571190463261180547253008392945704341022726726809317258432100082385556969831659628536883202959709691916574743931946204764896187925650598718042955767157415221257685819348416919332614979099355069869119323077396818443847996985344231093535983419986289127128344812095252064145119371779277105799556138057547196593933680332648126994892091809298378618806803415935942861774597749577522676583061766936332615315405326335439871571162010599717620245622560370771237496946135189020023798108977928903572559993138846657606682394602139602754843934296045056148479565606275916067205911956518822955715797825971153166554143603119180426358905075897828417146473109226082966381844248066586182583319404276704228330031562118347921907560226024542875916518457377692286425249118037492783984208440299825918429891009920941933327408470187679810008684256653438296623799383224476382992194323031714651340219428992827094560326327300498387618467084280709510479188070966977809555312905127249443926501845051847494433424198084849744407455835783484741636233409407139361606344667231843212439961285211427693477595492859623463567148153501193286020591256725682493774084084257111637522252292073443650041110523017773573067909334146768720433601716977899729462659912138029089224833988187688205046428016783358108990627812812935547631001102580716740726630234123776763244906894066025549631291315168396464399839848954438312674650111353066431851926697007566707358970188330936738711344650056142099442291486214251093795746400248025911640254073763056030675794616668733098377083228719290994490710392324736299831449084426401965054810417919018902357121926680768322053572646562774620456220320231985532657137090911486698749499768679324088127337925505836458090279977032218671727660947400604485808200129144227605882060056731673155578431580789402274436676190700929248285564637760248629245830098949784774191699717380866305903746287154957663413294938877407057136552509787282331243582380137893190760470900444876371175411043344093304113192895049916710386923706899168751887491054082987164009667807192245464464608137017296534730928838510476479822237671794118291408350794086288368735979279025565894653315995792920956363635004727690912550830534173508233629972416604659089103930308419929801846582737173269825176392095318717194597943615032660237611070231178899149518333402294153495590212771651525784152804408067249908750393474077578192586149570512410824304633535196107475490849106155339237031158039388343087124089206691099277943616346733710723631100721237600103635557938599920680899995267838132618069193071199956327449570421435562920770886315234734707661430801106314135754049230555801027045053566977028927913706096734500554477108543933360010504540373874670229413506497551170977393737850226022750450720757386350105376580805501525297022268048566443630816630030379163144176657936568137014985473721193632103962295018449294028548815870844195622336681368738221218642263046426060171940122223347110565863492199090738969327652622581113545879739274729064455594418328357914403967174684673419041465783002268905738027995652919022913609413364429108307402910113761102604007704066494252420208463557510151263898790641491058575660896821486824379994895247150280141154960569925050824136886198683546671427644871849364832508448404554467361940565177205543530748670934094282308380306650576553311697045853867240223493230812980588698969069513066436998844074996602026482932549951245729398997861990876082351673733766725127318638614828767756288133288273745576246987703003741423372961785691669039684786505901917090562410560554678663095395851764360909993288828623282546934173556911673794025885714781584363313326007187590660467130801534358331549157005968144985894221667838493304393439717955835420468362213026914298935713590943000961469378478880180800376651109439556368671243471184712609467523939683701101544701371161233856119728973589779158806359038653326080388621934770900299044084082792003456583034425181502285177641691833828700141655629885673010605906936442183994565523864157140708584636915835603065851760916956407371885622909269465132862302341272842950876332933438686047518171985193556710806431921355189679721355978101569566834386481430036945249460547028357793538738141234531230806313561433082151084174046239311693794977946014467923787273108323169136218602373022324914138667752461045418046261158659080509518976659800101820089742055400567049004489393955671182151167297509037354854869680331678559333001029640559480236104556253176057828879444891579315871483396196884797095877223349560927622180084900362160041944615232841629752756064606145582223955839798631544927252463760939473893594263917500666204225373355328311374135891751254272739023209517058442126310397050129545010773162770363864208827452267167710366348833440049962049294865816943601148161424422924890299990625501855249741657096506471714567142882098595667884740550182324371031528626573130610433487942336299050485253721901941657374641290406452390186421668293782769339228671809112022688340126816343535988436930721947017910517622620110073529435485569264349036069207229504726026641452526311454601801447444389045537630213143385532090941642422841277139040062972907855642029153959962104392772668800819096232819593533747002415789742416897328937263744787958765149125978583395747139505219231995899186709319937835224244584604812761265076393709824160691412573399949181044033440548331252444533937378384855835472101644771752006568147220543485469898724144504619453232499145162050531709919641347276260740978739545839282462787330390076625787610058057254566857918510890550259030123032126632042481572316865189880067063773366311386453169673480694016525237165571704144953656613187560332341316700878903264666191874048209263549063635943136209057375580852268506661124298639315574482411660721840551192250396849462645766959312275761135827329635267337328437437803361284041447106770096733004641712122986302326013187586410290708011438832168402301328680051978822815531368370329867277188952904821322103366486380951278280353230065466419480682855260567343244291086194153000267225984416815263337296102540916376697556058684092726867622042128075626701277663413317815184564971320502753813029533498417022188707199510492909124584364310830746116180706303052580733214352263682907956711926695155367417418981476171130485137798353197913547022859657919249611679789062335502051491048625215584796069155039918686750479863214943423950502999604488240425221677180521689878960257187838722349495894024317766364821875798990845758129757013573952657201445861324457181956809464407894015521371518305088639037793523169942683053192901520288673453675063196620781627710244855461512225230456450305817191314008259250928978133186809638707762932239694270208435599774823154019404419862618974918525924158386798565624789212514011241959183009790946199768514984793175387197779833830427582008669818929051249367429505645944227508940756459325812172315269875881760906634940480223481649591050665540526541247758416470086883117337469433566911751833470990494531617822292181552595079304417182630820329087878608449048965948254692195839377155216392503331332923320405713781348449972769910274046722066861331059153079577929983750633875930931803400366331748835756516424200662499711045665651676083180423422534041521723444231504373641178989903594903525701301784098926649024135213632367684106020596633986313800249127735728545535087361470533659677107364231619075448580784480832669593795712018593342250616614189499795778746299942456963439513391550298962188983544210224935382280313695838714876711648887123775519098710850090245922508431017867166134958454248962399966703795696635318176773999933908959236926637680845390600398672303780418358383914591426752195644740938804521273790765817918200628784905481797463919471361720192140009423562896496823647191915068145127589863006901741813630888355193818548784333658779363489633387509432461194114591024498297182976883419910489835196761505366996258503557592376601470705742574055873809210513590531855332801876098594477331217066372836995507666182299318318771270574968527389739885203678244473411189516252768035982202479641128957991363866288848447938823866213771014091093883657282185727167327919322343201797617799621077308595803368443043375505679349401587464671754844242966908708480866481697585760673546484075770433464535016964419550308521479002530841633627414933897478814427508889760309435475341472810464253728799441565610428273243133231786712829515300940645022538215300692780941174358459687724601456314425741600150651952028823985502562831707175210593329890278411826844924508650660142687611466312793113776918135955585971878675349851915307867734964757934509523879720970127968856847966119886536811628909624603378294041801901640636640931580840892491744911006582902332285372284019440128775665586603752187164707228496962635454642516600779208992986784797567385687385560666321269633106089235134972909659364992190888728409931791062299075028050222079198354171482882577370370499204197452484362053520715858458529203614034816270190025934976694259275351797367595941428220512524791251426332889101486369994292651386786976432748389927102547968188048002580473363229665272556878554663987263178467648716570986549967232861528900183383722519088679503817086033900623374033637219186261511656093372180943206688186477354406822826788880902004111778540654743790594169968127060212085386422399331086906929853950322842714646525722501632832865030261507437382446971338360672673303691634135303994510241644045775063206140981874330239792539570545690839090916112884597866417447817786543892758315482478884923609433936914273272504939542913460290456270752175085387050933681491664576042811319614392797959403607458988823016474379024489956092546509343498742352556827069052561951141446158837500823408437911876336006008502709622136947951552716022117839098555033428513761809957466495550635065057414220999904962110456950402685475341858877700813437910080964582780749427002094049450981691114004635627478181729752807472647780778713641207332258037240018919225281780556028095652447515340431143834536714378270871405895852625263527468762100811319321460813321736776001507888292202409833328661539115556864733130423594482711309048183576256289858735720335654415276279368096152146173942586804297171003330870644612868710804010308664112022007959140195835379092643857034396735338034082079759756333847721743530304783577768885189320621055538641345825933809451470070065896494700330000218711547992601561800650255150588340120947385103426602150226104702481483127881343761273465724065794023225456519730462983787748484997582004362203615197713894189764250536986353435360349545497157082797025082302434237324088462411071430984531325667371154082129897928117082927463997132988490810926283572827004545519840222701669516550560833495554384647949475907549952976780370039701962901511652702699373734576384176990279373595140875473248921546228964032341196946694295274923910782526182440737014470923211009470874964135405134446808606153299210017362265422269399585035991522275445082022267895912611036633774098951329646171813041408356585960008077234586005711678882324201741310435964848952796946049004816957846288385745375000146124447871879738625982932359250822202176453391144600267904481853225419951611444074510253754345020745938973614585934601970688598863509336796684290982446677001270339035681996400415588513318487760024550543529502281432476601009781846171801694257266391412014841357844480639135877242569538181041846339193935110420354887197074292351857872942946052110800915197670275712186025403859842395770190274253770583466883557976906404681341331238977917121216079704608790841378332265759965734534901177808912607397452350783806835908521973648172717176098672247005564366373628258578569056072262814080360105787209362240493220918557811118683988429210540141499225738686264201812043358768092041532770884952459102656479092685332141084963872848869458890819049317025721590244353862543631414373505316180352614754850011148388911188218034059021644760712917011570959634955650834063796544787916413275654031411649246833472616579835841197380440964500714323128513264973426313113330839582174229047089614069507973662703577371433397765848365949636408774701989824910656098685802328734585950101152180983294383479685950691831142358933223939742465759241913806657632135896995238999352733401222228005920480390738601184618937668770385364361822056159037585647834993828909330915458623924602907598735490103571656197400478535183620346579636860677774224235666018478866410637368450546859958578769330221921040293518054668901356695751033962371170813410610130261296415569976233651137618279312750128712741927780376778118650913677175502034482959148496969945754559429365499714523610524806163088224461185607714931131841449032202067821989116193341104021145137117664794836046853407285726599591392878366377654600338561781305556073157088231352806203412644427645551452761167460822035813848480277680174167581522265414117003813134865292594271577774457742851132951414419401635369284068429347703608173099344100527648873212916758028926643987194544837632474561924346245136349664364660327033700609780328212367372847242762467872694367988199239643444797958121268639822476345352472643749007032573204699456304843006192482119545627270083081835627080871513184624097627146539712824679977433151300282647687609732966910181341238493565286919782438620211118369331956618892105791371686401564492403294358461914987739425180384111975238673951154082126283178933690092552434971640690815655492246651247843268699528651007813431738812219182238002594561632734393231566698293369984326074711148888880934271286204016916156636992180641315446690270034381495085465040897768977468617490851456660002029782017023145333269192188852629795362618225971164608834170852182754701028475048645635534207844389568368289199724273463133346500600659252916999701035947413867045723050054801568207693873740654501788904518741980195720606045382796315378942914493646856634821768413059663659160129041403970578504004567693223575821758886457420368082407407253422041451267198829155540090800253348509835632139722588961963121233506029658770980403153043006243285447092119098277506540886083526263295228871940300427759154387578191089366075628056665499292822403625874479721506690779042148558336503982310116763916921942361002912065307009581146920644351689131792158294762234596525634061337175935502806228316603720141083321404653428631061000272365792362873987480446577802513364417675122424292666864805549764523822079380375115279193582551229844997287584192592505831761087999290198858703953346659977140619573592160590040214079643158445791690449601505285560856543349540424775301215656906917925938158314228578612600007868041481212321010812857751271763808665461662141315007441614746410249912125017265137472312284189516336505132263207451992058180493162368871032060817909970484094377896652221145191379088007869472087939976592657238520613187741152405745489501283849239093011970159029386099778732489029477092094162471286168676003748356155380063176887908078464335865415701970579302605482802939328851338795941725024131470536374855754301364759778366603169798458681947040261673890854188104882737579282450102791980196325599866001874161410495143917229869703153040239379957689827051362011658928906170799172295306745552359924717813008624741360853142019217100777699449226985658300817830336264342997652861488272276973984796344468654395346202337933019250502197765322183041333714464956271943361956468268338571016372165659837904109836218274641151311821890948544183467596900805699053008363901722860698885890172436043540456004932831469212972766149628354810337757891532641687649830852466558355995334303194238839507508314353278728160297226123406544702680461106927214872918035435667716333500325668903459226120347082199537268966232499656158998664693180108639587033085943841243796778139472331491447770523929022101338672341236850335396028912574694179520925542908499124126645737136818539612692368625351399584690098966376335419299344474771131197787491916086595268582915542923995837767235168149503497171909218314846782599790695665100774305238332279874273394211286648225151919231567794497012880409733394674292365185609772824984619752606258831488696421652253970900608670611651637814841229424790913390925750019072761089985761768193779535648931020883896171038597131511906422884648492100500836738008058635310665698462978808747923206312918287238980456062267118113641498535287702100746708545590923055667080331505352871498186508402158117442452498230167648411257386139643841845052286886678207057758336350127858540447450517789035228197297729842935796950328123098471332388868319020179541371630874385270274952801231201128626422969201801236059820885166266114730569543990865993549048590796431461339287249218653921806702825396125497659464459298151780719061538121545387182756355913295527600153708273661881822317691021795975533586422557777316227499096067142153770089108492048781333049027949934104157828962342620176306416414702446237552870230476810026237694752752552194386214077254393310482209394415107247791736177600264842728599719677163296072478100632869153552845728128653882216357657090545401774044658253925747687432917568462016113308953558663382272630196806801605880324121979363136508841110140365178267490582500956766061144887043022356085455036939229723154007868526492627949878466674394246025906833129834668339876113044711946694553173668205321347784812320692274288603274171626033127532517522683059199336377869045228892433597639121812332382539362158877091671834840100809693201321111549851532623983449430712601086101244980783957455156041217909777147592641020110179710770808173772353079299499238581177831794947447152217736118346737364482688787628179982972047131344451722296385663921630993211068788223319952278262410351519439206508418736120872067924386272629946420422737995208768732869399066254720118352135429439406875666224364759343762064510606372098630210441787149760051060618335831391304357334638082907579126356853153916479278712485735223752014312636177926263942710925156222148609437025730366286179656648651419004224604176459035599610563173786332576187279737668476343197518531575899001288877197491831630669741994606926210589975591774529828836623951988259206090289028419214930596843628183717994025918457293799733482529865508398156398938971176942338384858065165193348642103333606253908667763246714179206384721075053974336457376617946018158621651973844990833955737579579846291105148556300527570231026220730113572699268072731875727121729192492848202833789311213489921273798768531785860124265015101409052995218007954660303787301409956338817700776927500114309245436945475629838641195722501453688579515168096976354208058221181947598607091812432964632579996560169671188578519260441293267050315567482229847605980969548138242532100342477116168622887392346027761772631066149503664493613228766173296322642533854397784042494495698411631112915394581715545306955430426242026456466952603828974002783277501040364926818255724406652357213976288642429177686387230344023100293398481869278138878282246241269360121671215344669342079696704763804647482448992953384890131098005987101865346236648934806755899108849404477325628676726894157416792343984881572353145636127906419230144262712871871595889824093835915059407667256650606731081301049574030541917758434187591644766105950012799846602915382493455190214134518643216385513597747416395174455790606016441331356853357381472552107149741374825208399789993710899136477818072692952109955531534398114956381019968635806202080399898006002232278009184899760375660631735216694754119984649110305890471845214712422037538615475530352389778353451102069455002148465763450574413023942898473303555583004490107166796450620996308044402473983416208312437510566692321694865032650448502743420776011677885558142870780199489053307697762932207343135269940433040455410749171538500130095692218296063287553990034889412145334669948058789984245369008016892803022590017972443697819100841494655304243157156798786351055029808393711857822133984332088260566591484785920865366581099449659907304767335143043344288029698529028239699420911120199616684448501853613363661544834458209102412016299140180261682520281097778189928719840643863194977914727449532046115144069472324561407032532718464958141202056087352135904617906931480148518940585499798567118221668361096720824754607413787645534748663864192687032975148840451969855071972433887145399345592971290717251265887219710124826834726080400783849865088975844312076117637243400174728485453770753815407188992749787646858777171744990012943615230345036822613874463665178806306872564660238203188628856409176436051723415937136785989985024908296632531891163018599653648090184016511412857862025479038572753196588370979533831428584648271598786669525938531135910634278979607552431122687637586560398333624474136480368485832112895815579427068996065284250260668996305226615434644163441766816843789701092024641545142159571346093110093518387534718309148402370701321956867564869862155270624179843875808254933150032940539038855910141580772827126584892901297421024094368749084788747038303098930040802076396869767747515152551264940073040504848646803211429459324092563432358531628655937028465416826484918595503311353079794524096930394508470088839766850380675333276383124275675131537910207232080242203020455349913367467095308415185747953769493184909549122850507151319240787690438044867506665350625278665955779485992739108164321346552861030899908628856747502939821581323914571910374130749783269240462702599208137959560562699793874012642099351000293461824581468396709759405966274862577575846936839776842265327437662328861439528116701318793100033328453518076904239228780258507370320236750162606621871754892640754871391425705508785539144761459539509678155014725632307199946618384306080423262215262291498669545587758129076759062172611776564599267565651065600105770039731627408288162300591564613911975816116407430230521579234329628275856394159330749371318000048360108509510436617542428762017130677851145630006774124777785148633551912729117757877773762574207328140128494462745295820683157510622482024641586313186684300242659161019787654568168068098024597092942252218698301687959045520206432310414514613684512146624940053056166811103254768356244744351964725839375824506610234221329602759655668835679840047515869090074733456155155815694180080315518054094361426648198418175542601496172124132400604230853368349361839598323759591702233925467476968495557053555308213286185590712588230374565350074387643152173504748367515051003041302963762829292485950189064491626292807815659023789329052367850931174973984222010691533279558952043502476519598009338852563326122081767793178432684021735668144068684503534810052285403905018177362113559129805097485367259939320466902253142163805217235581491626356790840387574073181614976974659675833488345033107602842291678950343821881741476908603976860727836451717415376083555935485509257850381957727206456454864435808893203136535533974076111272428428936581910330900022052032780591059672210506776387026053866387197778210431971855094156200173304705693138300242995541933860720339804360101303755005624928685383054697635071117389494400580071148095514478643852358007017331002922983807287052704931851921139543061765758985208826227991895701791613999489936887646274336101279865739202720379087266277919274769454599728077196322591979207261887652273445774566715658849157658142708279749104409307269050448861322455473948154380904890768772974692553785190608294876930826617271307636905121545408493622411142711579610888661244640059624836270924336642446303920230134118046363322213064019923839067287754428343803576185315045585439786031427660926038094560622373330349132014702406114850409480444128173143716607661463302618848099626563471860376468320748803275546538921228774622474754689270358698392862923519088307050599083001070151152008925077813680567739526243744747005817000615783207518744122638555793887272419071403029595426936369863214980007110056694257727529856972006442722352625714306586304670469645648816765754414258600106896025227761509848282550480189313088760296804054043507657637793726471339266266413355526052075161393845602454641915983267758913610259116391948452320550226236511373797240519536155505288740130095335733241853150957989790334671228062568964657743997197981513565080491247924961008915165883249440009400784769513960469763382351028760520278519958718908377710232848284670339145890710445943669769714171103300985409689351373814038205944645689619650028503705665025298050809241472444265738048799338415460071595392377901179246573318377235685791198051846601561720144058196645130149308330816802191523557647345976304587161299281322393949155241639158614025649513616543400301429001282271949295073308493713448827449333957705633642523497772852713130612308682202017586365423268302489898479725894247301146302931296652791255400527154983709575894034330840348792558356861327848499909263798828362565107972206718054922241993678232090986193572194736635368310161734826198222473127022210273376113922360881868309752957600230345091435528918539799919299632703691985489857165198428754736560459929804854156533222927482188777290514043067650455726169290189275960373706948051676585835619578870627609194747740849499442755706214641698075559612208795144684658398316781078480125543891547398805375861916382434532436656987998233300781359401199599210874296309949711849639331788982669179791715974288557097965409286661540129693077242774542100868806258078705842999366438615576071593331959490848351547861346243377971598747010121136155339449611009784632128531349436571534760324044231109400661393000639728571638732320126752344612993455211646817772634963580731499561333937611384049260843757106633573087309676789872579704443267438728685842951004662656262797898181423081112872614005086118167459245439042062132569823902555306274195207469362181132532443560048169483032802663511062062101603369523424831080482836336629207313820732880955712243571632252199450321456337117928166041747815834455012371518901649144739213063280394418805144695114977644804213312708395253461665383678644561954343235307343803260320821751298955471841231884122755728127015015090589993069813269772229547432007717202640889399771302210440134860213037821766340775987114290233718568437834917177018026327766557937211335719313156620790907097196463885875488625656998818892801061749238109258331118303804732325308778305527393809513607374192251470139160799739897208100959460910515311501990815070605597644247269319610496612821332676017719668236892453711563645121601355131649916823371568852411575706701135167663125028778094400965522088468752061225684406787478723351604243665071221596960632879464324433421851803609555903953289334094362254029555014739500009815253360843237298855743539934388180265233178094020374441748724588200740985495184389626209879116706067341942599192838077732442396223696923267323918222183301880705483673655225432513199819437329234640199883933265517715927476346708055747056804022252418828938145151477102549979911468922566379396056910799253613747205470837214984942135507282774847191319999564244637893600086331459587911750686236630486971209774438558894278042661194263474253751956207792659751909379389616638809061545306125468602086443634136298635764108288699293491252715739406377596685452294019970284353403415789483615496858766561053810657849163359316156679059521649963043284009032914194894353070310456136418662333648777919360063003988338017193409802427976454593856386200843100676399548941505715750774482811908908984514105932326492089746205039254295736960020758345843833277330938081210453465516244298737311066932846145645369804402075445452911659928378564285880123512188239189494053352989762679912576188634072258657607742630958554336408899185327934670870631433074222501426862163526914449392644948773506363778529103206481690985627382740433859824721585274504167142280710856818964386681351562972358311925005104380627400211425573498355367647245767719586593408062285712375181728156237652456864898955129839435724630928379762668905476867333379725152115709298632070682443653685162369197286972951225109348904990761712204556307790328049220881118280785052795003521571207087490376193609701904522302058419278606862642238338942167417842674257840761617377374145166746673841504101018471359215921361410843143117920589569483247713221665913228421401237989877008614003557273755528391911905218143156050870725551734059255671176660498611697210937654364294601277139121228910373856826819801625786899672327182640657126180500917301753079233382698630747930790877491324917412593392859494638618851655629393603936750969364157868910319432820003129794476088903594061894105872708742220953706342025233418208697947700645919794623020811214808995089784263482160241339901485616989873929349535757387647623424898757705664925055374030485395958600617914324746959994954601878902072557436894216697109311767158594535664125509933526310508447684224611180507861955281685335850007556798526102609596678979898555241319488324809516501238077392445529718186101655254391515199720866118899051693296230107628096364196824559207698409558324944473974940259694084615697303132650813402543808078625832363573843516844315815742132786071736494331604633968317104086994074714916972345593337297625420570433867377248331155776610841187768860610346149885798575205073245532927053868020504701570309281917567815753719299662354036699591663538969856131800427079304120679716646220278823894975654106215876721207675420161043272553767765672943912839611980041045797046765309920810973341660867646519072864969513237252757669847515100384732614286996238828783526277888709759714086042571864636186179897087175896276583872775037661509600148097560502983457418079067422008221427206022410693383233428448705249836135777565353106772426688907583315560017859438745741328466709538176830338394260994192773779095762326797361950161993846631935723305381225319179983495734873607284592336065866741291910127059242856602455022003153811045248606399993165336127949573792411000387269996571083593352397424275361180692686001842785145666452974398367199119565191212567881679453312665282792575484884370852809450389458481901017520623821323918197644960669876774467276487701397929083032588130778007845867864208038747694611466155847215290866299672703806674341535022237987987525362970609505233691662573218745389314315215610317068040521716171771011904798502314397647250736162472656086583994797861896148642157969910600527315441126924663218889149664707101023022831115825269406869862324537929011482897044186750596653730116254055662872606914115093112710496614062260017123775368906719648154112515175168241132267116093044408469092777483947376568305559015108112016462044285533643672699992685937626585612604629962341464793055483765393298305658984145696820321926700397175685937536849693376133870009678476051926245572787901249380528357847255355351619688381850304833112515207756033329007503529186964083710348438096571047681863983455777369104539264577643015537766744022931688760037974518078997723453567554465893202923843614627913236827863971012066791530563844078608104548470970971558530048578361452615700932388744064014397388136712680010959899586530653161552460108814895172164994102982363496317369343322185450126226153664899615430160450020452179606946995047180729061093427953475267567440075395175785753868820963527893534644335261784336593173146832594798312995803986099695798096732947439334336997122645958925909160546293596392332743074881929771359552209420384176618238122813558926953826540192592802541240699209411604514307614329027783332554728407589294140265000838856311024347378892061504518528884731631278671991547314736202822961703216882819072011775559229909773561144276617336510748481668121857977857886383018952735055060881730990810375046688047933809635633578204886326077354449908671288317163944869823414219796376522697069044841385823664549777899814192286698873308091841029621110924189440804390051906111300339589293423757369336737889492256322730632969855438213571969806146182875889285191671223285966061146845588621754617690645942989173009391957002882367486920951159317547435859132896180262451161655676228697398623618336247124796846245050211603567051331297331268355572650113438345652443074295067521849376544502680450149090971120526982084760548978922017100338995281089413142749977549539097296087731138909278539534988149545762355776437495516032001685200972895329681531521215658804280100815624563382585125613926377595966409793717486745614706967143587718797203848515407755171551704331905945642957308112935854481344237611834528773843692265801992399509558385957926340163955475109781274010210151306935567659610570728044143061132398504255780342468031701919934257856573694389798469395564726439906459768425065042623482854476065482373069853831660901943030647746548680237917624819039751089238992972285302671158913954238832777653499603500182999520753476243875750516730341527882427853040066720749387402089724302784611555573116781359507637980481628694521057062944783835121151912374398444183851505499010220475630368591114639700754146468211131769553942447196235327838132255914441093368343898241619460599848163138025409041773133272593200137037526928713839926588513538062514639453485570869502017962153635554618843115582402985856346327175580206255211088778173830921078433232652473103097922897362816384145338913213539388574170492751025040876637643499442282408106599227156370307176719799476024100035355751920002401858452640937323456602397136144836353764797663393041153245732521448861431793715086091420868115086659109036799262607936132222944682962289105331693760623038401278898061157607866250896032183922598104532375578204907719985755908464978304656410842726809036394718366329636483238251695796827479298357542033302315266152269899361491518386396377123619035397064167305659586100608809574250865808468852192785593697433634941089720209458870751347962707235470448914468886634432100857506792314994993664455134278129734964124737237029828204360852119063208721493896045627290672295742944310099582565613066119797510877205201377089430484032195833683192766688377041878830085506705179620290838351135456160082106316170535495455671535454576325007351765698041926334611463007473612169491764913515319219989755901067168296724690754772012641151741378636694016601321407167568030845119330168574983154307650548836748686663978025541904648518024522273997357385024814769282637464392501534582950570691071450177128497116337156560522485651436632823843784751267015785333482490076196983232483931157463439959201132445824860800191646194336705051462495130488731907138718507004944739112765481270737467723771505901108070227636712511153586089263168726613551130552303451398172614342342388006752414633779909536069796443623904751457042324664477167965609626731710635659414304036307967748132156848727902791472267382136320775404270925819007295486434085529298367209238057266974852810267773751292218230978458695588390389883022738464610332684541278579638993835454508699670186445737770554110917449511079087118166003605593711624109606996880319739938610242146175826584132437401811146531039405263185004443324317276654510592613920358011079096013153880139721019786314264328284759686891184953867233441969192699179603791622438958195645902870325645261893615851531759510284660590723316002335432974005382959524979643156964487346250061781981720104646567262136969795255633531518835342707518163811125798996973917004473031335543620239045479545892577994701603188188560916415354645552456742661355859921603878389304784323414393013623481363020145891308681025926338017668138086297985149788514193457650119048683955187486164772472131483324145245257590299373126918032694814688127817182924035635895306786211569222448568747051042760507753210917639101520143814813432265525443685591791892901414129079436318593115275104014773788733964128818295601096780353146810908209090125201601206817882058829418296572210043436261334484948347086636017494221455129156084919081093212916154682847283063473738432282704629556439649688032432666603625652764829706840128118486043102226618440612678850249479364928432781215431052683561027509575639964467554571202200759693668328297669320734049052367710039368649964434489119228042640643849567086937821130274803378110350016053294233832823859546230460004827105817276408717785921179740561441931762513133015217644597706074972860324157005935269265888976239039314319610397117128961623610770168410390961204733994429956203350907243683235440559559578931243080847012922048968767781859671861860864914974475505350525175242379241070776456923998378785829354916138429177318989705773968428270877431050353642654472590571969165059461317475970923537560401152064489284585995316085225457535023515101320428441175392587083698134384999408004528308015356144159219579883708201012011151498022154487482100881544703386980307183391739285451227361123971549272709851159670877315172603370323672694278831545421206258317562434651515737351877096555073214089125585545333883856892976387758122210401458038978509594756618415727879670395388526607680330038242799916321653129128581824390664855492910454732162056894595450304765502553485429809299712264852415753944098621129522160056802290972476080995216093787506632615709629248853096947534988948831683376747779461811781887297135468306982277710145455678055255937153870521810352975848874402339997346186767303096234819326450557247718881218249517651836646454030470399229952632925618803959419606951649732585169928132294881677005337572612233151256620031716279960435523471287930180980911632158303733046952079145607068914661053286673344950286578823467592879644182887130271778134327266103461157747156380834111265155085855230016830419787191865021969870438983088951004394132847964933230030435854250471862560059640283314507189589681974612147168422380451765684674667844566994936145015060238618267773722642183557819473037417658118379818099533422536712139587596379510907505509149176348567946941562480916936578873627463859443223759523148423594803353384303840039053638684231970184348502058152957486616426821802694567114727794043553648901889674784316981974630229246759289602091121904100949209198757559013195935858527427967120269646116183754029476802274398205524555505794648070652757244645225189523058802564451568387734106554832818109721558522249993635241731560977649652707512304474457318113947230484835147605903726256235377611172528603911341249457394406811663715532474935394359425468413493158386775412297233112718788978053904525007691439155744644675105702621597718668285298006457580320705041262603459538599775899019679839691494073906974779210216751425217725769141149177018032154315285800467312728502456677514268554622395120214812538620025604143313448012738085490934960883343872851903336568327344311507784568443335773837801215660469571629274419525348771438700758697320605973435584718619345030278231887972512951457630514153427098588469226111329704404251794757208287183270429833427515397101489554966087046078742311763117543966540826635507169499080534223974382751518758514791063007113663396783121077000448837089949870357827302945736696898495806420258569685665446134865606422878204728691476218541835233582453009456912648093517461493965522005005955838645714983524087852862726795780796808889318620375084495303338974469627343327938550170659565919630504352857412917657451918230140661107184241578794943806784861813534046149084073621987318180287062498488960795315648266160005740095955266676470723897571008138961111347987580356666070212149540726966547734224669624795989050596391869607691787421440967662866594827500898726024828123364603219355090016424647617450940320633319612083610609856687604896792650287474921317616189786267553073336400667000087819861376079324220655540249049557690002664746108654434930315861005972956057365253610120496337628642818133972011227335605426128459416089398731715914984390912722927458864254268343568617467487905381554450451529819132313903612101809337163673583258921330153118214877851158567525616185519132911175164336356355002926016100622324584932010134305953520737538350424803595981364370711874586683645320710189169232575365253019927792379482320355416522184169621164487723474457940813527869956365301644422524157179034163612672414337482241755324305923445561448650881490811571714441929463575731869652914691418696234039598351487920601106915437674106991727898876150519735800560971294977819496063773070512389434496068168349560168074422282352920944338397295419755548809537723420503173758823535243929498830386329810669787503524631104141681923290874882220963175266890496957534452029196675899437848289665709241820448719648615481862106383692252194348047872431405719085761962508127097211526293562065423798631802758828998980687335858580936599221918458146147175641149258138760755014247479441723861703344461304841304440010650233555766292042043486133667385651096013696626837596857187649738419297626765097550496266118961354302478078742401299736405202681620230151132623632736002047586650466628743666317285567113959094656940576134711887438067574956886591866911809566272965920706608886157753076598209020287545320804541291729480243089559530317961821168376077992190382701261329525626465090069249146991349518114511683089983391835621040364078298573205708008453239666943965382809483872445983317784481309975233427795555415218077340642823549230483470701718557670756005032025382466514670395866000822803321363813790326690315100416042154929208407006679208496250583791122212364293728010913952146819151713763338892432513094395665261833011292214869922656412392281290187380358148636211087981277984591383860708680577800579060215260717291087121706562239563057315297317107607694689775671842051828930230185322558348242939063061630295049427541641198896890488038176337102717927408103285131251349267062423088716811137334310159522467296843821170810350113941731702638993623384537463855822548677207976655395551871039789233197394062428066964597960109810219681527848841537766811068033891616822619351973901093152400404788812217306696825293529393208785732886358745647517885839597627359683717277279786929979756371903700299836955936565856304148592782070743838900934570649378923286827668970578175017992834554419835013308723841319111730438102788945742104601226327657609121506671216877582012492872256593916469275068048404731790908242907967993695806028769487869446480049199396768305360468172241385982191993994502413051375645851581231054990045390888233558314705653126992010287196516175973579470712288910980893957254606557641588806719106804824439964846713655852791884806677234773043764771943467275148912353915003246430381456278830147668125924578715706013774925416059859202682283566259666919276449609465312441707714222363593318813058679031230732973259195910998178169567949750945218821190928458917105364470465220021083180150048860399581856528561187576334335582989036452008762430330408278083239610837292200708376563257830380226563850879428016622312340760135530264956049976594359729446774629721948935809691176100217200727249503994088873756444686535762533765982036845423305588195786576610410949031648405983229676031131640518111574034433043229592798298832246971266656273429071607909610579005587868714612051817556836347543818030874021302518877683453609355874906696745955674867018010673815681185661934125697052215604347301081582765568080155786657264344443130082992986230933620544117644781423792362945100478817837394314650891588192887756895607881058481333908992178352288430737108553345549129346337174761565244813007822170891191458141928837272735253056423419025504325909483540386853382674468304532482467495742711723198848499083609880938970735850422718811234167375984156207122553316567604933094797327371023422224458164444562654399576868554660902424805170868276567107634552659149460245430680691523267645912236750156114203956261036028428445666325256477890800866323872683978624411456420757020748405393700144490160604171640355421081200122585592867040701480775642833872485899103034764183909328192660336087716520348395306372578718881331651738005392861245095815699551318020395520405096224193486533324872058092007393802100135455606406857887485719245413137565064414658328950968528279508745113059015471022532586974059074043943618271587246503581165566585530543529034622549986486661026841523604768611220943143344404478268803976514480133299175786213741798400681469990494932500831205931637063417059027100179565758281170871996747824006751001414521920205526262233318440684270666639116644164185877049709060510259558200726181823181514386550317096045108658064240208773730083714718320875759869139672683673977304404294178357670864782719218305307627720026690030182712768734824986825240822546081196538608116441431332912491946326609391481322900885398351957104773583667498498371854825452925407807333795753852518813296260183156173996256810007279769360775771338293521279072740693219038030367503100206254284561983147355051506121756535404039552414539006604056509103179704251182402198406013388444377092603682524770310533219347259048818972652633802580744721428927577246687615784445436114236908122885590402019366443636205091397767368880271496315089237823548379788037714777019078145085547573697520200011293746217002678861453734031589199977598206005152432605470674765475491074405592605287611179654705040798169298813991996046081588840521960009447552352059141426818722031210208338466870500401055756580793709064081346999254094647174374188377732040210254415899967395778781436097578653155066455563922890042174136204774827388038490765514101418518903299819405594565933110426174886966474243812801391256536054210842607072197604509965828561269868506372512689453425280027894941174640716486312508362830783998717197477277174520898775803197817280766023074727451888443834302993634662958142847247120115472799759259953609986062174270228801032473359332743929059440675238683503046295117722394094747666620598397526574704718966969885066764718014789176395988007591144778249895358454537290242267291135787200176814960501110592667938867103158948905703640708990151069828666772289172243374851623902958658653151381064875761172343236476784096879236543848270373598169047317771832056373788584650599141479577416695723068961191385832700942126597757854072801148114212526405516006832900961646584951536509384557068666379933732524043109622051891591544818105704552517180511894846959882120983177561634155235075069525961657423569758226752427168348607437481977637956862270845666620393777961940523498948659245221438123599618680397988106883097775694660897498523232891551401146447439062057957863302610542364040083781900944464542452331756914273897327306522663911437880851929515101309572229393493605689982192426657874589877831412988949548120882505002800490305867609405451565090271092865784200143824478180815544863904687273800673369315610476820474473746185747817303827590598750949550159243799658354113814431488164413383576258477464539092709522609678481333575555945714692744318501196269590236680530203087030503840863256223515971458977018969531273479773371013023349010326578141100791699571109077355540533005756000633177178924472204637739305346367802125441547927059041460203471055652918279066238642096699485449911951985598500684564765786230605466818152494933172040460324110724669389482509137100411484043320136417119126358747115678631053162852034720906443439064294056810418595388269645175078785733402537910867720705156597922373040866764240817606261247562546536824008802150096021282868775398246362302325039648082838968126615360842248444503907965403195897413551760655492635780151085441952582269368206653873938207838428796490133300508766525723178961867907560753038610484043698718165907625161530169065055324656420046635743240622712480886045707266743951176373733442161193488884378902477469713871201471188920847481914712400901823774637725487887866200897421635777575078175800812220256568127984186430416034485866702447998752172636075851132833919514908038979667890344737406747631963598080156331512574668745480624949168998911212918723507956000624299001865923094611060032201396604179651818004684231929239382491735871604217176194271678204885063333605151583666218604534123563546623322012172209380434185190089430404064955261013833002885906602375276149529839638285881163771873285100052614491709823692290261033272910426365071068180657188130125310363198542691943867960561989177947959117744407910260938241912089906402455802247759757910854026385629727275586196485264195454678003485301565577232218756335132810966709841359895684203000673905971506394435293269337130185208601517578534642770432462973271355417250957435119241428401376819184234574032288860288223544256876403226857254226342741982075635810352815214822058911300790346072290041928450567110460010260710289730991119089428458004093688184012290066839907547928958947777886506781748712419196611795880680714139789664488073930026174353338346876288347192876272380186342032590936859564843568445913940596883876938207899401377526084838321961891566885718578535151340611546480395393132428753539999647722968425688680386604346298417944027456182162463557210043692458809754505484016396733231486348816723220167615629992254364459605279684801638321682179120133955829805041221367465066682929919004285428011808299796243885199415834272368679002242825902950981203324870530987499251367274005977458211089804922151819535880164713972604928623588117432090659517878392102994010639861535944457383737351313534560915743523959046788885182363859833939630210767752911307734306601890613112717505862996323823622489091636200540539391596955593331162111161208930682441631655336264031586273593241785461418473068992131383379826449031621831885415185297516785579911810415609825271005101102675097756722798789367364727915259231398663029501938894804311613280364843954798078654824287708335733135951218911240157626122255554459119089047949947042029143670345623146910740858642788253209625072074655236284263857489932800173680659437661925457084348093632525624828994576232091624556544246447077528727458892136919064108137646965078102575682109512730636694609292150171773859282734657687026180956456967963834964995667632163037933071812338579773499038791163409141993036277618657758558371539573925320461683660709205407866783455100299871651722091571320148934511562877248350102517858992932166643474762383306293312174916071219895087543748626388505111852327014692423288275478652501169029288787052793762639606983428547033985256113654117726057454877084424333434217812034119437883192624225017450691946591453132616095010868475497667902699848865150361603797237132053754959589082862913642022834823486370632042829371347899198891910273710846859942150113997771645349682585533059493536814858610688599051745540040142810528358804298580114939042455575810124905231738184978140792678215317140175016742226164436723086290377203825422156415037029003888646259869609246938266140502745638591214601695993435553684649592588650620742822390261561768966339365770403223797556375165734464607774830846325156470466537553464543201797497889455044161974772841376375094220891839626882833085135372437431782839695742436419003491604975965314859245536537923372236591578935100911977164030527011675205471688012292044509149963063314487786479664444164403142207628609631694494615393453910647811629769176099007202661402697101303371312659688412973781214965556083223671711748594356072972281822592963516002657653676325643086788005857758208307787312731071131491429662004254584888251583836106874539402085873561779351254943564831948769706621374182911551788207050577347726958194869305824602972482077833415886260509027750760223383923778190954510988892963254350271728161078077288233588209180169787576439842965988421839224232936869493934494317497943786842798190131918125907745634071924129858302734164741814784000687750669178523472691332656850976717564300413088839713396716921131805575632209968720969831326347903526423339354060348837810987771184449529777062528138693208630140487187730277455170735917862699481480524513653033170337411586031323294440609159676030287432418512671029207769411786987875727172432820672903171597054894002308012116268228358564460787411852685186489609776604264123198105918329863852374723352685661797237341716576920260951370987402236692812849044243529530143992559790423648306741551128208588871792279841415166755731012107143567511067762643172333222366287627747549568210539806434282040776389264442515397467648710624998526091837835136827303744330239429493493176487207843582889549375283657694459354611836096175539267575011768828411222607897312501598647685672819508717296208406831897982438197496800165114380202258081934693417730821552844714527480686376689919619316721679737205470170700057391536453071663836287600424541703587957628961894823678631530677629003634920485049102205762562280645803934504747509357346673025637999269815075242102423208427835908029709547635360648400550105331445580804395067408028958573714327527060015205657051655707580996775899728307960842453199554614135748500728903463455285344952570170234690094261858762365179766525287658776861207722323192507398329355110145332173170021303846296590347081917072986224910772143351655834959386499014864067787516815274306858797920041844111605608240544806445614818436749687028296495421390767540454941367969005432633490710890596635913639779988884485019306106566623128641833668517308580397398969369569255979906144761686740673252353070466626823070646756616639661662452679832565386407114717361995088600160161129651801336477993897433944275072590257869764386789598792016387981342042532106020713305968478994197205940880322294937133110801621833302443616669770545136249268231760597793072220099873886212620516612742787711523085055354319555321573573760299574184585359880696122780899102946893164965876867865898249065974155585233615572437244166163695025345747336776144474405049876317737478916362439763043628986419180031209848227068437590482328373226323171623856060181900088348728659681286971045060761790432090312587852423301172391332241042164867093720019695300912098601734329372975749644254716130630585937976986926510332914607125950796621303860431442937879666838749333891280770672016002347290589841247586396960195889766491388770718315374117020271629568674456710484000123360204626026725404915970247735469085330952608620593086485927092695666191114373809437558077323788413101547763732946511435533961743416964815585420568860720726534557711341501076278122927902968540081842711169546269028930384828575685733286611035366789978234741654543654105307168928301526689915087985128518176035918685805032793349915963952032594547267847474631227291404904309676111885549466187471616594585382849481458093113450317210406478212976727039648244935202114128267029918131824477984361974904837756576597885101453762558891012809585733295692978514348384426032232251314664953504541818016763865380405061719186996126125908042183131419127205190825559878895378424640065513000720584187664892415003843780183040277254965286206459067646427937870727131315222185869134790050352015040268763307556837592849708105813323298810502452176510162801226913096698011040682326609847784013567579473633545872873633904757532825701447827832565927835001052727248605886774157183392660665392259738552048636044311065496025150533938306781329762142200318853794880205606426445934849098708875919200646487848831467497848111883440929793207409799796245619469491043419197141179992768469102637922583320304815991248597786363778975811204648804512846244432784524963457987991568982271157968142575074775998908135456133916176622045934530595928582286693776825903819505535768546517839985160824050157858959811315146864109780907807930818209589376469863426442693032673619639050595836417030068789362452997805522395821749074984176787108838742416498944361687214607275627735486521784351261969776850419038553605977488065190991379498514903614610325995062210173475543660855646329402464314317696309484750925332152828379147671879113200887258378849295460138041561421055261658148720565100821589522506942512237763969706590794903563691013809620516397682740126514038927131818256515099102568420832270803631223541861536735832774522036040222303694860049281699367779392716090776915772420323705794650389975610215754156822212727305948344532907771575949231722124068711604378058948603878452607470032026501239719677885495722888167578383138902362290461792018689797279807878761499822768624512265638055192555390714119918769111589057437004823182482395328605022194705606970080948454459249048374360538183902264290435292488084032622397642139902963432654068384940009411959187401450553345946443730973775811919673993471209592288260891485453874885891460230000355814154352962497970398089854850047459361680721877689371838650645550274533088489379649100412059270794930990981321353537570611125605723822926565317857166738810017651734312280079488631418835082679323431019007055750875177548306609149434075579794539885660356289499386558868029205342280112194790139677581167158442024169992551467784641492132602112269770533044718363611366243082878518494387705684375199043005395921011086831021227564709120788491252338165671866943403357339156629821852543113123912405252077522178702223457955483948199768881373158466938302768154863269419653912954766473635326737983547905880419480592920188033531543963022075555193610622611009127649991245083483213629844022036970332173360990981039745985153295540346670544220559303500643073549756701106364515382929068141247448441331538374612150546519958868337955619660872871942538310700867611666296583787069193008574452182518192154436603765089347209599675732151425809847401943121751134713943426513969114725505926946598443628820413132144405922662561455254772625369893036257740831216673331380698476549226940152569960986043457642471627651685629163042900721826255716131033278890934855920569082772961490808493270950004420750509706961471459164389049191322615267213129274007049814763429595445335075929580614194622731749492501118528510302978452248416814070450204406725323243441005947289591212850248997406629869252445094396493609850269152323000556673658357065078998504386712359951353322827950777603740307732034473133962894195868554737535445043751366138638583340868548508188289924933094599536220876287878416767788693967790364666860149974753587657055201599939704886286405893868722023037871291945599304560508868486127455045057581543595174806858717123474183151745316853927540787311316792873536806817514447400430466855251434956646551071475738920855116691407897089687876850130215678802396805111343456104576523974860317514472922043585005490515906690377294083543486911105046227640900037541796544756434844790747523355268724654299563187056906368538918562940283024053167913001414557349011734431348161266225990969646864534367658270986181830468567495301711977590853775792557806816924751138320166738012735689002225070413250267431189295583892410327990334475624391463027525993606738278614067216623015181889965104490551122730293571380701280927682727520859112872725344090723848051221010983576158910964715858021880241176648650725355101981594888741477301382842427618530552180191619225482685060275821187128825592173082882566051312861112877031799660087013327708923323251875573190523533355997637254997606275600924455177492651727163206807081451903941725960917786915050403566068049210765946990002242985876574305233715697739230715193000008917275089199397764950119212715134918490883337405840865526199239541616328277535894112743543129816230835500600033307047853662129947220424208008414056701460543575741791698241572440521258172148106656685194970861126320154244466923814877401205597701541863216417477808065285841307066380877354304083544133834353072124976386990307682191279739500560672162863012696333132752458120499393132729446774149464367020260664271405472722062417314588180069892025982324365146220662650867095501207295792290480050823351644006386759403079513484046846934794306568598255609222307436134055287354610809838419044290367543428081016309441007148943363310914358582960527391235369619923412183952126177173415234218515369120463401544638714441309597855460786306494913759667940056300939668118200080302427609305280591820844842645624877681320511412983512598273320702264300027792697787143623718549428897546977027183775475920163843555040452473140037678193785400999667214813044068202496226883086636857580824655233119275672663946442778045808338344951107118865443130958982831635086737471735657934757332853686328542299051898122690584709132663313120857252766371801696986766126784213199779490643449253729186585976676442068605948311121110191141090444594784851183336795091319096540377375757046619497150488671041330416551700697581876177616752600951454787073640673453239319424902216139888910280249381528881632090965970691689146242858471224598594288319259064424580390989203482937571391017344221912600689121550536283634138229880881843959613316790782902031364719706817761082582508388590381113757287151947278995875548724151102577505946745120446880204719589589767279543380595676973979292182895161815735723263852227334259802869581095126104855931554023104942889621693228949596254020878652967558966098401124217500043877179564478269344048676565244853097040293623103214968708007054398986217297512361854451954452526425167125620325447286979802794841441655026122026415377151805079941704815730011638994223725681913368457428282862337640123083656951545061131498983411788369740904844007620856226649210968132473635143637525269694069137806977096057806131633583790563313204798471810540482697139251173309959389455982758995335154946272534144009187237103887473067893007191371605753798253591671972366473107190678928193026933251848957012254046202492843772306091037595564745268385213394088170470699007980903329788115025276668262128745385068429266088113853310613927820699866692585697333394254411910458868729246561828011684253112119207360466572943195927086357594634428391833898748310590266276281373448771310169446200294211706800978951859917957724302822834925080234144306010353363351282101697939960463719518875357975136474320596815025779852082933484495953179984960210294062444413386611110929815250516462969831731634717200633325535931054032553663929371837153515602026150025720648814932847912581400521871562773860266014847144069954580362318367417640993487846477670458981855402660152258478088252552149295737404716098905113802549073118704743070913492583679340811592007144543553141303211985783314908544600058185700091254002384135758069129768736541934285695429216493276068360158322772736940641836347863620394707550801372413138041252253157305395038321969333135944754350771364740288128588727118474302032000896439788929520025820807919638593538029058917611145987738164446624356919054241759417089165608812819412593628880603214456891391264954803946300969587056333297649857946907476644523747396668376566778435813094075788223032036021499471556303872769925349685653097291777232521546608036468029581094522066840261443265251186060396745927167947889377027983709430866555331408464384137053572323618216214555838642485199677048391030387178784394213408664885858332721981376759920775214239498020654930645308001029562854254792235754960134625061407824255851471220378094812177495267516262708873095956488072102646060248252991946430712443377595399928979485484084085428584143031051575144237679730425255233445966739721189107572714813037273037016870597794636536108783456923063503945043159209245607923905158207617693846903401644779766237732871380419389530676582290873511536756134835110634734906970335866242711705583328399442924546311792703388087762641382400927916677991880630115108111525579309109991050706690959927559003133551587342254907845456782439882426813927653347356715451671682159904532708081440312361355824837683135038846684570011985872794774367578672422206864720774361490909774009866815472521903034637375038336508800666681598301840724987793604532105670722842428636508489542755518285403192912398202427006283789005105934426610269745173339245194526949844971067681635118672497635833678383593198393559190873348201083843233612495735266740574947835244839382751231515333646011136861708624084706691710665850368797075653617626153143151184688142945899246622572950281551078097262739127423072415292728721642846983909782407292693036991465275453108331782713750450024727499731625591022798249984076087902077345654733363795729815426239177867759921401203174148516377681812272398207130306952685764693138919709813775576298147154690205758341551847427665218037122459553811243285801668241367008127300134849226958409883948853207565808041960869005652395423090116997718205507418956295120712348874611976275105664867895506420894473189054864352404400939146374178407146949476376015640637128833039492088784685899633767447859815114661646457490557809235060693496026613056099368923054594024620977926039649541206947414892698960975074121191145900931132236544709668098310849703881262917543186486902358025671631193752832160118836547645657575427247175258775783009610037500737903757848145552271768979129307278478852433825611826753874936518697698215699038839028176563390347360987933807888687067883219748670749462424038272895898207164570052988330711772610761219565561456539772655922818185733848157756778618194171182773680780037117304198302468058687426648004602588310130417767443875876579960909603609611178279840122725045814790905902579400122661967088939281639147138364042037547432492106289474945243063851394802769152233120510892132712071004378711216384841138794356689953414943906838791099644066680518849625987081833057548237096226060873361504191203635343802605399603045180918991612915244521098848744444649315065360074774183287502732847969585071978509738967370850817155562907157730151293213687757095591081734228288933315570468006925738502892607294738322925415714494514793657581931725890279535199849468421738131447213501552374890267785838228747168098912864547286562843626078334083155803806128951677305637015965193228270220889588983196070549115800668499961073062855490885992092277481555009488837530492990714105887091937037278133339436529441344316254531354329681729360006908609172631149008623426829028505438210774351918237689336984461140962145273148539699337680871307290928070013337494583050862890081498521239650493381660001965873843252415644243494969728718177743844075643376410565757181298924795565608419709568458040723453969575764100104842222988871702721937494783694783906679679507215106411431905044684377065669079177620566494452229695024654553141923506905874878668668969347113090615752175851856533249491074409891991052264653587935520854408188806610170863949846381449181179688025240721423616393380536829324951323503564308251511445074415560753910351879347295332787148344638744564719989015128028831113335315449306928323902467925894798399369028506086427389927662495045536708105350741433967184798325130848125574246524610342942302173031848646280273787302266957733935262570420081203595756190354805325858837780145598810359150809554874388851695428469563051353461919175007395236183735205795930840883423492376629535928769298089304537307487102446446723027048425170023566621913891168906449707739214224182879230250063724015066934168513014913184606644563726265523820057857316747156098195216510482080749506877508084137945243942934550624382428354359449776616930486807163999595518825779849238151148881664556889042692144359500030665442333583256133287613105307021915880430912516420296423512490272953614105838953706422298481566270212330950660440586020402956438295836116624777022243525467263618413398282929169101630544597436783056736754260907619674637852614003369483252038185045495407520193008792460263236130290119182903589858016340330688184398672556411332334244356408671756414178018069461111303275893817825493781504790848623570492216757891270416433886144481514010841267274617826471780343900932700792179267417948027578676972501838086480549945945596104184411962491303259037410429729350348139164019957931326987930222062922596181704810069328570317847119520525149712629832385092801087611708871190405061988595609804111875276487695401508023103088893876959769539858854153749600294216347831097281069292532854855240717389399736609319804987576618945779230012748456897298837229599892141583925348480191673135615941048490150502518549549958002061489504406445040952533879740213172595518656442095973487595418580505595763876890917469309114883418000786141978444191619911504579656526860573408947918632088610735190070711535693793837340550752853328399459007994895166517769593376461784893717485689965543520922858890223742191303599659354801999197351477827635465227769782559887984076101660035508618934299942263943196495174445910429091094753947985808940647272555989803326298451933341445951130119878410637420334091570600354865236266864313324923478216845347553684553856281900539500500246036773549027094917984460097826460146478427922319075512441960238213236477284306950223794190350733584898216599524372038648096474409613593637562226104092126491089044654301994900381509024780414182924915982482764050997205362187174346502013919152598819284217299495883926171905687676001459497025076543120625687065088471282821363229986973799455575434328024429616098211638422517290798589029115377458961794992784413878450276901853212172833246721161633379225124807210567821302422943808197209650095158606030921438511164916675934258048624474064719092013318824710479124485802261535681381138337612818818709542044619591471393517762689797943615993438994826488737325491520897083939100527619046213675572798018250161590935717303257341159383971265123461735723314510717552188607996555500437247006060060119349200221952695171037618919475832701323205354202204575391169637858095949464397613948468424537447995953575735141160087190443785748019016033405461321302904618646909540648944155154314529372703623953670559222985712607877983109558537519569736868540538712330722572618893674708770866469891724951651249359028184726976593717075358913918561630618307269017992208536377212926209330332158591982118120410666837566146689742677255475789192936491417834802977470257582264024156425958323768801243789734667214765370941065390961645551500309927426067743191319627449515089445997479108026383846506401311173261365485301545589777626071670860178523355434453643646568154219019209461188297893252929723721530524197521851794855578472995457875105651106219975036966223182296086030510749129014927523796837237008185854604175710897962981775983325676386240628347914710619183276277142070253801556650527645763167207790323374501321504909519180633048699580775901816831544242685674701648013771098961827331999565741568135168151305410258466578711517334991844984502548367851417473552699298467815124371836954146397095424412408756453843460940813780405106135649045266955748623351616805359653599283778260681667443006864443337971971095985486216208487850672054237285514321024377745632870281522819452930431797116386329652878573176550975872482299181264507537683715093493218991914664696845149092487753949340675078012451808639200707778776888441496554671404094408410417456106471816564334274903809111816164700969385496988270655898852359613284095016716762383206518640271108289097590809004445551945181470225992853406264735787220954864264708198327436085896756669670980856944601183402038912145001933146236775326948754449510303768125627089279516868406747281560425787244600034947968784642726803917956908402740318015543964782533841045371044383896827198021814579264041310668237123312082769786522885063306689471007545525345255284472579938493937335415971417584214775953997068762394054693821024108097480029705745530077498008172258431675003625611149019136075950993781924713036599854526341211025530501715079870509594726950386303472018371445726677137633899078660270097157781785252318238698474313907821182416592814392044519920117344030273148069722207534651048188208676881687570332009409683284822021448800109232395771189960313299255530201212592695380823727737799321852251107381668519866854190275023588197639206642914005761073683937902824888763722903225509546355237745413685088851682638126308842628300666909254033322609038818924060067433047227736172416511468301774222515128437641176211469163231534685435021388107747436727232433441518070865388028353169049097592491199734174207780869339543553682965381172848409875529769873333047629291893786281584994734786120533368830253569214601231384276684278298125895070147677777749509727933912116833956097226510951585374484345740048389902567242067581465051271406708092190503408575239539740499321027244756514393561072607662122888810892717035161139236710898369851666926875958984752667916043449890984492633306818345976111553978648150381238229983097451646067353822064706114310573398112556182876170987411547511368917454540556718009361069371646668970327378229149978667801485326772443508714776980622691530386774365805682854647252246247697726458426216665964656314410461010117087879802737247721339581402091256515307772249722710592277361607283794634832348118519223276276122595719761647707845080021648757920547141397580673573766124217036034342069344525282093335767610968814042186199282624333985859716886661007089760174618590883165161498967682884640641325640521838507420611755297039131081842361794374362393045052702899932091544104119624227948171861446022171906488545913903898623273433843541540017387268300770264217183846108476770119465324880605084121160111314171872372898340317968490364312773275503925855455612859647634507056395321804820549741224245876395431600375423360471004436541796865071764223967179536249906240044327341274819750261808572460667222270282355942124040871367482335617856592679130437001137948985987283243362839277476160213264058775229954919386933229666981078074003609925035340990869327605679157448735840990649090058349127225865633221897764827913854225362268846825790138551854092020402694714814259704840496194338140685698951012391607061652485116854149634462723301850681015421656905568677743893400378255307135559415074879030796454637091858157583469360142844200277726004617676473930056448040126974441270314900231749497045616059879433137076712886368860313939482271357370549951163929331858790571828922840559525823379459850928485028673728155043929322842071077484652051507854259868747656985914687400607050895527013780700560780356056512338209944694002068873110848409837917396032493925234388084970080122003456938206884816662541319106797907417535889976431506450083596397452516844428099827911865966447304989014833218139209635814819029310242474429012918208093427977600873434510310549597100731639894244017817171947905460943453902842119606099261368546250578164775899546774803017784924122084384549558401703904213600706450316579164385473747903797763823583739392017225500643362616169829336399713119030606266630864112702532868717192713226215060205020035759225381100225945506663104198761502581488257179107259598595382188998023057511889746604009514887615235123315907449707492246346695942694090874380760058431714113606082825444408341879919667774769346359357214196468409850432587959411388411383247998312735645156116392663792907482758859412298649085951723609830617434634225556336543761263390368026794416915762826907079436094113699143995418520452638907635589402954470852450556632978199432510854126789889963372955857766089262423003261860120247788554796643650178579826916990633202879374616143884090135668109873033563687772742445472644965486448089472890221289133797483144355678434533400070499743319487373375947868866856772671729181910577734110213820948124081359092789284230777467397902188162214977522857780470816319223959652185585783044443844286133367241351562235644206668992330979995111187829018062529943910606950791707361579133764403939524245431583974319704586932702693905367658958297849561512019380289113911111709044656712622984277139857458809219417456058928513667142161402328797931870102688134144934844165558204874649071062270990802052043117325423129047530724535736617265493235537731681450149058113763089488130721698515993567686989275777328715936173078539884632571764862793324321734869658649735913427265763647622985538300143831212374700143071317434002957107820814210097498272581740946863393244212745769845856243822164936828892588525519271358066836737808221412183029918032182882737490633634541549700545138454360490027521724869913022559234594824492159992315350703557841994401195191751199573572087205727761373124253057580568387461902580617958011038804534334161795267350110535495765783195180688070240720209204782115986776719201040090011762948779827187575678170518212908584384530319448317331252218620504229214656608250081910310298492248634163320873436847667360551638614542810993984897091861916880515267695521967337068749133749255257603000772718833925121586930149123257167173911896893599474312809396419939471226263918527475136169087294344051294653249471780323146932707550960580341800964217624827756958760614690746488812372993034973403659220528407044058694842549723612444416607901590052297830874124049302909486411749735446126452557213701231613843152310970143427182002221355367054704742933287304347529056480599373334034661455350914746709597974280887508332308513055707577586873028867935715474679786914012433102618775276998881275339681424361927174277588071355120123211297371759100253623950353194496215300630512808778547269719853452157955653318939790464077760195049791824616457980348452648801510914578416421623797331653623557562670972616550724541175627428241682037273968965754055999118119754342348604167439131008161417916524880135498893172007714433864596330315306826968964926241255295957640903877509636302285546303482805439894233275357761531934545829693626950164995292975638424966040228545695306480944685838557476897292633881818048651970832539262328902047295619092704083484921780724802196152642809603615710796627990867769598758419336779238349617023105533486094060281567789289671473778880750320821545140806736965069322169082964845907236783530731035042368809351984508126809232551128032931138526074137511779918698106198333098253815444662723010030051544126331567829642968276133503205073356528145286759579537168302412129301775603270845787876170829207597133682090628253848324665900050014265770235330560281160135212029872123033022035383453250798888736752729270535790651883262810196069873718029125639515372654403950774597247267638421504519042264547228649934702956685859906386717652165851794302598895665854518095188741157016825375452698146803646022429219038608573138707635686793166093064684488935435522996448810901807297127859928495425675685758269302323812154242566062680000500877815833584833753138121348264710399161207435998126816961134303319843322947334242910241833998244873824143086169993815713390512609936875866294920311890744392478318285534189506590284417112062246794532827154458723632874335578882874486732723702976402089482164774586604224768558252756660623990432592635107485243797391706983142038694615550490603351423351240976631356349040152418809987550055425053833783735106722298613140168657527774665956428568654529988093867374424824695769718889789778397602084383239627927587792832003603661913527367423385042142968247133869484972126055170774640177362924275386112658003368321219335515260471161602983139877929659047779776357080011483215874054276178640385660824712010202721673860610323852876978970116149708083036845208899322286151877242140369712904239810024137442773584399941345290726660668732141631478323600966128360863624754590383560737903678428835609440570666537783786109087183101232251265638698143220396574145966408393611247299490469765531341773238976075774733825995757897711609675912526366179391168149390605454400082718922667941060855806566315388046945406607897687812783365010439955083877257319345288352233147113022635546075624538979642661913022294525705198237460354502598959234615169240654199598579088387821268817499927117982349328050009303741951121469070676774710532285125743035234165429301641344607192284820320377419916415351797136817393837284798317256559108882743970256386700663133149050429877838627573811203877117012133663779416147100335286851779807683915047866600107866156045976104939820287855871284039506322373575404694314932452737868931662993413565748381367638435696187703917609398442465999135592416762531501786952220740829003761455433613368825974299504742907449989305022725647817359863519622877925214764921494239434031616424301161297004717786427913799479448990545888708112952886838748248360416074181732356836299992222149409313813080359155816028963841624564974860496091230269824557922807502754141395338213402673909709863129762700187090933011409930795277320756617130031570680479076557622941792995447195715593280761909684642814974364776763581606744848469525775377315561969699630040022372036939490037717151456432547256633011415200914430276357188328764564737079553306237095178010289398913099109706436801491343635372486782875755489809950477057439807868834728690479929082980863511216660674546574366074891245660261061789283172124857156739695830002813656091514349949141536522570052055797199150611662797537736520486597510350024637506369556261140943696100968051845468651487077369984981682974299475597953265130861106532280243969193679849390846976847616601902119072762049306842992326627053456798343518748989855864703465514074090737990574098065299010249813069461571531837868729279353220437698713401340753760000791242849329095700957054324076539857535671189812599666992646162892077605744511681428508019266952344635298621329691149608249527113109336743389837012229813860544986536672082723563248292154755253805933903714438072251362888964042220998519119338097175060595345207104411373387965600231567402547164496102692211569883864228120376307141137547466523076006364537075853409316891349221970249030058480544453237678926561826205205988991920826337206609724338173170167641583629104693449530567330861127278774655605273444496681459201999656842568742082186390380610633527311513559859120483016287059284100832130293464243446806823958941301912330647349254571004140029420096469153822464528957617972769370730131728214836578849210933242177256738979051920433313896839741979365403326021889287831367676193085587795318611574538071233343981174289790061392765047809496938841090000394063947472504930288985078291037829585641922465589585224114789055925756103314976131826488249069831752001855082175087083043495315537509937896562018576944076605668369392192844593260639868786237784502373553520012186759317311084919444346129275122644756567991222235217598858081874047808630501483909180701398253568812635129731495181259879371925509577749477221846516148855793118722237343514594334449084993483188380247788344258849590157543529257359722380715008374336517104709589162218250918270637039925035359216726694388811865512254545507268066812886988392703667414059131747803127357387378409120477158957913036283039626776818591353780125809609873366800718975989465551840658620971082245901476040277453546993037493977651431565344677745138663087786781458073218635517740249185207806641588589702846360897540068002606486201054975040724778751294412149932196333079907635903236971024036123090169758625326554553361548985980192174556765758551696522254108869769733388118430112349561394516250100415847396528312232407521975271893421089228042680670145278270648053905587526145534021547772800028649212721567345036330850601941277449266384169758195850205404490163325415832361008972989788708392529991321732210371263334201086458636895758128429413423487619884285223228665910539693129607933764587209740640840791244238651151430392955585218383036271772385100923691438567602725235806483614214137901591478384549910671927231570201081295245176175152590115641828680896913881453131887673836404937383670768364070007532046550621108019884815842330939063589969830340747843472389013181283834674772735154721780573655459630076465954924091978441783547282127352888221261169685329133007171210169978622852017868375898502255939643536659422215569376503416471516150576769521491295939791964219264500990037676827472451930905931071687090668678575718479817318723909571222248089179123513276033908373223852584310510845374622369413306693586979860728244180196805618126120366080917351077504757513233904015979392948865686164150038039132832810867077354050075555473026102319292141320720157665851222914368325358730949274401224534073964733135086303794230586854345426192103110973941067062213416694625307286488680390572614907558234317164564289743894085524672983817010551089615429580793176750617341996252145772401862943509177337801852934585484481394214654793612574873353020244397379681358293781079243497708195396258696354024127572087804870783432638688759567643430782175930776698658489483932217289075023537491512663797753759978036378949806668435492002385049076943022903061662564720332659887979912833089701329875310561015022983875527429049838309718793900652229315334184187329516217423788258412594000596418097089451844567852935999637938284179044177978816429526108456156738096535293616430757513378466303019314189297793909468762886690469673575887800193677014548158604929601134999015965727168747055556951595686046129864832252253833290433476319225465747607769121860645236917795323201528881903626708963034920061867703841041109254439577322574149883440613969840422026561592339390327066836066547656188041127841741653384620196299383170788892655798467872119548973515331066606845644146360171997890446478522349333563339508276551733270312359049995214759818233949029761515332691592049472844196548392783384361691427407024545606888540319327322311841870549272519196337705772567330929315346383454175999156986359166281356630978505438473840612355277205911110606639658601071966285088959710204932605274522994721472878147063273046023432883504081112544393738201377181390402007399058987817970982069415282485445368470456890646892286100672077122612721601534111379121510005657243193855927902824699384466315451675860555390310429801947764603868332946205344632579947146404460662020609144573468721118318258504966946664045737826911835315456759493109700825859132177695211747192586385732989111316288946871486065850114461852406336693997828013846527625921260914900711652959786079951475070283959953212527790198746851006841304366912488604785687185877047414598633730851208186222313551969196715417398802463101239448117047589651198255584926799392768244070512438093642656654789594716231272417887255704854338254082222687533182694361150075622056836140206716521739072076412573620284965236389890231304150394706713929287530544548522664814254062721859158738262801788696807996627710685401463506625330927286334033529156956535475267338082411306061791254945979273596669450423231549816804989452814034359292627205021379590004964372088428207606203550041975250750938159912360115760383792710564247179256600026925245407748891742308158730157418300935521942284395276827809084585527380970332081795010020733702018850219796891459335904688205744050765929774877905798444335470852304119326688529988177707833071163861823452780291032015470339294256617707117396199857969212462976030044662488071096494882254234486290431049605720963991049608241519474823830779842558180321655641747980075279561495879119821123540237298683281410206265035895144644399828157919548155730325779345988050280692636553363569535613225728571475039754104296054678758209810775541753136564399067465487647314670975922050242204991466267100447548592350072321449683477434580971985351531237981135097803885861958395264438479150543018244991219881793601359489399676830483870366627015101213992077512553376648009658842975197244761670067756927559474975605705001625378423674100839910885734362914048101592516693745247228875471753578821598720598924345076577878419076033323829485795899918416762753844216074073082427371845216040496678430547425664408452091420194393666072406650639780852098581031503187821229602742779718216862719444950036480387853937791508862842309951957394762721071536225398288980875156628835358210172708500006897872596237034764892885347801553760800433240423853260303165391149961150141536781743298350300780242720070949436504237553377441429077667533249039690397603238341964196745677870738435718194185131235034701818059826583796550658814014233026385012344719330210226547343541599748609360448729030426415322064349119772294293951832909753473772062519236735690754399200823543974361638501723169903058218656247021335420057559761144775981742814008370321179968578279593382956617749905890021759809802044776567782215858842057035388569755406586204911929139529845990878474226304864955675332478817773903143443121285838126477335870236334865634925864694126576141684584774466975151412169533809285730196438024214528389347389443957755195712384982950474240506982337544042389563868843738091989722083200645373290291941129308657378675956262896760862192713610859306333027553777516550858413269154430142771073484188337356073412228085434840706679424285016529740920447402934215828256258420659508000336680634787473150790568248042144958359117962489791064329241545005021100640870555802209660352122000490122978310680321380905596025656910978845243332833788913620546551878167973218720702621804103223261308462994799299868326151148464597463578296045689718632797309142918172533382503453026780134568678851747155159563467801430234604252546890012349673915083658629057703019583241868946100970684955825425724040063306409418177615595745725833380001395701438518914144020483006447661004957015391028155929320654874508221525204704334420978017966749902784340725359416116439057794861001987965400384262911882376818762699531840334864857494524628330863219537476259880609412078573287582259593113157983959735283768419196409942883920251708030717016800225392355717345137083541262844776768228650413569748239545637476035058793674164386643884714495187939894741178152903361139879203634931653953215728938540690762752120512081068401911697111566440968026252308415669289451162270579742601379208809976944962560304906477218572381782119814345993274198099665476760728591284369049899885448462987880785702144211281444556313198373090576902798530808436719811324958708323278471964141622776561862076953011081551858273273598472878949495387555616947666144125007636874576776858434227098302161428534924836239900365370293293345683034406199272153726524402913242147957460365988848573620748910896166897813973378562615570338506348461138616431064777227933525815023864572134541564416884410275102081577422912294795066137803638643212279117585193516682854103976038582854064516953289859819559021662349337811690199372749323683346124723998347916204424045396962687954292543512535422011704453770014639864574836440620414908897925553010827183120863898943628317580278319889194455852426216647418834959425345236714054540020696674888640045053388267282779929413145857559055312351795401846465652073057097505399531646447314949398012838080334449888646464225429232121011466444704714960711897092310326779533116539862517147719512768305104033688610324390781052174616229929702632031369537069214420226645275393856571502172995235547888230842293952144033955964931623003897496273179429600866378504405701627022633463650435209348435650443030479931884639703493441274406503589337186765712922929004825450750774932010718684068479261691168543941075423686509037058244060490574763390342761741433254748732933780068985946680979884580672627332223926719077133358330214729961184748924972522419363419601666177347487600231886097501760459512972840007184143823515150957546078915248032863137028804349497365736002440895067031891234070360742309045621659970690351452474293124724901092804185378384428273855924286655345113878356959201756685354136319057729989484624590741268435171374384675702644022685772255715651449051901502780712250466322977085761119596425456188399501291051673659609393980548074005184316592085034475421767640205880555348780583846787900716157228078420166067453627100171818742123709178006104145861138683491181066923251115396178173379172590920337466552441698531086695306360543177421908079290119794585966894874434758730989957618035488096235376118129518344597234541319536862550695381082337367860031646878181857517192656131589014438908855239634563706504986639381979182657130198962251043166226161870801556769850963417539572368062611387262131805307099031712326727062827009495624442887286382377949432498338759900960708553653046965786032862355243639003836284292318576275664580719340360925876969042782663148336634057200167660384914534356325779507958749557288539780960548532135587247919842279254828692492513411422626411952936158091214206806640954676758592464791321378966409206602407465795105679794232232818548911509170305676033565269891873002046916230728753487402632267564486063990760046549346342462996433896928338641650178152153686914346341999457057110378398576573457633795947746166908493325072080958509564239170309427872140208896103086443406767297200029934895519404324544143911160531851292474634612397668984487306352206470594830335678030444625006153152705335336124418071941947812950568500380733321175731850054689041852915941358840373397530290336702301346834052701095937921207785369559921680722337311817282716258776770067574719755939523812143186143504442550517525339671282152506846738403114224434330333012302118646938628333605830578406041009358879195034047246314971472376647389784347876916446994119789944599190088958139050456550844618565981196394138165466740902662887551250507829803621564171677877608484596774835375918672329948090517142752862372020008854026005707764777762935818185455641869431065166013956355450663333674534107548092965954422776282722829452672389096218202851263281718166694417504132059990611571405219199995034492615243893037702143724774911465178234667562063497148756452295141654354283521085458851457562677121302144347027835215145516020367855102062138441023778014321724966031782134099507145676169321829135748624628399890190259615243874865972288458625017546854322886981520719306670423886817037311887450197036806054663855578842719185600030565063410428772610312651206534858664687778073421632796614855586878117439788530631791720516566816045155513482445537650806510114528662131339314260165143398158054611422426219229349662538602082587945806003202393082968352112827455582472203613093482673275484925623460143387625755172109371364290891710847266141226082083399117770945782324381595190506132654740871958891212726922428805904788303753994549999791540313372498215511687681273370159748994208647061717463015935594033326932681244296110821932078833924151758986584470524344560046498061242390357572820670190586900614145348935754151021924232288469643327626082207813548484469255415746371387878549823108052527558541541141367305205447271128639104966549473909523009627685253750038702378280303162661582608275072106356685110386150229685256720624026304267228731612329971380889018572825879898246106438382516631933477425988669315848895455438177236604523939311279813395743859445600809935939306415714275175989667893345443057802057186146147828309755233001865796542771691616911343492176506674264203503512729498900526683353566998073583513092322897315218516840092941753850435116081856769298772589932644384118035981285411206247713268769529552324520817261705669595847925211857487836596714492751185302790235016355821917624577072414944899937322978472898696688744534585186439326851943984778945484655452742088089223775022268511546784837868887486393269167379838366548420786532978949195917653265013296361878204464124648633228868049734764976864012516344533948925067994773992655054126205368512421747495190989143853256085532565293341910489553413074604897690090086424235890677551201163734931834142577953940940806159881948566864967123780815408913428726212903357097030813107200440272544356363243244649909596693678226621154318383236098662631920826587825267237861034712797628446715844294150264357698219340483326013591508118258689906462193507091277066353634676194882458326161122385688039778826356506347496048924533724963690443407294187809114239029392332800966253959404991024233286952587454163239237062959945892321836799650767470619821911923209118550101605405587535659969318131298422733233167888603932989449429413536076073884462630144502648238798752277959578128399387815824175300115832899560819400452021782505819215027285552460239088101387120322775885205202042648463151319462261915680652600894571021076453728003808661110357133726947499170236080559193037579843544445199433473195920008451932636578146561823536434172496473749431481015778974121220150549197023063381578447623735920021071711422258138468913185146882209021823194267789139869104614544188254970499505717792587504749544304178623216432231472513375172274667436056869467746449756719000203797204606056560696516784385042760699056697001013851454509234119330287648756152540157462147337894013174404917456664007181839048861471229751636108490979274141055930249916813977629173408089470180117494043542279887453541314637046061626267238432326768183083621359969582241871325442768011016084964351477371883338864791501890045020223390252308829619926948853035378803168783584978378475444321127240004350378547604556221222405726495396571313831683702120598150304239258868352347877010338603321194651187620750930116351039625268440628659442302065115472091907480078775016293571831875560291969701674683537491688226652989028125658646199820641301401056146357949267076993703542389646701499965331378429973054812633847247295372315245927682902791420813948560614678788338156797030863439514924405973081543754208115114956989459594452716924052071190677884931175068601642081006151149805719592680171620299590255182231452335437804262075780545019546161994792354886743596510358808836574781436215039241036346369370121254585549183802386335185300535209351451089067294975409553436613247214763807846117215844424675996419582848338303724398751642972080815194299774006319227066871252202087244975384180146176388646667836075294578407899770177932644495846217603724569728497124528486802776586721971532009636324982896000518235803070064321791876531531986631591974565582929123102557227945242999619556711279603316947772009712416417414562488540011337111235644717708854243310265593236632108532498569461216156258036355436205250524905130283811932739018953602789545929759981116208268670990503242952036497309810040489462032128337694311792340108156477277083106578118317467689119843685408674216039287920274713010015248971632173436240314160308834306802391377133001708300596668801784441539521895461039981699137732114294932140455811133261362553767923281838389925385685141871095763841717905866138947891328839788267642258990450270449812408005925414117125155200593674351469965755522246988927978716214199308241567371724223655632651028511147931737156444990664145653914626599373637078998036628296839625645290633140424064046028079506815359947073996820855491802115997301241562954834980805375608917846237678978451874497737706336472504578659353218977985846834867696162531381753808538773146979116807252373330390644030626387091861277428761052273130316908045719353944975517513559978936933476277524960981048486681224031978100496912345897614232039233117685566647474233249197739883533410271874616041617756470470394343900436723327622736780591468767803216149013464423756188150030147581154173338448478617129143298826701259603718051546688507139806453610115563581464898161933649979926348764612436971999333170399850680529276676412539567589049048018658248131892895189337804301308435768192716072855051385121282747874719823492992600013080570079209767103270089819785446177703579368819073664210429829699274544165515549940231465781513525005568293942210447907947667067742762566067124214329517080988189980271020042225855368477761156328322193064760635134453806598586599957277812325933228071225421667918774522070135172282444114327361666136162410319244346523138566285777217251256601997239043084772994682105427582549058153090846329498813355143258543551769387611813306129888000596251956210703512570356946003175002111262744346070991057857977671919531221306550228439898504163645584695552417942452139104890208385518238816847002666416716206579442517583420108311173216737458636325652831155784275429887222017538157479995109969611610319134013001964683989872064186466073537740093138622760513706558072991001030243965077004258372931383764846275469473635553026134578688782026208683017892354662779631501437156920386468862891577438524573476551913151440860460371019023227456981493980270334407794328766497537787560146541297350813193362946724818326805820383050088792468104795336305866826678503917530406017339935969370690827537673937873702303706265106785410122364237143552231848920473220431045246462327324642338304597796548761911297043938620864493801397196431104558572238208411866622376144892345488625811341467531098824107156526556962999453240720750256418416510287042020700953776563331459472215145319040781846178048642633353071947211178716178531356958710989552920277354323705465670043083892307615391681940227113856100525495898336801633129794012687109366466493900076482557922441978997319968124506825813675840350010358712353655249457008262643527452197237623299302774362407970910578017443226723554039016252186235455701180680344441625207034496479257496618023618834008118936206397059303682433865990055310447919464397661195411018460576695192498423030737595648169341155790399195963410140473125007691685451992229258462264601803111574039941747706767664294685947138863460691374498376394909269033019440889483900305834715194480993989869877311558246714330299362510194998270984147532586829524886150527816945601812728983734267749689360840912099931141647290580554825009163477557039678621017696573783132773408151463878907117064510335888849188040022165690646663024189464794496087572189093279437634990688509853059907818349385640620874974382235274660842141563548643292694134375683548456237726300648654947180410721537696161355554323443260271706926463724566884945767240964109243952112325005862784937720943564921482298039158474933609603294893198210000463893851300205487117503188934190163706813000729818754558818655618897608187995301428593059051646752171322443042582865425118416785247793781839318990132215705258741126141500976850205380060603592996930987609091496408063279218166192776482237553531609709754848467676342890862512153652453130699168931671307841257743724590309925542060015830932534916445353641062309679275661851441469014864718559866912160023315557368318778437505392867828952547004640852842321454802368647936266901474297217458792904906173727579002429215141485911685530568649993291589277289721250688846717190246900891775552945964634301033540015035393735998066891892210265754673240888110496119006258493658042186244357529177017304374235225955515001945775240360362830529710586550218614450939005137019766649106100861626426223477091668746361084010257631057756149836112894116142137902527225871959327933069668970847597466101340916198523296390290410855003681395365555827228362805499612096246554597208999293413366757031716282015801400531903065115076262399674742427613449421904410139605834260584812046842665438289401394916215076846459522658696913191941775852295031152655345174884040321235260340585540386625839197339170554442742785413809948682930444318911176964043994363590258185473376036542344139704565918341630613088938446177386714633283305214823304373135200334668488934077851731227955653668900215629151722710451126293065917078946045926049685324890225574406852643044561712747765286183619018359666392601635288725813836717343196487540909375073681488745516789502716828267190303232361823137516713342344473573509091965192339737953020993613559029094203585482197503836702492649042799376134307980248608274773171859723199055512992639212483511715980736747838881715860500888361298229969773474475650664492872797033187295496718898525451905931841630021054317543014282160111689242199132798972918667631313002116365433577418302381042826621263714617717723833076231470976703487388406698672144170658576450642392622557572514322795639749466732898829524043739502378904533284949369748293486974671211958304508700961133426690989982564991314679857072210953716406186165707114721013961030869821518687116364680105474702861874437827412636749690263085285323230377061436893205998317262793890852200334416680079526074137827801451574314193677443824799245556839729945159149292464793707827661963445043031545098219947075207676402535397958045788268007760075892010692166568897025215812649048174868083876442423808115421732366596758692308334402199820940691399667667302172187746350343590825239067804446596347780028092894010869115061465041297527232998454357445899193407517440689602522775425247002781053911462339170062829368945711770911204696292723077580672615704566583547137116926803683462088418591419466333780649248922471451248800766165262380040908511062131404977569860963317795891328845096974957673888135007954221086660791122839550528664262786305981979675328713804330956204520569638708703755897064317807420141514200115706392031222421127284311309220301543486636367390892438958133102074793440917440268634199148054201402405046833252288450269429497244822330714326792691127935134696849134771969717202741116856977128586075577046142966619885475277919724649461609046291498129654996243036752637894867040124595764404002406350048105346966167285457318088767854720299879082508056492012579940155136801234855907329193404097690314059902116372859624550957104374518767937901940499669353355613748975499638513643742808846789868846029276522704087415233485149322113988690791497612573989646189168614719278807021969892450052989266350946854983793617064984841902069712105444973532733510232641798703312086596365841722355813340266644765228730244018077778075490178776452131117735513321228836466750863998665477338123015687926404941856591463564360411835963747948221614306817886521484448198769139462200749676878367187614252219414776771729255448296751367335558355513488141115308096005394427298324138091001332624274865466529545704827113835388667170704068182934033546806747881272468075559803431660735827702539101334080974121464138527834009676421292538055074948047169453890963434662933199395261855602508752667721336196191874172612616450329900578927359944137145064576653916692486231494077958725437580556938789132615448450477866383050125979046607751569034657677194505150257026228533875816782089921325432746140203323141437259017906495484870725692412419753185604637679851558681443390380960933631609736597265836007250343325071603008861823372676984531342495597210568230978322283869481092091151622884993391450305989178403697906436078249607834744836059654289269934852215503415408428425034364049304256931490369483885251784770344413288687184232919067202171826258730451507396642499669912220288546301850462024594373880002172209921193789554138858866125972885005160027760095645825156460920843734544508454788410690076529084742742451441705181440426312821837003128114838003550938817842993540999443543780567511727369218914961251582567720200105646161301654964330132997275870248251213618162980810180814375990650365483599001120970347120554821405540703348835228520119829489162724790728486395459098514921719987950242923277094275878631183804832124701140085735354902507881674496396780995383307549358517382760942274487163380644635314165852823638034118459887315995307831091180641343779809332338204369097545670341375740299203942473377106353237293095989558994980060122428465801440994889944231051620389532713030427937533416591641961061749594544012269433886693229279654619730338975409242795106993483749417819595603607611169310555303175478212743338127641082717596263504768721682651213810673402496844625639400016103507503988392226987649496578211240943554453169405034116817803784452508918684390705473679190433344997290322857126242774780999600020581691422519333497119001192845284847939303240578322059420523110644329562355988237353225955255469618261192710905658322273796219298197119952035654545437111474811319810051801552110873475643195457858408006671071481019512517644062003806459601330610151793110545432422171041975251268567360065852902363635580200510509526480094741563456629671657630804055444821029112308187663183400776875568995606083082765547069542663204250457491122881198664347186483209459917302772369911415584221456953165114364201567210384506054058605502002882369569699007697221254469203544195369132059546176560654873810199239101643631950327597342488444434348462173827143890848788994433667477589572030182931003694097048488832381665167183974263574179051123706076693745760251321300219123373393233181569370368775571236926040313633054349136895533998172875202048550300406243905389904972296936710101524415494014397891213866048288670234795205818625083903208159987110414885368062546317177449686671113018210696618264138169694311872465384810219616532748968455992254776626610783232910345511979238765976637319242643170202440056621568702122761837622273452004721235934245622675459704992639955916221157822838002690086242719223544375054340812330823632054905481286440777149980461722532861270638254639882207890735842463872381424527880497171417425106974434095672948538560890317502549322756915795357167557172801204752111361922717260934868392498709283818813819076702287762663016962143749726576089825559169014714983466626806532061471244189792259450267332317096062925711374086656062034805123379455619618956028508255448745296122363471081165363485290146473517350986452196359286108857794507453403716794535553963497081289504446448777613901675400793737324833754735302408881842498006445034641646772660739356016651378799576487158102126320092187683898736378632155989690401178960805021100022276251346958267456455896367072896920671620414232741008966207405006983162431970361953168430463900706067142522192365846112414848393041650855341300610764715237095193983490032910100408023494597365509349409971496395715200768438969024988745662592320626719988169993713043221560605069767496336395882639990355968145437598301807232060435921109275716156951605574274975719100966471234785704882154357706863817903052381943196037093429229703342460850544840979219625380495276358487732892300328291249867559019786145114104908161788445656654976607462606306558885640896704981582919870118630958119829420758343854775358752188663260606072404631366876505556095892484823798167390761814124007364182690014517215055942249421573275880022808694377756590020434286461111775497666133079079913285910399811255891775622074188077306508335759418822032890297778356279205185847658583727062311673251699182944201250551647421658449411451982183017653729074826396015708963284743426511812079391799496878487957658733029769585685517168567105456622441299475592293460685686789883689249375635638295743826125332150231588618696060556117149301035513322979532288459505687108840889069368469916332822201174123612866899199853938558311046742763660238410358823147303775984084837458563670550190748225588927817376082307134075565269886376546396507301637327761501439812831288146279887037743572687368900741205336528486075714786842908169017190186842210594627033178466679719282348965264624121043030760564142625870180009039956333028005214422104014384394333778420981127544706714588843350682335645112904998418342308099206148626336315602243178927750735094423077146570940926925761969244771819818114288228116307354853956656310142802521987956874475562670874580536952373384981704769841332093968846914680449267969220936625507721709991571603643205297050452287579121758006242408964036370846564878203367958692662663105298881204879168791124751462793535933038584056157071731895788150600555191665713227541886801166752705432973204976133404329396522812579750109085329575363482139048780197689594486975754666516740509012887380764491971986625933117074837862189467443207248134205188466586005674498670180867791479670005922986150958796403254425438034292667054850396579661287141400995439882071780056087763138531463836811606450725042969767237138405696269459562210415159477422105661820064884594728773487006474319871690953154592954912349517335813477209206487381677229821485704520421618356326417468160779357612724414435716641127396844534919032876457078730755526478988728402899342550305727169910984346509386400230385045135966392426919407660082439695655417988919503175861270617691147519100079026394119026629121217867721089185738220598199419673278463448754102092269712820673865821253955315325638959356262255690476063397826635423318374442705964378686911025162904528014591871158048837252933299141216143179039789446307306489866642759344079922414007490117124205516842822378491619415637240984699572472908897385517716137268389508208846492733716867309498871408906048098828186172515913625313314302528750326054639255897133303923189568043441547161516697561374830889271676635326086720804548694827523709490412948109169793405546424886003560398517014875194741376634671348664503857223658387811243278202055087209363560769910668951644690226981013059027431688450302376126163475064026737134066297067544732131457113518314706398229192672014644463314353650429573151905818987280862524085962577075608486904598520406368290543196430776597489751914972177864119157202552523852690692460004243074479243266664956826905019140298374010656459145815726976831640684984692555635704255273518857093993479772812676191045159165997426544730501419331710742958140203311695127669715943345681628755400869808982857440473223191248991685038707808495837393769794571437173995041536443869643619121628837720228660124016990955643014115043278526184601705038298029840068361038870600643155924970768596845936780342804823102127259560902999630841898678846552015564037352187721361462599769960614298615007114061990101102754485395347929108128177605371666141457010222104448877556595234612671113510422263278474464922155006139995695818631784353793564486897609355806590842169263937548185974999152191262514995814423593221636726970531258468520097849063369682295471291520691509554687870605607796650615749441573824432421456124705723508527628248028708010806617026412799409822502188150457137203280418169249410521723405813976493369102322566129823369773288465558103404437048217685240424630363067482557817331870513636962610332421714373152096100927443387673833970632917618087775921184352173296306880758756150629123798869520129187220410032807854858518318850322259414455707785911660808344220980456161904591310813936323121794175003585640643643400201312532480383638409038114380950742281020187754543670771667531435318021907420510556100223676161726682349938216752907716998567115145848200434161547742296612259018907778258330550001354401699866685879358134836371994019704271813066174162547548800168960948213440335733279321154268033914983867782531249063632764042026745184595335567796420705786631951388476778064662467214286893681565379950951769359242923146956733888623641162737749084420631992257385698623232623810643600935528078140525410994308478134899054377807904546469743770347931145336388015569561558972618536961664091329020200918433631693423841180936019109977850192920638687877608806015799599774512974915674452122727751824848665507188693336304782317233878114324434439015594461353210856067972039952251870265886972816610888553735237434704222532121045638130090576010489028523238253783536462187580700395841798273082908634018281952860568260457116752971886454580301286440699287709091783761032406925507319754264291090742259534183712184874135879717393846607602154116071825684812540130863190794087379271260426870536612936472340788382476469627417694599742466755046602661679797947986534596775888669151289674587098680372808660913876294371825227132828722920440774483431138726209036962729321223414049250866207280473236803576560679283674754787000822416161271172119795211209906284390685556974590320957827615226165423082834721807682001090753098277961227173364530802278295705747200877062809084546403761209400717062181641649983205860626716088776409437284058772886421132831703451862926837622691413918642633884738894918031058642050764356505292370656406218235132878716027421817196291847227567251902944838635034542530642892430994535800537856423991245716788242808487611832154466294621241654995019400651303512936906547339479084742554565909273830467189156630039049788325969770235622412317885874700952042220904278630366999758547056925988963088110857067982438626469433279702456507585903466227631729702092091620001781490880293129314147387007407622481055785994209719624075841468148980925296533409504060341723136331677120182375848257177111456740517109511867570339064155195623052282770743581346130641969841338994338518657322873869975537427182794538540610273712466891476968873711448419701372308342650494570876059851668032975186591659426943823268131072911721188944535758112901906513461959328755543613614868914568941870934279961226456585443271343980841061006178277300256595881366602181361503869568339642157442638655241211892651745525441536298348475819944993372507251862124746291795328305258933161224394492882340213620756529971153419264118808508495245476620489041846245255605856589745377271074268706195309575494883057420016677647959262358540955015651459025428093214567186660226711455383296924722485563420619890014486936015387886082893633326881527969783553873278987980402320377902338038132982665829707440707663007389620246220502491336824934448158719937431054036865981376226796178408949639121005936871930331659487359379212953605085876989069846581491810926870107560319881334677982160761324022782042732780979711761496734795193959845630915077983344522051744327858103815356706924125480776914559235337447884346647373061524090967453093354717971012093863436225684680805786901030122434588512104189357580131719325111488215885322673043221605600044415231172433949201254380425410527826116289277800075906393087370155045244306981026367442305422146393764688400857953814871188432875222958150926258510402558142787635667883255489931150780046864776533013865145954132036741905215184568526046221575250096350649949755723529931143002902807605512141686935770640233646212646219904616430374397542014687898073437125163411355882535958184814455366795523693773053913483176391744036786431886341375593658055529200691522567417239796990990392377957622148086173476174928816443395700389538683271596931334875761346386487889806694021084520494536263643274971226487869521868515191532293443733769035456876108058851233729201165744856585576453796933820168182734042720855522967584126773259454395835598534904413007095013062620061382631120698472024896349567641503943169129631943923741887266555000859195083813752588963136676548632746106648902654466968212464991403688011042992820193292843585157271685098512987872523519464348419617518686040605814452233450275439261098575002668065632346669386058784683342586513706701330304284510215103168528658502896378521872632552403010909756875657966670171959995578316440062011284939635967983630966172239208312916073699381000818281807118536364702912479973676082741230659316810333482436532545557282115788817741622553728509466780866425903936738939729519237933531592427857854764126340088918370615220555660563184313736737529859464635411201673345964265984500574318413183602273406369942186238337451956661515046434336441649259437998906330538042702022004332004376933633784495100312959119512664102576279682597603998311439475967592240419694021941124013517206659263759419684686829060583990929315011354283164413048045449850403947115902335848350072057710335835611784934702770090072329946154653070272643340758055060896834805417120072148998358080198096571644897828280931818261931141280287347848081118183633065349505479368503873285681795019600947061003918803454259245107429517883946504070524071037777099808532327731447966207959649150432892031941097134529634894336800544598317384503487004792980722826335982578700132822062821184478889087967341114068192703913474623058619840650068906610255290752376674654215393839951701927799890852106448307302636294965342389431732820021047809118353787289136147454906110942596003200950183958132921742994516614553618149605236406200139849393968460613502972863008487970241046406217097298460995422251864594422469070803113122757570679633386559871704615770767026672284201040357069526138126172162888977451356493153058828981611778225086970387980835819636312733651854091139980952117967860469096301297068036903230886391954929770757380870652440420810730249438889231805345440158231108235146411078791758640665880173491090022127049005265725845673331942816232235073644322427593518009559389814238159749074630269586621959896491538021996431021323982524859376267725476146480108755713553561520181639504240432644146662073138786547574720881143954676096699645110439170863582225364400755580454088559490370827540720410201159428819287999869978836909907609839116846315269478210982370550114308635493726719337373979354923641125851433135450914812474062978382116442357261597740140162414910544260749385509765915829066750398661660896005903738526921701802822649726855106634386503098445461521386889832539329673541278985852758348539876295755731777906520427367160540526396950431641336495988023826473438352473003286246978158081071135923654343578664197848220738560560100150479722560494264833398239064299329284761299601768495872467448549932642958037920297218310868582511249030893055532066993706737078010735035217782166898235265563581714855869783481257755143854053018959130777049389779293120668608000844718234309742511797029738168566438008781988352911987104343471824644051684409192468026667014217086972701964426566170481517264247723889771674372725726837418669791102432169892207849325869851343928828036698890850212184691910902058708525248264052818185881580400006590235000785696043246592115617587949492080834087867980388945429484446264658079007872370928036886738043406871854037218218114646877297601798275063100959428759338006181558012351954297720367648161310445739266016086085282347859311583484367314359583210419164659376517144597597471370637588561642505622203573855153471830239266783024334916438691245625733288349959704099060471501932950877888749091880966206297982707331871879138569419301555439262525813860114875198665958768051738823265088387190100234951449843909643861386194387538463627225865786811885209131164028555899490415099348232290129016022543016737898189018201064606317877357652829275296976295873493834556337388241616064512050283047344349273982243599862473555704190580662831870402747822939373942427366841244368035815554147141235307892498683602202342398023577453902350751509920315090972774291155212504308894128721220179605192679765137342316951402767797237823383335796900077460478428697886348041695216024198244051920427690332104470716799515935279860797419468152546369767642424558680993654480896631069500660000020003447438196317899639421713384282912241685909544447382775624578619202077814307341646790570782355291193701911165920740563333300308595887242700283355698254187481650278994343026877545742835652103767960430899223831536032396734499444853523943904656262811254289293154842191583046417817394630781653968269247024485560680827171768023409981973656512157381328904922192718266160178704535834036565465090137798480631486464851250721906567073571599931838186853485093967107259107105116256790930152464871043621924533356625174039958447953961876653006265577998539563646399886758026774478688141975425914778614666140085565435853865895296717108524525171268297589231462169501641361472622330576251868639785492972647522040631017572571345784518239360280088240168563419872890753368696280663856818314478644547692533667520792707126774181630303090855896401615200779853725131452194030928760018879313366840355583189333080830716378742333921080830533912596701824902591420295250627228490194251442968596865003469807031928141238146917962193697226607237532305809814076541732220213662211814464664483402883463491838731550270719994400423558035540332037763635352325055790440059247427958339999068519188223043873320665534144272460157164020270805746337931533987240357950109873591538895603521657059712033269827634384637083992766677645393231287563151926641774889097561078327942660007111831414353887078934385276120071234152921345808292637358473396484488690588954693112524056649822562784878478879114985664728915736209835038861261498688996640816705517362039755852993411682117126778003559864919594982551926121169085465683857158496036757253888303644127135442752858415448183468417018262311141418915980542127155387025532357088038584158156716152803419148682491896827030727509661306679293538058682011006084860295076498922121183877055507900909880809240728388633516087703029300360038942584974425421099134307624984300040009671163736327724361496486274337025702675247323614024443961748433329473660600639840846221461470536284491307970830684228315043041917340539655912355109779741536775119645022431038681177055422213657491602222315690678064285310366511400758772723994606097028180822796594767053059693175868105334031443524040339712828034639980740737061022780580687755294411892809420576333356472799996706673302868394513243735967730810418620242978943947598311007601224556492994421925258803607815941025499169343851078897935805893722504131654043424148794229833879039103335264818581203710313783968964090363434775926052457093772610442768942105386040539841367166324302263020570807258335091201595565465020122227717771591900764519453163440061397633347557307551485197033613705906528032006477593148980175354556789847436773555424624389485442722433398867127002907558157259108903559132989234185678904417159224831294572893582433906746898923801436469093986193750010907868301493547841206459135046367045234337278196342148816340503512435167202265044338393568601207320669018099650018584565817718618439828274826649221757108133469290653316389165681591957445718375223636048070069784229821504434598390311590674070799560871026855109555601357243069404984299084491242714124320518366226852133481081714546377985330900760682631166054216057630761487432028152606061039900266918562485178356233051671944026160255091142147535046264761112589963619025031717026755694433272239811339301813001933106399043609838804271188978060657466718370459955890316453781617164611078004565593805385930231492350286582217799027232468597405374544561883441838549200117746760501450905692849763433493114043248501155408871947557893492096309914469058036448092795323835408834423915456233236492244849627068706790047992826040463904255337420959240427233551143690024738441755757595667925054437130354718341087748947656350107228431066820840458992192522991812038832482074445446974575315258687778134564431588610224101595998557072737397157350049933772818463152692982383178186910950358323349785659280393215276970033108188913129269854948142266238573858216573594460665959063499068201578854320333370181426202811490293651204019379022033893372022537860896996239106189342029978833982972712404569014094005263281375953076755038240932091520529422022234948009324682580769089740641865740543893830233718866480219763225738447531678495360566003097575163158832761312477244504895005945972317227610159541182617678279864335052413347935758326512381336808951577007107369803393679916508342197207413089759314344058333142048330281496449887466718365110805601864463961914745161350252168424178915532656974370764848803824726638670375952528725125020260850956428949235313817644024091448592940501655882930353118746195419485643960671140377099200133747419841172970179933928666629552883425252639976485115412592849132225238002454304267303613526081939074182009693434817248441602596780757242292504128434327775398545674517982564108074176601832063645051824099190497107926920908117904805148970069361418831438401778632530316384166507685358293883076383260079955556132976108637783627516281594966081998941690192228967634820743277768702304934373872099002552832568835818162963853498170751996428242955680288497601237403228565612531391579631022626998052456143856378095811896795189479946410280164594469382354044735749913009972222914143936003860416033624051048951875926775195252094854436805242086643482764163507602264498093961707840389712992295358846242205861667902211666196058809525415954763710408689910516650488920058243307045051015078056507945813331938474660444079901095554528998479791666863962230277373648342030621610423233352379788981909197204279032573754730586000645644363567006768881541304687502735506928090342560877911115926531538656031419936303883966985793648241549095372850547201506718843634442483842511819542561081981117245359739894424617553669613133147260494677184168753775621190267735428700766933600449250497930271093393001963082854709032144659493781996369376005242047786800230135867407693409420208596529824905341631621387745308234317069933933085411341543041754340742314869169766237444016427357370729859788516279171511763852251501493880500861568643167563693747379851759637947102655072961117996982974406804013117353492452021786717979600005873450892135161775359479151918114463501394098955366434269653820471821458082916426643493728968319744400138284521951534821372028022820596900666876190240426758448364639318916373340445732156845202310899887344429526707102903917836823776338727158851688446407194585599698346065640133923833487868781049308298429160010879127440809886720744262556186470355668026385223329817511382288665756681677102267341976924044864489604415796917092667424197677666472186062161163125853336064401619933696972589679699269553302003570354473309285998397308683812396349285278337248770247840884108694849861616368920186398511259608134745621070505868854362037939114706447381406411639420683718907094102895624352090777986977222831600767850373327356816441783301863295290883990089990860148387403631498685856451509849272089963382109943526170344153121661643178401632550120977655356190974558304568582183272169886856917403229007430732070514988659664153820565536962159563182039981911491424669675972436576389061200482284509387860842098152350883391769847000667385315851426818544792970262650041244351520104435065603710304876363758456468004052195553083049312219222088070807653440006046507241952977121930294772319307943998224389785780376384652956468015692938495697990839811590329545513473599389182570128630242014859533012397760805292196672684985295607613782600093920670280606609904314224288491469584761119996785302954479755745404052446387291977467527757190139597362778383455783710278161077985756680672152688491709844739304944492289304731749686541781859669399345936414857827767259635971271743670128423554688298867999474811406292152914772098912211962498644048105303686659318144229240918988343252147379074859772837114060530238529403534201538716532025670964418809308614680926042679760094882540111519963180595975228891540593940352875762866470234387307160342144366408520847461655472310690535319201797802820884296671638487111351771440647215048880563985747341232631460689887235843835720297284532522532564233927237336028102851944705970373850665064370678906710836906971606854352822487149342852939905677085606545618674269044490865495774100961655472767774348894160818307270778606926944837076567237500124898419082239251641167816611384206669416852055023059642532283173747813706104057130221775825546627107493720052400831139622496619733930702460008024754562773768242491930839890368400681260813274569549623137488395853075540266744789043328998763333332427365560589779166713155673097418917235058941099646366827732504117188589585353897006716033655844989382638279533239092662899857256484849869252714310084131837359115506030412735191810725824509589108330142625619375134243125122765990771076266381456935184695172708603914481934562750773894923423447826156004367760877818340213882956703405509221780658320947361324037360602129822968512637802418561614084788459105312516580417567281949357557334974232246036133873368294454346825636795125857591586816671545811123236649052744059978707681594476271001179445152812759483879990842059610423611546305245625404891373719255166865791631129521378251612018898834706112529744241091260599664406819409750707546462450693005224729461238304388485456455619067567723692725442601110820135085644768228702181243577917711791525654546953206670050380221551670362245255144410065140826718452112185568203243055747393355314492646264075954729313599704274214578708779944717505830745589284544314503004049395035336514446238129314869393306178252556664908372581780326029178633575581916731988944207126512606493043052946870556814648983001333298498851562400050134834361786707584217863462406784811594708301169885828021031712100949106257769503095389260739797998578438637979420306660702735767221139901416037837286533088074986446091934175590587354923324120891729352220835335242371298239883562175524788644713321452891850134853214032707137521973167665611647133145663366337457466359022669387269152018026696020229822908253791327782794031054768081397662794584994414322493425178158589969671631405637530636167905938135373697108970434271091570114134680536257906458187737087874389608328091952391422821570178630097891827749085041641299350043348388948696296408843688217905852096059270454471738753129314201938091358018023766740026611599706213446541377716990002971728853071785477264652120982918763111171209901717196696011492893412346165410823928647754064861995366958815130227063895592245543074262529927715600685614345670655271884687601082226511467929138807419943852536058086941903760098145257660380924453217185286508955543244651932741932219954586887411660408942432377313528735229910914401163671736156121684483178845536650098411604725758297452872032546482454155571135258196111750720555543000478211924567117658643722022891439830872690721184241892478588044176418103034338863515693040962166317188565165258208164067462908629870461732101347155119139888192915423152460691739529599195699751169532481048719932027675832141680427743093140191875921054559476022263837957897551476335117039086527016516293093167808921343044491072144782894706126550622432234621766148010784249326041447383465189421008548204751983355666273837029188452327093458303579299911259926963820858902103424031080127242457323963146663985279165644168917217914751145151131582846791469219588706281368960023067979714964278125856697315142928712090427873126416835435114883902451422771196503909896160284158530800950297734330501876537836464251508347048839267211348662666597259375913191659489310856891896020949466527217523332529906798316014345688928456938283844375625993931949159804353361150019570269399243054367815019101151897418810416230657422158832371906318348129760622921108633124246380805919806701792821295446870982237052872164629154329470860483633490663360100978016410141761106132594755925749737678396743549787623720720079114610114087719702205193579348708316790850807105184370033184772751612307031330139500165586854474212874356025438250511470409051900173684945984935739665339689535139571751530451341747252548601375823002499392416604140455638723734823336363542960510467184030426231513755834154831585424226357595045898594497376260800387059655820582415526081381273557699997960574969461363160374841045485789130398275340279216776007668739441646022211523869551625427988498064220530768503635376191388121148616823573925204935791100043509847729595288503092386538014431062984198225548872437561622119808920421714532473498124209504740677991425430975332036893707658169536411599236811546173519861570959190679040843140369598369267293162770033263718396576629939941715555682511131676914539639053025199290691859370864437601375306859243825557469794234565699865099410996777060906586346285107401182146187400445910375821988888599632137854359797525237431863153111089986095880220426625024133749401452675118087116821838006308762988128257604890998994667140666545642691929096358309075714067795283628568631811762012497772164522860546658442576701862280463292890623153686493254213663390992471362318647439319430444000267311634943478085189341993728658654651483039934158998390133957190961411514239607956450729444365432726656364373503609340477501794332602010236406445289813361475259945733416200816584825057752050137740103812557788553627192170809360704262443121207636808092082100172047987422547708364956135016336595903777168128172462466786132629860765453656144169708902843120181534485501819001197606151177950645465362026269658589299955770616413301629369528697929063462360318444895835223181332261817733152505065902953365739392819164391561244955165323653319439325072925683531472192830520951141684712688180574770889621157264236316631518486319182887882861930523008954733586823314252624724344620313169132797511973261947799235590458348831040700302685422311102767118716984278569266374600319402276505130858211061765689713347305776058286303894548585112167880553613491986799631965768075877086540980399616594509574692204007393665289257439391204642452383419411599285983540847394339604307454019720032158462768551870240044909086982651237475625747843508960672544489193731346818449595167899515619162646184272925971720941732678162052973466932018339021795044749705502377486649936879866316581297432065228160199055090316580915208878694952832138981306830915828872534223734839969263233873532989742937308893748928018809458736850989783146385950188300215461933370421472804588385965923557680302945770444679695253570665788312937240057897278066833767092704302258496238239041252476931000540560571819861352078659122631997196127098141244873105911917036948788290432086189651783458258742624120618324900110438348805734273805291727451277474168372057489470792352837427919223393794474059941624653712685698855641697640688988225603165128773267442379653083445263165877667930366820221948853998471946311119558306248596946392952637648359887623470749503869460608975685724923315672854468414905865844312937626540332485888638482081913139363764310708826824041970385360288609723689061309202843890393226003171246100707272705135170651167117687274034168502745392400689380502038594010720287481093063216194658110044126666332913621448507461613101862998341898910892627402634328202501617467635434776310151385797513379039823986777093162685220574779963118424469598878868556203198543982085249981691872929653280027885842964524714440745894031642003454473443002384993281813512986593943296346216601965658109459620302661600569252152423635394037808473512410642427025919548666718549844258946737376936501660402008296142907413057793048392035315785993562508687800531888849546832213631679658746843952733587069479634944336952983546309711019848536075135060354764713780838314978823566176030462363771492721762885876891174158055100578935505851472024479131391525682807354631509290430761172506730704526687628187524990274223714960325483909115700969762148798716022138350953818014503821930675789558667134461533807251453466630040465400817000808957543554284101096930799652053365374394414989653239400975026816209984453433194881654466233671656465287379951610291388750190311893068348193971030999257569524457073712197347161190771352810166131500840082357134965062073315136154415463100219092175651332525530812775650802910280257034099345499730540935764058909290211858142160427330440548557888272992641841994783191224682765947742545149444528497102888587209338544140114298111348235777570318755721041120985367168537017468939930453716189530120918471188229003301947913369293250540336930133364288088719670098132487875195658833755755951648515799221623129348338915154780422169220702709497425412589571770687439288881715344122035545190138103103043287569914877608225808713198858998281356040634614641290430992283449549508856495793787600720515464464445283871017446485346626442186962170802169898562948678197872023795142769670116986131982627564024997292908152381464283558456454353696280559999959843362831396921897409601120169799969037404746899804400276887555531790559669041267725063275324734300824218179623438929406353677052359474009918812193231109604952607983263297013855872722323264793517635659618195517284967182478580341966696918463982330408966767097704146688913204371245257143469260316322549108680909729516540313596484164145390363103175026056902361082056881782114716482520390659274376290158088470695891634735089488129238698080524647119792231537308946264111435271469993310811573693301700457707765882904231109422403562815701141735900752924240531114881813237577977217420260667183698497307753176527702405629505567918422082692539872470540009519775745963081343583476793640125847246271392377934037603829958637840269919420200806386629244726702874702856833011092515887603279142537701761320051823919711511697745838405244896257712586561952893219366723215420897356477941006318420489854009394921509907858612728355924104898055613529387601036563788473164515466449591204521774953800643221742185982185161104549259206051850362718289838130932986670230158192004336348486672403490289189489442437690479805427773148089513062571400158732591716108959058794334526353535505491216143321507348490220699484469557680137335406558193255018926329030475256479430945481375961788941377153589643444608110854190992141389017810828918111299672857969119643498776675054560665138879632406461311937191205238754825276627339132281513180837521316733203153031005954331775133071601884927683241135672793519986300475342428269870095320077780175043975532579163709849682110107435234818837505336609481044815975789544899820533181002774951778990442941112672253245775300746322553423818477323625932951949902666265759762210372926970092644863645940130928795895457062832698224173022438268382653759451617744471998142828918921514161198524406171981562984841716110382867193464448428952741536929370200961060791639516076945258055152609739363853033391760365235906934648983304756555589759186075237834224127943648509204461992397311940462779617304743217418590160407873871384510413776319239443970242215260652914386176255975465268759132752670301942057471028240606361083366849493200138314242046402951314796932342186260399353432685761126158458174783222860196276005302780672944940281960607657410730916933450065004682837491424381583452160662452515478246093151286187574338575731915274867267257338468494216164526601741925757154259265715617039559989851062579798836221522286934334258454803594736170411468420674645163003556405920183252253981651736803151142727174810971906051713352471045129310871511443196130761156041546187919892040616205173023685544831115740262366122166825692468879948493502069748599053849511977642534902430344668873509838365889044502231228998242062660736085010258022246159576651471757598200890706253361092270319400517868436370498859767999302594166488743121586025524531846750130737486406602771312360197604880175536566000086024296962896412198408741435481928059414066019106448748341551621292327217254509460740099580478305497017949613669947290413317054076142111950857203681406355035708863218684031434705352276652415701835765319564621266528652051633734897888885160290380734651717090823182598776330728962388454763987965767765554613912625045777386628934592788064471111665633416166047841072035822930493661222471398300446660383266273748552971123148868269555250935349208860955804488706911037996843227017482159904033308100440791275280828925808152070962575925970856968938026078395920662447792793451217385938729672616668862910713486207233772834146360662155106812536487595059870449298627127779392301696385537933700839000498349785116909457487103866938638881361705496137730703677730260294580716774774647379790656302433427669498496167670547391936928911338442976664235715461580604257930555060458751084586279879813683186407912770030649547153788827140648508299637692065845105068205583087839878342770290189698390232922125349377687331798948951668601713024332061017256996606908102480660650514049757991595814591800750152730646082740909913760658177339871373419164255784851445400026135338115895736615824460956891628154158241337560976250689813803520644672147509536430032530151897037440005278617411676339112659824828178820131848623287666238292026411962311099413056470796891921922371962722820346907638074045397222120460761820984416277481776314169246287466749751361395942444991590527250995725934800082300182585566628301723935601095209086117323180623024824118820460967847704607097829278716104232242857541666397653800290176400673925415069744349213137033849998987621112321755531903820210903570463995608211358439986474106586735732102620949267545745295282998453736184812209693758448830202812358392990439051783321966271825440667131637906121281998658319289758024340338473247832095517181515865536914147232918949036900440331972433702329692346755517585600445887262441045572255087223424170708230730626255366137589265595953067925937270486871740253963536039910966756206563138982012209923173941264730725606487171715680005047525086285716019998957403464084995667892999439445043807666190294461864809418362712888235359892893718640842996005378702982077743074250405313120739375164040410054862142886943600460593887935669834861149136174852021213787497442213499662953427709968329904736318368073934870949900625603944203013797473438461488701464557877139754502118952805957715641424518506602878900317643935031431029503715561758405009377599756178318207171202134768739592669896795640150349069187740976193692860421304586613300289920105283063105654328721126405608978497075496360351401122062199920990861670437667701421877774232587045360016258216080778688865899367559322357407832155245533924005070500840884728381874688171757887334351444624468302083687622447470510948783576872522595711310030099013812366878923002050122247385701836467970924934854635644016417119401549161230664962583784995958395937950139980486999427507720405109717516730450846862783413055583180015841985031003152141221342514973104383925480058802339271718876725003675392002655736678495770810698304552511048670201213041749974607562162445717268445090448690519433632961102356003349762793937839981335427355572011000384742345091857379689974323064640349143419448075626983378276849209718940078190702684537860301270846206899376255181064751485947264519628372125773478541379782131569139726868704377523367344790285225643942966458073899901444494337845688041952244309612301128461326038197211114296428734331403804386529339950751307094434059246946709432094087660535884852658671145142144733705246399639011523734618285699142419588175760751405178237335418590797096363968683120246619703629733898648003445911912225067518718574488383054871945876429138467842603300228052240098356755276089763932257386146772920157126623004501865533790113879225363759615006434153969722724006484105354086910376911556720387045147321647344660201259474471771787768459577073022765662596827448105993928831413785415083342744904724456066176341148922649836534255304980775339022774457010329951340944830579737758919110067624139088775906551847445197809976768445251326363901411268063029648489286481953873002780524111043818131613266798017452382859029823263735755686747214857483844512580001811592631541043582920931469242522475382515596120906752838877962100979470046739195753057228185267910739418686544270252226005310983743021325308457542501555595124790693805734107070611061083938592329415750849546789654403943522328501825683853944008965947040379865666429275055956444600547572758811581704530684652334168632580642567576212014294218685774450693235121267449091713023375928218737966839074153552999345763266954725001604852012634485170302255198063177752245785594852276272282506253886693199759840507827644156814031536753354398138150213928029024294269205504892057417558299644300876529405460091949525225064875832993798595613434008828276861516195172094548153311273977301230376443989476891392598662398898538901155904440796388362493882716564291374542887003482095968532114627061781637431431118110310389588157359758550503608383864288283542049915642957884657247558820386396474037874660331255231382030935080782744906061847570746362691575377295034686844698542029119249955575085288890925549173933979771835290716148235663320334082718965846532446811775032193755099925335934190742818329944748149445506495577890300978575249540769182472964860581331545271665139884203391386350716855700209727355373952050708367781559370335349842406017390677514757983714623723531739908598238540467950282853200045783652711676832000958785071466887587411769466346021030511402292677712105398996727924444005960010824259832980089845230400699729349830233914395143850575788855895464714572238498341014490781655735111285999959383633328165902310193017074127275393758305287122693806453928873399232337561337624968430441009076825901138763044851469312786579657345927140433913319999123565480198483405668436475498363922150396031720735889665582605634792068503196651603251452983210078321029288807779038628492295798421345052532710132592202860269961099770478267648487848702649510391522746645557985285058138385336914971407819715835176083223176692639077891250377353659684262181538208568666136780053525913266560625220002740529529912956974254367878129386088950834664699483019598993855216858229890633049211457727924209218291567729924253578051619168089089156438023014969609229614382618268781296749027183012956774940153441503143611004304552887620713740900492695142227573291483716903008988817717777867325711074892356449639751815555814076523657564719647450322747020154294646382858026178638778607508072953739726208084959410665075540763856168894041787115135771735442023053262969659376547071900656190419737923349411668009182342743047045839577855239791784463641458770097099578023987754534198030198345425019309502189747789895187759342427076998801663698437382247151407131805523496011497871423796348511148858717237157136195454494408395206962874223305034910320479343944226945776635395318946550922372084475081154520555943947413507769719773545945355214473182969106682072465392778546055034769610302674214664391501390889373948205605811436364406842374082480271118427796216347467020707279558202539599890416276550504141074112445485000794390271850871898060351085415863591018914046194996046591249796638069982700427404336858255015393869172163281582033233459078977849864471072142441733551253916724419180241509314141512081248647883589471635181497506048955304171459453051844303660289576886716859336687653321996631041604561209408639622373866955981193873849629432126981604089944357187093467546614263029003471294502384413183966215096231193469852536911724327307211209324156891953929780570723123783990252170915431701717187196797270585553036209173448133273680904409731703817490861129570011171362402908111792235601483897929345162277577216560676465583901104730012705651955270066010526899173091740554184610334383707461587546720018508174795117297252152541015986083014331318251283452125486527336023387709415350509010453916908252406830880823328304032957682257967980418558052635581657122092076471499604830069871338135911537264767440459515223017235442842435395984188340702698225951874191567943603955653017705900526978865972597678976413631827707240638231506716897856964511181071113392677912514565260058744420661886356304428755368492830017500853927087887312610457800422477776086647761646598119580479374930418622501360975894918493267733231207768517394980057771803987951637134368579322585698097660338087119850096640814095944410151473301561331293284881547669607985178699918684794750359570925458702859214145560966218949586037834400086228922032255672099623484776183200844144850819106448263902244912166807266869898075825959037031652454927672801950731222194428016998923647535945961573169942403557062223771874264244847709827601358980530123837347075599011753990267097364351838300970338986818480499217124016952518457825172172223519845931811197649364119096280545159170321653841605136731668738968650056398051100872589208976221306658608049716254151742712130977684794051906594949389838241041645446491682503087566770186577967329344276387422175423247320958777809493109388099592818753627018752981633507698606651935038037054604168996908641851090916731089810868299280007483086567204950243973582871294877591089809254012442036893870775074881469967360756040871066031223497086930745679630325382731932560417140030071545146099921931226603147897913053611102365695870111544339213079555673385577564862883956138728667615456811219200274570852701185283197895239338653467054573129864447812727411463643459741258947803790874649648946377896423089335683523962577452705976486662628315710098505184777177108881206024224357174566607930322897388496586494784800434997698661150902841017985744407443795690854045965921546957485656257418706288736370735555872192783655764108769161225503786523700804913574702091369608454870714588032890856011458200804499524703950232993925678861315868384828509342982523253971139088158255764749933374888904608013192542573417055987440859295638247664878866856469797099375055137810779919812412601356353680096355641656055973321472656303221195281697971854432702919384825798203012229994441270587138045307199618262886957105201221212461351016232173296072949459832385195276348801143106604343968164666394295194678666689369396733027261553322181347091784908466161833545177189455028339134499745149548047949054817806746580814496668177444608256963705586718151003977132335774717033353946969300720517559399995584314732204597684277535959523047812347495166724729040504403099963230647559306756925237924736751077107461198350496958368700740350417833888944593151998440129659463601749773635909562539088287179188093291302696056611569920833644001829481031253818124162566205623361646714127395641057756980183865903605456710420803799500091033203564366223433203408401843268326078050401186444444391092442833197195926050603582750389715854620218905753264158651362763932361019060480749441813028998258899080979158197941937369081694066102912608633267386415674067461454126677452538534511265750521955064610657720697164919344731567592964729172367570544567159730725175987622933440096525320793744321809161353115285232171962069621334155238206938614464930110679241170701192426579503420583561691884556796530286003995436753343416204730048718955129239198829716797144648681015304041531522315304778688336984040895541162164598116536305576820181120350480642919580341854482849945108862243261857269278291421721176272830540049725809450679734029335892279734379681774899572725191868733867690471776302294801069023309899067924653661596352931733706923676798647744399735492412888212510582685947873942228813315819431946399510166805618649911168173560783545488444166500766474898708069432963212115526458279156488963331665825173052141481833499808692490544929813756258776696059087750026689355597833743326589438569048649545896752503381514853697714518193462424175155483111155574097858612687927926809380784016061229921725322232905647228571388992449919992618441957102054438970577532171994270569916887582664632515761509851806193419510847840156866978419356189443604039117434436689771147753191540115017290464586246790382569126888500647752438790345929075938799594409569905552831804393363560518333880690120473882957121694185647167521952851785146410900457367727706018462183348041039806433203333180603511646567860199361289010418872538939245236486526662395720125160884185884628734567273708390479345183538465144382236765309626088846999932991890749748866191346002709559914557075090808822867480481805300867063915469193114233648730177630392926638339046277136563727271830712329237531034107080544472445999917276016908740620641628436045141369333016025245181327183034326179913830764251108168950961999476175058236773851393035365001049464169894125477570644928789399890828245810592823802608386637598092276248862466281881353499801835303863585217960034885391955924310111163950811857794075630942455386665340746418069552227519607745101322959276981443498205889505296943221967465970909231924130501438386321463926971393877712268356541158199070210282653084722392842966518724721167365200933746227167087168630861641482971713457255343881930471670454307336033645421029535699939005288354762060446556455872563565161984591438321456597117593297791055443387787766695519971447722299998499919883337736283285235304501183738718256703983805980795649324822034355252113878910204974910641489267158119464966616824436571987459467329968530994632488204572477964554421956552381685686674849779920037813183066722258663323299648857534023113733608827352214755443080487448500403691557176491465000796415841924206162654789198892217146683382902694866711895065353968349610402104027988431504446838976394267369262393314515175590866070032737089475733346426730386429645365873565695140811185222834977870428575547191464446469016437717254068146455071867547466171244382615105892675988417834535802218163699454829798698807892038191127561091019737935295821231639126120370701557684243230153655265596729542283627623039751349484065700405055421362063868905665632793414285241871026841808370602080020819958079281062323459795992510911354625112503716527376777451611736402187208936880719206661110074095379206078615138275267385140986739522716257053085380896076911839945574125033701895179415136574963733186320580961705679962146571661958903366063772877937846418202654476752037496173539704390204233630700709989434659021394554711851633786273842767338160313428009319915855710573798563259402195526157887056011934779861617961803772243799452461739561039782978154100868904460105861658292942468046349399755585847185629661680807912606380503253551974836392749164254437021348289543630179144224115958687373676591405567057022205824339734612810149746079199634543034624657910580346755870433998601297587870720036971044634202472559198735780430084220156040469087390996507598671591079511340701595088871512811702447170082724134838185240545945638232572564049791220683205237581580017659901524372521485037473972696440177192905020573237241454981982147040456476957384963092850675106220893734915695641354195659820264555937967607915493336953683547243615514829918276180832183746333934563081184838636390303139949979792470296053089751681084101419165604557783334686583793622354571553515588710023517499924802169751074208097737223541657614896755849748585705084571740337824767981170983301824443056303368656295975692236451926897447722693067956533875877504781987857429829043028113035850556760148721407716293590860650902569585059711082098515952294696335107780670279216334336068489004229524368782624202970325321046311111391406890600701095028080139963519319229544675234152367179813083756147900933345210462989657099319731387499140933918232243108835305356144471067208196637012020975130439294099165765141791510255477517808567976398276499260935922170303614981106625865262485534512776884457652265275586289340980876705846480569001358695446146747176749319910963678385787401859089741095209064396902048665305244266677036220841440261640878511486752264052791457782223186540148259492062565116204539993903705952340256953175228254830096274654760535033976179767804323886749125002833113690339130671611380623647276408546263341613958223710710898282006749486250950706022779065918379297067178694672434633727322953150506531241894669998859560985672154506047407291065333163138669572321423044600484177200802338660799816978947631646889810897474302200204026614669584334207499584326805598230262234516874681099452499788702860204061311031770902353030148665531595132669495951056240147943729610484621690113794251717832345394715878472498553517507936064371635637122915120503938227643861069321568272841815190155714099953770120866842477798391027917897001479121429114249143881950933426603280496545521267146397717254667787186038962114493255812107949748240711286124446802836013198401003927240883051229869583394775109551253849022508802540888556040654642798005060805583944360403387392645013998869775484414216676877013778107714296757698220967990554452258446104095234723954510049147475901812871141609849183265861173773789741517172983319196462812175701919946723509944841424464937702241832970428211662720964881396338279633888358006443345518989611536644262273614042157914884524141409251584710374502659084719847647235092158339841457133513103464709938373144654209895903863095706493837499680679197669874454080042299710050056832347475633841701319895322845156213262025696954028006640702625935444820672475005416807111869942658086804618602584608399451351878617451238250473162792308783606434904780620877729108361974529712488032628225464810594182612163515946209846349701533750251973780201113951943525740718260516940769174284393751524466090313593613355161861738560677389276980998622157448312090190542269752550605627521641925324037809037964312384935574143946222169922453631053250904066094638625752112112652827647668964615473327027322178931280786661326791625614474597051375128326035433591263400575848494687990809462504235312294253984133860925655930077325629318771969321841256774924617781532980584704753723755940050970610861049336879731563235040695015020902465586980764111651186046790695431231470150325059540403736866656151642826334553694865760905422590046781384388038595258086167464085440427667801747163990526647111835683415186041895178178450333888122980260680313540612383302254243967137602540046949458026569532225778537994035865213939316959306099366837979428073219364093013290429682922395608965896031097712547457387463258171480076721997394829297464969762105776274014898667655816472451566434670266931021235347723379287994576813047382757193993377541180452675688384387992844395107702758118412904649473442721588042061223044482156102397056038826108768057898979165653538906576654372702983140545595779533968407224925154962619336840385930231667224335090784168740349247028466754342009946730840872209276899420789358479444628831675778001892261407378530652786243542117462539620910237837910584345451118625513960554125216694893337956877768565256937799008229562711808123648150746858804619523816823910913615025773188506405228920091792134144778375817300080674590310428617271273194665031431342571899456427864815410775255420735635067367801665086679063031421845783449682792376173917184830290811673000446036131119932245777000263932784491011727773533501402986205351291548472490259625437614744178093964284804805976690163222686480969292273528503169060343788200330856017350168444008076462645797017955197577923410274485474795751163347658313800670986197092511257234820814047870617112378670031359643649983906850786066395312506280305155787574356442771678897920294257828392538301462703581948107567524731779261896369421837054939763425092528731785237859707695149060468844085167583380710593180161796408767652505272777033224313852645685735995561706186055854240948198721648142358834938881825979290942559680870978006034289315355666204185185351304122920692750481871654543455497660952369879646397617806988573961059959133914110373618073616504477346728727538320024416528259718411728137629425579030158386923650779383432826398874460311687572628942651969945817783649483568664857081147598381326163183810801732288291732051422225165478264773445615850906802938848894079385402653459325742593616594934065464368792777653034532772378225301826003056595358382714776017948063602802291637936167340448947120533834236485460657091461721161864709223828993758066041904525905276021572219222909720923739469850099525684722054451226049779957250583063363441678787780005384961009696616462553884055641357316989351438804046210791898937390355232649332333728454212073083162187544898288055923104851806104646447037348386628416335868671082338824227364375360263006287705147608287418940951533955828414533213899307947584324175759562013489631774632786737933574335266026111744408415319546521896948326051218333921953024356153689689221687420112588851807525478308239594379811220799769857231954463249485943343274076174520971660103811879227496450377749632320495208732463343985328773043923988319735046217483224351971401153348418983618677997663970197516332089217069675140670823409241728822397263440927939556790890247680996913117318735963005551825943031517534760999038252906246488237154980026885448330509129872099326983866525160192712348309828335742191189852694739808916163473255681995779053962380677033054630665303462384073499896643577166593791791054445952669320095200861478991027685468759463994904230524378003016014432491347403274587402293129573485129209775844785597449242078988535101379157675116503864903273095583968203399487180728995506894860191772216719386643325139183130764162572540400317032060889175897285890174128338370283242520587077909460201558104222102846607590020296686110734832892937567449345077086505488896103998507764369214482526276336616160392129773819390245087069093863230536168032874326948868119623694618768331205222866998637157081632269652038397333209374499111319277871779734253285749116619220789337298434489775765820679553408526849360677851540880256956882792262167558595615692347270976165886187846288161857903699188276961014420478138012507437079987724328281116223680736736102613699261760425755921462312662913028165519239882816967609614998102170375264691275098806977952799518486710385685024389303173851382239376415115107305001559529325136344772327265717495916394891019760031040959855977669942215854407934649361579833878719501562355825629343302229579454490875030988036514284098022189085562461450918052135460385598978835891908495982160728667969835796933399863597817375219666594655077455792233921220648930768029253189617988723966879373811825053642877568590671229345429363799575167661894094060837454506355732892476505199369008367542177235376610382924277127877304793451627995723000199233516506473055134920406623124540024317414294922568535371692291806850660415680781906655035184136617041181881489795396010328122611888009369004315022859325660927275412960286877372493221355334850196743489615644901092818349142163002978009682328666194822724962066089255730162684728650199164550310950177408390738079605329098737358449982791084387065419699039547797371208927196401356314656259185429604699961133845918320215773105766026994229726412720393339529569389355877695224291203758358648323449872794259894941914072452835540828047235659103193330774862888617060355748104886070123972179236680568433903304235209034474494816181947568090921456409595154494618431984688563533364141792988177420567647630930759696330734371546146165043252171933911191344998956500448850921521612944551829074309912873391183548884824305599134329898873011001719154869038081965621418705555118591962764958509431158963247925378647965410916828890449308855222701423062991356632946565936237387547538464771494747152943151600906836708647455337568349935188975448573334684544382757091136275583382934243115600420832150986659997010897756779936952462187919605087336846828319852068443693648824165334041661827490137735953942028402140656728098972301108064398330026404615611137877829474119377690098314387686724903889862326624213361847823735043675717549703279958014708643465469154672879742753231002918693675212749085935370374969623855951293450309538777248713359849030592381125315354198921561576751707101876180291439343814520278981128867293119293820712469185272170296514904855165018523786065872561650894546296968367515202466591648892115313638642242379066915544739006040738945455665172659429837207418436789325054389762331696355896401089927094672871522132881710571438449434039856538909658728409117158101915150538128532927817764353681361160528867112685656590637954253989523578267231666740121218253816045182055306989391611077290023954006316137692485541284397455748099454889276701730628286525765939207319221195525785210472055318374201966149395212866853049940773252240819219074959247244867279654087773354521684025782727550086887939231395777404203428412570391681207730948061747339522498189484328744350041113056718756886975757546693417840092753068882912998689229848680060527261782553437681506580462310569659873974423003843013805911546082885793405434751036595916079019327608455445093531290293413982931881619205513353877818590719029400368403006305848116918802287211623626943960084417298955840141874153756124823409830950703425819974459907090725459433053197937107996527579024311809379623619022433521964195643790954943137285659718295707786668465303163414025056975517452764377442877361418572098226076059306933017093836208665551018107997817616907091738047449362871395825724602059869870469861651131544888354375326493978148123528339427783125208267520992036245570245746700843695993608650121204532980967028151563091044039177497056025873672069476485315312323574161371524919726141796932945489259079727887147705141856165384620073695321734919172472301735393241054195147829675512411212479488457096696343036234560146513088106028531999686273197848976463178037626400396797238069296790046878677404217609028401143763939411538784564585669989125091467765471531017028452087632534638308048666312221826711155484339366947139821049583773441869926702310975913357630492153473027021264386530736807424994037170987731809041563896435716083341484659936942627193295461435729258527116158113866651318826992791732610501585492950571136317407638339388231158786819013312700502342822355730863541467388728781904335483070604363279355897505966043118711413739958098759458036788489608508126348633716819027385624508497161434623525954909081913644097310610300534483100374988548340496839005748697481900918776098887690952319907119812852137625059764162096292733285193353289198041210288417171560151365398365439923159961362303073107485358460898880442087884004868333926624608993908284007581663902170025871334748622910559881622049877228168868576541459657561729185024540760691959594265930728553743619253527021698891485587802230861679674345550411162764770293573701126011097837053817584860034616144179544007384298921399830018063316075487126363305781031287824679045565954691522575547583487634202257315794438009818637442942439518690687933265990295228605944483415682861886534857856728449647215271222112860005896355051087686107398306293354520406637322433793517891473979903448208778521201254305492029666149628568224574343181847916783448179045548008806051804376633186644567683122632158629686041253536565416674789920924676488670253562350864950304425530498585348698800441922576488404641984476920723826290868233335246002032943664521245726773462194860420714223054905788621300165707300580033337583883261827902879803008738188715319192161883888664848857983649071251975397625820318521242865140089585435870849273306423207306440112712777445886479216528470376000109377920809521310993166626996926385562423450269520881962673339332210978169831672655830115938113711077495678584231714423848101503716032392601072985431084682767633969049379865281682784947739979336233553405448867978944325703551907545159537245344297617952576364494239352240856483843811178785674556715181699920396047601223171778527885369870361614486794247514905159009629442122090266317504819637283019986623024522547955386967154385580551719855805399362491593346594264529795136441189837844030652146754460206731016166249299244420335731315422277837968886849864508763930457479225808475026730732992290804248625378906826164930386121557717273058418232417714072502198196266042070942126248195898100320794090938690847680972753612810354872974281439845677707358959854405882319176254416276326646460212193443034481150510561038520330740621136753795331930946478287506169829866471421266634264121953201914582264173421274704341981528947270067079113043141930405946038963142409072319252942392188722436377375091923063765543906109188943400249098505088719857116929215818053048215050117374721913563454664738348309296202871150945908553434970418414372268394336832243108346466488183809642394887506636676251207624744570667724721781121893262019627644592908926888299162063282706265483809095414704452645096854379748612014716626047907336340899089038287008598697884030040311935723461675402289274180449396819953255232046632905413633219779222622806628940060182636406310749216405793452161621664109284262687705144260470694093875819036282324504327265484790125192517136656672985407917126853113217509492049008648013061406320867580627185655137721619554883711198838982864432243089201687811113583556728816495483306838720605720963678589335256234358909863704366812701178639669182200634760316950490733005206700495147809114327645145874512573740032814349036176949356060814018211969276681973779408646787799906740474858632406015916643385801492611310720449206975336979100212645327665472034812305059799485277966027740811153759383681216053467974533719518947029199768989985496919546653841762463235184332075516787178863241191742436759701645254005275320602261904586485487226540477043258959946305465306747073027865128333267706486953712510788167182595096954343533491269359194744743736770943263914474077638228155837363172184124768429738069481293271937890743735437004901723865426853627571550608158933835720604779696877724881311054726327250658386841409869260908897996118851096421804487941429673447662073968623412661560185209076391746071626790234572608986407713410935848231924869531916337081882510033150865037799957109409009847379812917417934652420074785943739139713979383317627979308548474772621497437536549952166982217436990638444114654025535991639055038483373590516387633273258628411449928075957499333848714122788648451916870007340255488629985147492712609648478650043470353202004244366158856788604797890439888700964491267040717310780804182905395435480742305319868372802530778111077231351320960916290042517701286664708485596506636820680954524347395226409706709922984485914358204030918689831641137517862227314392095508184657520431745684220902359859609954844913001571668225658965252131880077035198687059403237712521685748507734286730217089286434712856206719511343068543880203935662336650198159950247260996363784783037808421373923159870442700820168835358056011839479835125747933594875933818695279853976566982345815445793684183570462218536355228681294183172264998725206686104955137670645147544643462386221405062526622423546359435626433648120571984805707560717823852771577825702790283638715718016637103031038235188651962538338136819203826468002242751969214646510394126318938533796485111635036409520878946921076126596906263890550676471675366691026428773843502396544184122156089973644208672412231868334789904659196030100924578663771265002269002428469486085312290332933784775954277575241294638599431921468603717740040625609381226885717824405457943685005063897043681431587345131456184943527296085738374913453791732999422194489680123474620904611164317905799038829415920270404242865069418724556259663445761802819332649331589083311134093446975291864617657588916247269152951950242135571289609346107737184579626458569303917942920033303686711537945325729580409532778104520573831715278208644302578760217418231469230538549162727914063681287935428160481201201278870938741312499412786577460526685982171182134419318139907912636035660409533782901556545079924782017217813580060883446867913442627221984834466186729095397198875518788817954966005565452246046138301113890637848287128069940332167399464536927334290812073110774045185530922182596459351745589940650723179017698586178467049212382669668625090139945562560815061886849432987090556190358009041021789647618219488836290980979334061179751266598904419335503393606546400342401120407485859223248052621391294324594034594046883659695644964743579025224305739846333450543412424966342881886444341754811033500129207428185571883509074577069969681298353878215818215809656618985910994485165954266129086846583568338739286586882695942052094396738269612161514489814491975761127298389612738742259182666113161307377617123433275711383425172940348840990099570072734081018030436382451709795226483559432792647239240300966176343057568529410716408074776594905263252664945248046865574291423597285147387227631252841601889489580618723012065362209028555983627330216822703022195517016758521771004452340301284595865292670114619069253846889376571310498258005622172033238590756216600307106815645677687169312984935707406390986385828953788679946145462863546385997353416850201446510375449480232063357375338391581652598315691893996723863218772844597701664738055176097100496316705334407293538939835441443775398471511327536277954536037335215142174465895573820080482763388755329502651988479622701465752513225357272709437111399622122935414967050374211334857218113484620168348483399729926017843452355740962974966079231757262201003204528028102861330807936066167674061351377060919821862129268760651644125550540379675448331207845226131704167576561156355445375915465027842637760100346015662922816070029986439137705374178908434817948708527062571258510724994970586672678377641993467617614748775640580819780979820812765092540905109204395886864918319761590243446986568988162957540179873393475788843735540631936641265701623850469255311222793700125280208432892697186318120963503262240219345757260943834495363585185181829519086483367393911787719478739995796618068621024333539590003996849341076845083843110116224131976597879618095189719213162128828134633090186969581298350982176478483937951754026638233207569616375644155206930109645081543214620333335778982714218218690337081096990467995033526042799488165413473526901348431879964711660298329917125441564421034196581911244877635466534232295713317922194440616448317778048628686318002420249209258546748431626476647049079067017286756631875611234774217804484798362571580495516002898703259868350697185708108091820981855149619268920766360039486898943302250668018473878067621456171853033195977168752827183584283319998024878115977704204617411225377775793468685590199909165594513563213195781707893684052170701510365233612276917817860731422777864118544612650742963591812219160092692646815524866342410514571366531783475691057066681811368456225469343518228801054049051188977553322911576836499508428465586669416241372737133328878222310011197338010870392322303493099571123960331941066340844094110146351904452355617251938856658032339073058940177598662513891779920342820961339085326066562157421992278193730396207333722995666696765307530953331257888855719748047563695173529393309552299290829949749229151881153677584151151544560797487698280531099019054707486070102128719300303847842198079808753186960440640272630055063893717773713826410823943121643949260738871040144629221872618475586347478939141100497835278504088197545802054549270104120121000902388414807308719939690256242744172479159105529419087748188635039377288428180691458129008842214091178067508263066278737817953459720986325195267718797008220255760401968624238179134683660626328699080272667550202908012876229118357585814039968954635767815455661825120945450254169371450318804790401518289807667166064119277042532034677492307438162046576486630820097463324232690020354527053289049668699877863942854523080095348474956601916434355253086414049939610807608978195208283027423603305500295434898712659585860741220032816746161750346517697838294956086590104797712136573877321287323035385080289351350026318525581029358334916069738082597563926075760766765080437499756317308957960897539586516959598128310026545551331100695983208351004736716965272943871224655464547301595182282967739998181898796918250103709185411971609194090288940819180451477638309562852906539677814110283718243720980605665230254861623090524779122836841390039256194276941781541071644536134681461415296179224856080331448339571614218548123498045241305261883584886816949222564899472277930192715582381354511313323802755241914112135068915433626818179538891795431787112091326259212908414888975659963581281858973864894681904807345511397912846044165619116510588348095961931795965334930058566997746691351173797234774113013930931276877642568297865807029460733169833212522327661147779973507370479884152551773029615979247040196510645998339994051325012619727272886002073391495648260576050772673419143499683276111046876515259407075230992320096749981457028918618933199862063084388537290259762296973453203997549206911600554537603458111287883929524866887064795357593600862860413406132599040573150519623819776127827612712643688378608004249673667739839517919935421217946681515698638089119249726039470480375625584901684754436393008022675118653660150742356407793472054861031373082691158300504867811568472788802405107517727746707732862782642621000658637539948885575985410915906601236485970664562303543163868896292250790861768948123073645051556159620726381813996401665647523875827808024894365493243509956129305876823968235406426161753290442955137201756211494155495865131124001697576624628836589516402745707918675754781861962543498645641023060896597406438914932005508247177497698014673257748044436226934849622032013650109575102172107437032396619613144189462518838893106284452155150051172403651942047438298903811808224183901839022387515116432691132738737603296717950993526915359054663158489754415085888620373081507774770858743564109365554525790394326201120739826831136112640141498815020855442205561079453851358104999091354933826860403258475496990310073567954142965285761260056307924283636917923980277726766401593669112267855859743664493847810409445260377126671721572722793996768580866056942953532078938639751628899111494428846954734917630480612095696236632279167096562076369651103925585253073523222744901935610838140511982231512804215461059114378707817471639828253828548812381148247946606640284665172329827249494239442711128406297323935128666182932483954032024626752656994465306243030681674229162763848607922218432465945180221913034962651889604890925898887542986560859038713110458695643503641884957829312706687031678336590021377610936557745414908898020858344809612622881721662252410967076756801420395219983682744949459287035523483274359117864045486293768312439901851177665960872828152460635734783644291304988774016521657063878991707403746930098786926208400070011567066388894276642895540964537026467435914619174366462653835350741257682228385332857720727311886998821193133785489963079239025287138081771764582984972973050354777728083005960910328872015173940811653028195095195525839878995607684614271376980552212849327032303821464557588864961064671688611363072934471937022303905157135140157114818703410425026156342460900022593391737470908564485328383125850104859969745805152702954646306197803569006034618180464815658453966593417746848213358346652806483092280508231360701308340305579868640641893815146580741260817037013176479715430594893947191123876249479380671524709343515150557351157448755902728308208465176184784788592664522653913817328418087423008639974355269317848395664965537396831530115871118473509180381516594521111216259489893509176170116942969762536337199830924291834179027446567659905010625123692938345839572353278345917801393926574547823605571592757698271425392199485632700937585114688698054030059469132156372865037481819524484077302772657782863357342548344614118010151412300702521919841621328564989930391499281262535363918399834839137149699455028544645251694433546026839710965141758114431878533397084724340995163344980126641136968059555517351489215114941259310055897241047843967221503396674113192891132568096783787498233329365682060171617149862961508431142905399246791937388767606755213948009615478692916519373948491025569861581782223701189599243959266281647603229298291022507348525611104098623988956277021686884912961407222249036510985613794342837732571788279254040536660723183009512895597673330897249956041989704663842979018651455591497159208511187444470965121605337348821958834270085891435971089320257468737847730995350997925153025382269663548103026739172519210966196305216433793339495354518865964480158532332665158953249489474473272578583085977530952777173722421787447770590419731998065257357967204425701788737898224866354661993756830574923947235812511586661309828713213043623667253389431301972456630948629547886814901123406704698467220527810028962770323213160607554927487698425537081021687618962782937551081205690206292643391701238938982196777544074752391177876030011736896695213085345212011849552038551503712107639488357535881250949311227025622471246235389566153597003506680248026247696434856515406370694081629148280028820212121571904275192484979515011929481263759259625947799618111740264709010619377110332764500021611948583176998471699761870931764010625589942312380836129322842637552744820729129752608707159084241841361532480402677797477038813149626051312117587580762600763860419528137367870281515570164937183353875087435690220832732297443089802548717736154277124114130762420097941823191801361611528017780478867602493967130867505364748145867948785918409030955445120337515619222602715707795692864918685040213406612067076441208665240331502825481285831492003487001817253919571474532003683102291600801772706360809443281764815912323808122159502615807348112482203525222802895565980553761823508612871926825893579747146870700644319823907414585877668515123749740842811776609982909450954511753260237957187791486860083586251251623561359286683853384747843256962609474901164254175048270011469496236731278651722112648312547791240656847267688546322564997345233693204855795644129831941987635904232051998148756401080190234244880316049239729107032534843625593660853871471224500926420516605010548363191734197485543404689082822400707769796778006643063684439931827568795860270947169134786920449953494533944985694463926546181420341328859423802553488652470329293506441039015203219884606436217416128411249069936523741879470776255568624669263662604299295309083726741502323340309683511605749314468788350292024285730638342554480566682094331303526380406680981259712348686934501041779767738437987294937056780355901757357157883776394746354694705417513202205984388253231537592979397333994013854375291160463458533342438721532588150903804087327700583191429870696046853542946095057802074703300099676363930567170273886234629894674197062280937254494369469206271047712109848686584882552353426960458070867624620852212430611532106837968338266781356927030342250064612062199100424561557690998407658302514205369158050347277855742210537230782570606106864223419904082224744604091815803243597977472184806167831264501044959055395916994400756824786808930440165425631325324852796172822961412489269014743076781247292403197153989120357513924061987408571721218956695655434512289824519939412742922890350624269834993594058300686637084774037183151499912916621895855704992995193487873951413324867251768191778409072372282046419415214010256226977735922584014545930554055275055184617320311845962551767690684311518030356883666186016077001924144027523838652191624695936606739658751004382911941076505890046852669241040064332599773737301592732698880372450235790327307948677590859572233050249806250887124867412140345484555874229897888198089898684887062591468931272876488314999977353596793819625433466039264160529748134200745814242259165637843852068623558775413390050116710436971138889394986944301014843644469894362688285887874655947525458954712019347869379309767371112591627871255075992603341329350764150130149660864066883776600232033398258699735323017595274296278251596394827228406905661423695959014053972185184151333419313928071606020475043273413233724365274248901403943324902566948352720208655240400834604951552331570240877517798386099424198612943117487524596393383841794400960404390885945273071544750435534851561134557595519444573963055373901990043766277026544743664483357531407360296882029917737382333792625929172794731272282271872825939248514586434671239953648932620760938523563444787261074704911597977232058923196353105174080089399383464503970423192601290524897523330486214828503371529163235861891190577329701815409465132721816645009660880564221378891420442286959374409281963219559616926362330457054136785146290378381687529385972104075173790213522499119338823525708191167784251054610134570637890832568807071709915826520670150366989779293110736482671922677469737199786741994265960981227543726512823111249408757920472724272427299353881682020286041087934217534137825253646123983737997413419317343217529990105736587662433046049918700556778850035398406018665879169448937995754053231066206368530273821905347813420129388055411043130743771659446340265272624133585681328543134837176512668792270643542044406978163520598185662514638053833874760479440369964982697077138867204907899075784409063329430365772679996148448051878086440040637538113911183936750940433558173906991858567597051401643189063983941522351725405631164224337810174266817763674368822654322223956071358559860392164262455806628372656078604165028978145904015469024691758281291460841249599108824360489153039470719329654304008536632422069386917359095154119166285419487883252511421639174175884862168799137435581542902017185890489230989134386406026961013492311276782365251252861867239823507706649993731035913466470083383819621842240907907355108915709816193199872025500153262930262961575930320939867090242863192668601765067680999089560694357322996502861952825853100721943687489013445709236974357790100771393960738009047663997187143815052486911855320617292997971317196806268172889364006197549077378541910515141490816687241667647095374240614766245184747927358201245381255037293053064783383445327418290879861657181669114680395409916412686676478848250854278744067983535594139101830546332838536820064395639614308853915346442434063362066630073513063664298749798882039633380067847633776033297795673957723375465205974888780361864995681734860782670971503771720671160127943409756426197041345738432596414550106528542641297465748952106173916429250169141902254481013266826242081485201537826981304349328993755042025101096901045989435998694354889555726107597704006176079888141599683482223128718989011928338498657171556211431994751356228612620063824710105008490039232500558807692745613646622294968379408474574976162297903542890615068100440819769591825645841238786190868730994417088510977888361577462972655999971493881698914372193055485461688649875212811809537246245692638778672199859639643752834426555892457866256264962437096014136870874976525639786031595022390653583613573875824796121035808165601642470582953011768972897225839246715182678394436902910067288777070396730516787673689432489934299977044171715280830086999616680923400259858541628311763196315272685530062919743541214696772172431274980744700082273826070305828500438119912451739645159030508853462526595742223120751438074010286375989418485343542578911140128873310354930068353373397989503212467077109882423032605909095532007364953453250436796679618924340309157285811423646629133177699381604687174776281964228757780606071363204724242757600672902623873966273054937842359340866931987067005827218025430840486444241374862490975666949030058683419698452451918572615224769375086403747809462046609378934283071237473839242778502049170464384236183026226474100664408252507137769379932085679044269972695025610244870109878752301465196408259819165077218486182382579461907945442047997900073608055889718940405052014492206201626529523883352248059211722523116204011611568176815743499890735486956260108982460980766269817390550450991524699384364674963998176056954481720584006524723972312123918088433681206250967850645934323221360894061417301213286908364632954220791282088765701553058816958771289132855954823541739278842844148318787252173761133399760988537892195589767118934118471969601858607711005794822883499493453672527310500441605573055912588650128903549494297990275912252301619453283857737737665321329402265601950144596021101025244515247957031682994559026603107190322415313785533629384968709166345196072259337039261075220052663624602976160707069176097015571798069820223455768314918184995245005291680110794356613779660633418724855264250004798516798347111460422878943970138506278311680702310320070808497654700354292023236570070668373400844791958342379481854784892351853437311108121103748956487868748829130380763065341400023934089251297349035808123940505722440419532125367330933620418618126024099290810043899315602050999436729661735241750941496631485738696022013835546980937286105897520970201163191410547442514346730656066746659209319058854674022937066270888843117141431304154351074077303135836116481187120720475578196217356620865331734690393646762763012616718784524787892567568271015147360798904386678101343911881463083473460892857606046875803260505572776610985215781641584311011272036985180966152342105873643150509201302004343425110722501889784478645954237883676736931765444321072218070231739993247097375400288503126403473733883064953923129172463665794188472819131823623526582219734919106981131045239314051358149807769305392980855593043258996792040529212121851574404330369759253134747518578745127907479384616956376291771707436140891057611084427949457569132976614656073102812353681880256514078268427583920851380578604743583854181834488120712939253508629645403772087996790927368374235432239293889365149296608851396936971289716565665244448058714269572727239017145263371076853933123056993801938327471422940177363154502667325876000857105375825643114386539179965459941711367500397528790339958814854093894149401062528147063283924345928676421155684997315563080633141953326905239262254007936054768933229933643705310123590255169841825157057471208861401092259966256421817242976767721155568170476416032730633595198279049890107382504080384145756706578875321364752753791178619702048899838178343371613515693188575669087523505473083466244158464212541962372295675788968660677492318508474994847434772260115759372178237346754706637180374658052500829082484141132658847992545056322036493438422915293347693046835223910683716810944218013663833117081105047756040300602943223490147497905958546719331003215534193017520468696036316240904554086812187128282615687363647177384292911689774360008700228607036066899861491902364001449240280471026359603995717130430839244461568693569320527452592513876252330668263434156573580565546621440866187730465306599518055990049415730504230784653159723764913986897588926948961830949010012848242568844725240550354268947059674512215691069615254781070590718254741460336908143359527582323638719579678720066351771241342280040131563505634575503444826194279602273439184218554753826775962374734825272588644531332129187748573232762384427177541049470047916445605081565246771131845676869287783604480345453802586744389301484140202621138421662501746672420503474270609980091819352558674225600954795761610117504421886310617602987520156615284356194349227754226510179812757175436698990198797091652436257870395681217921956052728648105817048870286443991435041730627231959360963251361294285913777584619268457258393567140525833522264747736576445540746594421825514138428748936724604857378882612484726608899143189262285142369423463093690724663358586791101284947378274277424069917298864318580648227345617299220474344821873742423647576679927623099241634528900532173200329077435256606752860642841470370360826109522303973859510542749783310156703665610170035531229574755445974076717167216542613162146333655766342450986956408928984543972045028698043475141376076791963048101727737416293228734800258348610493256898798348162143591620089078489391655307895781395357755563527475413010594374468088094404056501657414065686034009227060051552937561492042525992321387664061789067521335092490358527615307462486737762648246229359263815687698428562463742202938464805914961882482509677028619829439922956879177458910874612145362818271695579837929779341798827675289565327637757430271068947782480054669797892248335084808426729406922527860617095652973036608000789573877400506111674478476946906488927621622322461727818142014568643234051696707998210836922571114469293026161954450298626178968010072057165985478098595787979425166115458477193513429908774534654509468614569045066320896154744914744017498842760893177664068149121552671173529107258234764211457285637468686408302577023767491064433774966154662132901384616165387098543703628540622414671938545459305453490804839169889089063079154394456400029995799011780480679693869102475812736151085728116549067642749480007821691056344563007028237388331951266533285854763820807767148415724183841144036432360543545292536147194399355530862278815388197179324303744574001870539028141145704524799689547233515920425383756690869722355589178622547796856157067037048357384906129985990632134121586290200350026552183439824667333507162590610964666825169456234527164213774500222061561447765038734952114727221838641424794112538052715692275257773323584373492183258838756784872924760891458516925147077200781803456763594636809274068674637104240811288324486646393758085422912986135150428435360009602076056984021794033121664201246130301045783379842512033710021177390178985529488497742974901992726043924579122083937012302076175588470191676409391648402574118364183270398132842090492950174855857021552291417059327391463751216463620460651682724430594404219445830948533351738153873112307266612382250007772265787851227518797533705554293805373395919083703974308724760315974581859709602771834630079704489375870771040980186530380354664149676446075799052976129498015278598350623734984101059853422306958904899250694176216656322385291695419727330304618284458616043639709562078321866975925043125833505704159303008369765119861687243900928509720901609638354413359973020679126085638913440184590887158831199657229339899444527503925132770572809298549846990669984743933815012255384764297288416096248829012722115219045482775130651435745460244058153974660641740942599678775457409272289221504495839731855690249623294356610758267998722890964840531891475200383510817169475290438153834748364153090942919821786274474248196221504326249744242224791430478180529975322626603443530598942783886328809141130110189621248767517021796360603964869361891037560727462909876859454246439304519763047345531402469225805049567177282386619503997669713344448235403831752475562145876425675035008469011087397594929101797583599864175967821411650514634832938734095880397326601166698187994382030841771834846865030833417793618343553575437602230413422199380797290325616780143885974200181867416148637249901475771862936189398088128470431232844075879740263435326802347591470662013874674551125647451324037656389584968713462647859040232146430676748047052991998479223450906884098697577189586803284202207258578888346890944938686648502460456457910456506412800382179456913180436877856951147044945234918410718589221790364704280323726497621219380500298853376834546191144569919530414437068391548097219023856369555900320953125324861137006100215998946883441186657020210528930681310553070852166018178783939356377967438593095782481005278755458779660913798901169993435080807212004750197005893329307765597599210646414262002696201704042689903752368324503433753026458680191155911146751685288140383072487890950163129556252081955318866353970096002075270392180365550042659410692536132597911057310403164516621584064680162184850663983040179854186934250239098842028766578660458084157135269340091951121683502370217991806836923461647942499287525179676175882484726634674591174348909314071472253748406276788073559325074720373207040214822169802365408871706935538112999302273545019205728727846302045313301088477970615427232762051131326252997134893639599715470112786846520979730942112143388265915873271487836299314474322982980630458695444069711299485717502866832168537565725742937170297715532008287759143459885060734422689426874073404914176751004158137400153716355231702332339459886687794171898253584870998413827554937345220846748099113814562490919494551413909332784883802736755250599264332620007907590470250132515845551658897684356330931981421141540654180424926232884488613653106529889350969518032105476665352764291858290065830514048110857601324059346495795727313678053289689027297849770758534646860378235509610656345436425049097462214273031210875697857233956756193525570351555931889112918529608560158968554150300214239072894631104333693247451209704450838741164987313121559450807639791047788152117788703936501019435893852669557838356116601234877756129169523050108211948284849621741879221748020883821586135006807158691416062421828417751697658789074584387743412592266714893258654618405037162007363382631870562144957058980599536704362462498276471141858152478629966514157401550046714194837509962258319135287118489768396643644258228081609002788023708583071140943500815131889011590678523629183316124207237052521679590596478381210779847399191431364248983544410730437763513700312147965875217610146764381920823267461343054738598434903047922841956640198082599571934704006292031706631517431258043914137714205986355303223138129704774646093754347828044598998372248817606072837597521095563232630291123770683543468888681878565970470259904406405121869587629522629711903917187927572100667724328798040801495858958685929047098633635789121155276903198267466846448124692761927859039227731441611892992598447384292034714929570585684114713846686421269285665129906974044324431582944350295040144674713520569660021369545521466192325435720316493065010603775088336344447456120776365667013642368438628231435428567518875609923404320037897038753613706731749219047725748891812240039192013291437641568863666306241551717889050238008400379040414624033564240940167764261033220954464432711104040370052532936321328667212481254849978383484050031340249284139856417756691891817736645517406202320318042522269614925170377803502583458256160532316006523186270624533270790559407651365060709800837209768834638451090159590571402871209212659823704424751043936126630268580384057762931230626964244570913096505456099786730725204955929751597597082249528141997404228268222113309801534987887837301964112472675748525944187071189700650755623889281048323569078515395706525658868195269256601011391388308570899970076576218055906853116123889769986306286229957901379387821025725789474599099241218384537696652689006826305192875339931243296427006532743937999267242919491395764869731410655202983414877059883316841114746589555494271271488353912101441405386776185088420939646143526255903000223565096975826208363823178515321436006802837920750840724004287526948920110259343542364434480057891148461108545119676199554829679698490972307712724606681888682431460532628023358021453040225823849162667988825739671508501110370726357964239646717545366513955658337423641115373274672725854324135991890973159814340892195339808001877937716805571534578618247742860733852898830677172768227716027873730464700894170659445850097599518253355669555201808760678250593593349781797702175351504590171804772449766667656776838610439632458676789739777481147670079711347874308326835004310012027389818230361480149518723236649007881925925843339750522352876030655589523424664840755051204472304763664797448954897316952593571123151857293917985441419635043721823001681301232119310541244076053115270388530240170398606002846750001638760386760344830856740911359691757954027704543067526080692555079851845162433925810774422197064821911861541116858075797724814006218260542894341010474261514643832676896767715085207437966751176397444387232056597754651962099861638664677396557166372908132645284076321191954657801302128788590500735566414147082800615032086167308188546054811698586079975664682534838986552809515544696683484514235328642774965657749327142299262067108741951600242142907385621611806323682933463793574902191767283722270308184082537648064442494444302370100433637552427545631956629234699966619325068221337192149821825226406952495138722752493305282125730844848800431154463624156404672861826887830436117108059642567325554838580146146048886716532325255067270896659469168918010244928333278964948705237656386630254468547876504243108037315767056110528667022335142301020365574685608992295007094173439120880238956949522742914547563298480816155080119176604563434400019557302535285955335748002489317577539487047569131623450657735570266239276316361588563811443716582425537247820911429715673289552441590836657399658365623448330375178652578356548543854465770495420479867092618382147736544345016429608206469795085460701718063927496988325672987043588241919956429349551349018416758535784436944686485910483875952444569588916559365560089838012021478839587566314773076559196468856256210613076031611992662207313708194409522402350299913524370357709969349478078807014729627767315565339126065107265328636005162411979651704060272388597738674265472433059389382356943776040809780483832961908610334486245479632259226912011769970989640652073209857736460315760334056666336151658535239056050243660144889391820531630631002691464401423947990470088608509353174548849240229215615814978542012905207872354338753403901011977694413233508698427716667454332536003242023256289091929050839995307976283210256990781287120845545055983118648689089363669898396090669964531091481248018035610003471049357195474911472545043376609979422667284134468323557106577224587976866820764138028762125145880364899874340354868444658728185825849318198626262030660922575658121972885165144164861981876921120321973221009123219675610995572321515014682151008765348306421779329968096462115856742744257913633805075233599262795658688911692915868987020960479331169834605754725427632291149633570065837946505781170936353185251985226234084372306149600855498910431389950751723501469942243132154725343799095803937952428146963443179891076031080928496093890883325981773598396485379709642070470427476790243495749286699303578318498299684797067620995788760365080581675930205908426379550222337088115075854567309273606786176822226938746192409942695595796443630010899061503285523096046626328232755821884985790983952856611522890528310861429538875505394843519708640828508562316779521929574305109042087371830154414809458231810483451913495074178182183334867305504273144835627490025966787449475018093387078567568805134348860485112990579097658544570724187680624554611185846716708664354134814344242657234270854918399263163124607672817824561508264541064170992044029432677446581287470305322054802357136404110990767396696459355406318892156893872745644613704685515840505641047762760525267064204966020644278774659341295143149067582770136019209325949225739476173433727755517074052064385817490952071137569245640257522995593681485390160434972403700681957369348713857068770129371589761429435416190730884479261795121573832774492558229639540362420661979023878416704542721046845183093969704872153028564972959710807559934120996842194513596437941393880912666395553086298819189009309352095875868727967617803100824035040982608575355204110845933262046970558134718138823278187399069470552439270660330636770586603071298909333466793418605184354502724133701540823307405487216780395886966528992673938238314219422440035986254213376881851262970258979223293741618474746395393195151711437466800083991923377677517898404657217941723765674296808302642046776190400176293887003253203674218323306411554790889696480432385371118162635484976747817770830594926436402391244796482399729099845872652221121879818211880260006483050977256861023711381815798881932056970868927654883304726395124134382024190679413500279709141197300392026749339444245078180737470094386662235588400049114660062064181541669209544333092667835939317874086108882345447292106268081602005675542734806387637415509555415970195282290097835856999426104738381159553980588800103945088222490832076598975743897124668754943708470962706387969378641867008090292116676420492242355437196779258158638488136681745388159268492939770662115585731501949150169520319644291444836759528649977061198994154180615960586963176592281269385847429803269491652296824667902192763875764516609026506211760492861443392756577891454799673419629094217354900451263279945053215895863453498506506573717161336942583410953502924273144068865467322777208517132867068434885549319386895832695560339742740696938402311188473141313225849921807247745028065725080150980373938608448659455957964192775618963171526566119938100272050241765167250672395664281316285478651150799607870156365335639709997388088804511653853776217439030826685890756588466030062881847051225396261997220912920392898081833486008535934407878273389528762289477153712176833955237769332510312984401350290427538186920945130896103571197934970560854511836330565144542486541641168929918838577949567740308849736380912829147499098798111601845856899304370329474063094419249490208965049386402983763178171258672858735811797008267139580084529939919707415478973442640496448865677097462751841883781434467944877197539398672858414436641890791421337162528340425962494520013792702581420028679288245095782265707796937921458078977041375759953553713478066667777966837853627521945959179624118887475075854527061383656180154057021333625146283634810988952588489088739226817852981656772724331548713812483037936919544615275895983812921683268297364622161921448239433613119374425184640369713053886222660267235064056657682440424265734444796054436138965087987747596240553298147341322478635902579494271361937223171506378938353323638781150892880835265932308765080211337442127341123970096964057445059905765462916296669735408532795801081365408849406002119756662972743371247829539994366157999897614417312281497455884310323417285803909905449495514603808829313769530626793637479198202080053381985255685917553892343359261985059661567587369295483275194006676570730285554330293077172399459556002870926619947354843024287642237905494989511466414869624775377906985240660552968957919311808583578881732668677263278803069969584575716038020493978451844507210462902242133394123413382829935467247483989012926339882586503474259066755975770271324550062464932485229469968620238196466286182285743203850054711705085552834445006986043215126138122337789406204666642057621070279978409842046479871416724155802487197480420136679996660601353467651598070892145758686219442213088903099387995632347099554528973315870110653376334488659699909492506332686855724101650466406102424289634611842166312529139547484482877034050411657241213955290621584597710772887391614872417598499418350324990429970153091570228453298965101815269679977616689594258127325781628096031283111693736486804762085871379115043862585057430020401418091518741942646022153566956176892725601857075145564601229450833351686972551538921242918580340247726965083886328425179850487272340008674336020002330976681448825061784651203700906685767008238699780649088342195539370004985337240347745874034257015062148765876176519926902469971970741264840446134646359567620208169445471768062850649522999256314999448507844742924253226690803854642440720957116224814749068249295861392594142860510273624636535982919572243401090639389097060919575427077148312285471007819839376459529889061811875694202574720366261751989232526830255759928224236827163482037269147820651591259040691920398947278203231936059973208767973029435393171300750008088803355889604128967401882023968851808769399747566486519550206063838904628258890651939644005953683981708902707555357457426689457916948224528546963624770651942650776796334136279708034490250572189087008368529598426764964834715765355317659446006883380765350665995339427516920489174083956264660520692800563470905323810277667337688208058811422608486043778188020377484654719540190147115886660605225250483914822866532449761295463485972749694369188187425261643601500361642648417766042580364879355911517224244873178189773330151076969970880824225471198026260953933020142251058803300442544783481060064188020691209701316932509524586631024420744096212180838841130043099016871101415194776726146867923530203704952386299973739628197321356559764069504292781676873062984208244816527215009589820381959351878699268114070633387110297970864327329004067512201865548685469836741444763911918915585032010168084963070391840932189545128467878089010131071291544538251779288535063018049314917937425487074417440253294476218979816713308752057944672137858087094126715186749467148511627628521225151675973238393226891016969096675978529157904139884592522082284714133433592890224026861405458462450502007230058314205595399599164192031406161400436170659822242595275254756822603946468095569478051614438785216427306836821650423807003000626667169296374279912762467058961188231108974329365105853548262481036749230200024000312201653046381870089620582068651340470284904116974364840184568569118090191866968130411957740284672724394652068018485664182789462442360301504273850409020725948541072870771672255653094356852757284098934494822472697411710991914762901353764045068023372869883833755373850550307599791286626282714681343749620549488022050959913041366786468041781815993185365456723219423316583325101095063439363804271781858108183099902256157332975872529533799100295132406430080159787252612964104340864040133919957018788718005317411948045734345801581794462290187311049772400177796547211043889486248437252850522626579674722874782015867528479662223318529741614404075918781477535232946554296013927802481097032866758982277824270370857315869781144393969425279482501078971782433313278596622581403852858624057798474949164990570146167796290773523496355186902059902405809040677463957090340985968479072425611807637819134390423519818958094503648763411179750184309673136257301644823010554974592116234704961056260374975323957034337485075980200560111574062450686895989634596957741510361109953946911987493685982311215373641380142546295349406677838228347740863943432654296152511025478845654967447532011113533847367856598170719796671255666490712314888015235279236143101945487755742106659395169440577072434300049336716013794264940661394260197792838237499527706681350615344495120327212131632981405651634056093290696202682046425090060869014901690511051376056097341170078206467369097090770274714212352527814621717229890831020541186607720603123518307724387082524688054439473116295782313749827198786655163696600714935204795878055112317182924708708786211233792070368716504232903406520709292620251961693425778021805492502491776817603800996676090929974611809960381429828080487360259554512911089208720185850199791165633382428321551974363410967114444970055648556158617853532345178959555377702914568452375490205968290255338858305341641141563992470071630472201248513832559910361573549811347498362887095569574050196405317982386915930634373760212514704211034526155494872182804988139771877193758061902068028993334233729514059230533689778862152229612067187767734461006015243638611936235936313696817848948696161771079128442364543952227841559680833421658466890413207053950847971852030974615923708321442432459989044632838886149297303563871726727050019732349320483938087680274930820984221030883171022666677172346618423451362469293571428811555924596824135862477560804546602486628823142525552147141499639873437174669065190477841176551556660177388731226796931624391633692668163914666823536591666370940919575307079208038160003496088600748880528766494036330542702767441701114555083140454261579463988510273639777533877956478451456163572377267882559525868074368445098798914062409844273154057751356292373260823133471209536089441364625242540354610986114825334716073952196071555518635833895057959432398200152616464445686034818378506866479095572779282709003872432123804702601295365951954300220343486951899917025027470596361640343003314680536883350900000173954241206338259558651915759632858981389174403937943792688326530625279513393711101525105534548222023063841308885501877421631682892841098851034067857651892937447988739457116564387030234956772611239855381980567078156329747838842713451470938440315281534650730390312447745515000994631096857006467984557507906030808177243211754463839177288415623728224282789761250629525051797545433577304451318901420484869629605889090873281422310393421850626318588370421882606627612421275580397609126918439134647434385255883922777410161554624553078948603978535571207550407483365325240527906780495928112188347198804667752901265271283630500596917341510159814592987218665646536576965467968750670744597607022415894782431900868036293338963562863197673449878279784264606614534111173724559033148005705421517815597625494861369906261101316925111260301971996824342639921886454558442799950448205161371218351148677250101547967738402672480028846425739807393425127138259828652424869814626026684069763336214338706723907121677242799898804744857798163929849458834217310247946018997785199244081169313077276255162335770252397830156179477226195284139740686617702410945386728768536131200848313054317202066278619177355378832126768890623362036227892780901941269768558441719334376583117323213650105326248655837448272738297713002232989262455240609498381829286855071474556327005823588600395401272815864157158236965405812833692198121812037229227065789206260850726072023766719984439818082729382765824243184116337553290890186768830973144168342376250089381425287429188585034233110130447362874264178834715132120232785101127944910934546167923068087931464776549030219488333375236661267235328985595750444082240480763453007650856993572678032592201879529273446671748235990496587097431048796013441788204251228122112214550518151173348086202110983765874384418024369648089874053685855325373439218762161351297321882248366554968956352964035461953638126233036028400945587958064635069328915838524337192694465911365294162220887556029709796498013864399035660964200482414874786665080704975846895078329039915662169444477391849622450167542818913560181345036751486132234734292972459767969133813590871657077348086455566077825437952123692979227432883933331040643129327572845881204856672345039098210988512112294289953766808538676783023119805315052892832610985753543262006028762394738725941034936361558972020698256668846381767567086990830810289763017749329920855180528738291427615437918572332497138315658435987702792916056871264236184454599615466517575864428900311877795753626501113564073746353509556861441679017746245372467512200658005237929766459112761372565190183113587732917923010148553281577103325563493834915385492581772720328604424009107646895336589997298078264995336663531940930475318774975653251806254848349343501587277838347848460643341422668067689099001880483783483039199489691608173718179106814716688291379722122427323443977659213430764806525860585543224704470389179074978199833543252241555367776266579057062586163664331077835056178359108227578601380656776426551080071099478882446906896286610310773125439412125739961756581614279797832595056228858516715844979753362527447111545898741485788403740552375159167972505729480160416218517151734392179884846107197034956373992097235506784005070995399219856098664235290173780098822996780894903577499420679159374848800821511845506125632907865190845731136115826361780852806564287107304779674774378182252741849810120507945356489217644246370531234164374734242549484394244487155578247775604229901339888088637903193582387216664224850004413380965771291229953107647069159140422986253108093366276333651253629411147420941190834534436935688587905530578113048148298586235597885098895717100246169651146326364700501798496489695991656419798745412807658629726065143716433834325373823743447351979229783505678009554664068633720274827686927973733144732604264920876568550726495626184984028683670008682386203619444915189326263494483718907324991714958815293774973933952134245092923445754013270197026529007721957269945212069249891469196597964583540653858116895783951925435628584787398560068326050322204335421551673194704375106173690114743148952109750040427794938496417847273185267793960382823548492354944793721667337159900231310729817119303389208876241371776675900271231193853410350420224643587590523400138697270267244086519209431632634485439331968860478779591152227176687633655309986711745201055473761266900335830517288845360209501106527956036806284769270933731524140072630682290566688670551273944209926667564326136264634276300631647971678187830084880865938014616631175427435714785656113541689661398063591480394572532059503379985121485310779261853790328315877828830191367135245041938414973159973257518679477946881894507544218345978661251853046938941615640366509944729895312410805471430674151255701435956675002000062375414586429286660338527950124721799017574887097011222954771365796752125479516163893958309869322009230056137545162346307575403703672507873808268130745873989811202293358708245820534723942468110651448805862587596295221924148914630762553603409249669148301648043761535693120665384715838218530013769199048717455677076013245213348967833447515546814967882555498297991576826621096682928640989738841911745837538790435097239035166746293768050475840226586700887216697806078333081047298901440257263253545525278480678470568798273080679676344549127758648765963056590246170781220054380790604620356591768782308805113708896222109995440374675935859237817455102571951492502624671574748659272176747163170811123256945722180038034284965995427217771422425132210944894425692135262515341854836795410235715604770208062893656831070200677588086803644055567067161859849298061405851297502366136463659015285060226863953364867470021268851165256035306263507635391338478562843496340442708212433671028495965520251346815368229949160136180287314574953390730677403037297552863625617727413152250079140417570518319405933418793397774194133557315312620149628808072153308014210669859133956831320104460056024977588462942048347123620875402346813273798143888948660389046096053144646007177448680166863062849081262530119982982332951935999048501642799283596665771443476312051290675638942978505137905200945676497943939827979302473498625985665872039557625728992221750209255577302604211025129977750541425955022725224922975927022528288120520241263346204734544019045888994559337887134920488200263683491423933447838319639078790247359948114746900879236563106105994130035411205390668854440470995965815962085452798593015717530402496158663997646259900868939848258852873767018861652371999514017568596372509313237788919847067113083749207774135443862424647109268131450889724714912275788884576784885673603744547448944848735645276342366161345054754166861003560318301142005266062756469178559583887971603150736565929128719612891956091571550060482793662663331807843556883552786911452823613419257164184369326819015538058673807281550212035060085059155382176882294632860997320092288332792429726177650237112452656188514656064657196969607919875917444479749618044471854736805346346336003343907453417774814545636868897019674242205986702113974000986825738286092165783657060100009299030063344219146108488148885826661095807235414431760840373203841351465044325638533231889138388191794991509118970795981156066488921447599149851662029894643647234700856177819798206224454183785638810322373010543926910698399749546565588357298426532102061063560208886177542255199813059606464973244001184675518374211040090425742308669875396365114817899126321560150372704718485740753220598684335936468334819417993210021740818231450029427371419348879273976375593780596320982428954793747752099270631919444456887368825954429389689658656734741657111834001325371676545147053315386278560565933771314828461363790776275123536554073374538908459054261428387820257501627391139834970276352170454611733054617803123826389284429382227869004084259127594040317936532689091769088294996308468336708397945870238782447732355261739700103322715114639572466578844561275339675760308966529451162313481573847668968929119064238077611711634744656939880840837909574194269724240573490641896635235480126476613871864026986142313017835705680899579745193776745088424590058240030606023786898594524962582493865133066562594320245054640622625159933812927863330802045140840082020156481030868893918619833258311582155320396282574964256618718356161630096787372005937313993432981158773228587820745006760076890772991714657612683336388773362505993346989815063073706479591433073115538908721203479619356874744565287183561654324035277391775922203742059387476694686467360783666649139044433542556496367218778720467737117319956227052974979404810377366796962278774354456082677353772889675944343303206293854374598852529266731772204543419447645518452454111561354861254875947907064388491856763049801701025428073031575919336621462069925411447348396771376863022932119006042642583802330687228319270892896058259386589226775073753247375781666078326156396087748233263606582903294281693616458802956084951905916191691302388409309947602770195049437084122267954163969477964843750754051796039118464416563022738316847181302064750673049107358699739726752093331873833329241558218583368007510976786502561349600835455554944137934489283153156342355036283907924191437808894858711333075643850649346455435823937348446356161729588521376746927862241479995727320264553519379906429820372762513187619441056301885867520272619858300412580134931470756452312493047095024931170870294313820590771836939954692398218999230847933547129457972163996065996597893193597435299231799251214004229100150107648818714609772332844800002162631233422262856616947670271930925123731414167070361765688276583684518559871664348099606677707784192556528173363696565656667731183831859119093272948257350480536272808035465271371284560026771253136795683481625642473439496926836284617550103962968973372003221131147053091220275678474356924411273189575819461947518177606365969660013975820690061473504363914808380035299440022801849562933875429794655920519069895208464295344208969009467794596344042165106824274449873084127218816749846957194677610971733327470229441116792273106045862024717211601972190438743020584134791093161155322911948659060220406229300601589053881554629746863955972585681899074145152634932223566471276797762424442162152659735161294581353631679704445723231149201476753956371344842049458290524785499300201152087170129195496917051969703758508447371764803208814519736698441677798891999013325742936141551590804121393600181383301550815675102187547032840001522360494342675089416316587660557120483642159533284836285052288409525292137541492621320256912467748640440064311443076029249455754308853925504651619247979477201763894222635905804758384463353409676444145478445419274496541667834074592300622588072680822395610623028817106579618877046749239950330966531632448558134324565161244182709336634624944130995395744292986261978003924118506268685346857874826175980498374759931332895308329171776707866369269037041745543057545763504135252767051693905620881934229910540238061984082375844941961475862068186715530351358193536734182911801164405498456692664583364417795849959831630878120410976015428173045861671772519384739067833698151763877482373548908994369704916796569255568330551201803771803482766039206775600363777720061035631109854166064493939331541595802574988808481717719778449413257733969543031217493841163922068509951295925182566788659616696795099698686268089812865644960934581590136906519142390867917815550969630878852362085039949739199055863353319194371118083071561397783017530597835299912569559314874097019836999758561136927648711120579713771691824766589958591682621150675570479460402370054820217522074019835598530143038150633518547939381817045197386156127807692035543628391773991317378497958334770475304367815360892861009975404717448581204247929049539587150304641970294525896651983203697117556308311460043823331106910441135149332317460678027436134885079602801506206621208230318088571994014299481044331470843271144050253627015189896201593967537130821364193121387889117628988807955413116021345162296031443279546922561299610638340021351523338198443414580608388145142012939006496076036424307259377682660308325976118325606602867657577906835398349673969200191799612738111217878295819801551363762783421315784343303598959321769373973790857567567213559142137564870195907988050384084603992042587104492778338822721448932382280361229430522759110384641848947654156506122212092760302935258919474019357062642241034605611216227117977571775513931269435933238293814428006423977572695917124170681760015560815981279418287672447278459996526509913600227067016363869275278617741310682898696135979888620540765927269557863087342543153446454620891389447652819619601699480415109209289270954687418046450904087110584350753058258007014466531876119798698157982252287413982767906648213782518080895149123070562065678853738576945998070189908400892402114722838402688143826041200845465322249835439375527917455294634223937288810297214605222222560661633104637907478105371439286500969337327166991298022961557000971262457449269132311800370912201075720780874185674843478314473528555686329747877266190770892376327767769870548621348096425436827233167321442720216486089996478427816384731823841815032268869367058113538441638287488429102009430553978964875473059935406832864553111461237807296139095589606643067269263909159502711370379966760395061581630252704992712974982876786132851279405073908522957107189203727387030974508987940281900270710993266284135118979407366312197845023699429224823009703684339667785023723162468349300666642109741812618848459122905959254616325772879258607911677699148154715533823057611804178180276521388385382947470959364485579580886300256676791712173183380945993686900657008420207074898214758471758613089403727857313237972678704764896968227366042814044753138180974838505754833974092794272247744187695153295055013123499126807210469576919351517307260780267081263872844311431186816961505387096336439743478284014673121770156858337872184757227624101683745021370274166321355786900066550724974676241656797615284814365635357142803251496892514228082315864495864738105445192517499842867138172686948024874197874065909553668763526554519810547963015785516818335151957058889974263892212720136388173718144653365123256783553968176182933555411809831890919639458981965413198486877360272180892752270414410535790652200825429858256111817453317007388083983595221176903097808570552413012990163005872951104777305817499257339015104526783343392705379886240655978486145294547950004598076562427698262613280475200955938184092890503492136996805448601430685666525170785842535037651020797320771873386595517635557632358980669967305702506921792924941025943625016871970248561879014262108535423261130049129855396820617158269600668592762673644557101282805170806645014417828616436998868707453346056040038188106387484798045205103453040757811491129187429898269666750921078265880210786174115502767610952070632680764567840658624718238610630969049427713129306461210867857774732211383302715602941023689497092573833723632082884734863961415858066895226517230800760842324944223820391008680080426311067224515939509800051298467049350439944362218008983171982435700963059841834200864880646790266095967704435289308853916659915648323326022629588955612604387173712458471016068807665555682437693925498155484105974370203503291590803233536228370500681216960646460183745437130966799665650613190403946735868735288391279221766471205596698554499877558461942429093120838118624409802114906937672990946522843448227914894388700032609201457122500963672343789007715783382200398951299066822705907245266700022813376357573684116600730344448492695763635820187678153028261542772187265504652579683610319691300669253109040449619121567185550321735573963091173381750173151676148362701078294138809777561066573010499131085216622650345029801523877514774517269160951200927511770260784212601024437396008558586362318252814503053575082212221358057413378138988070300646216173565414079736249554836622627791513186215983244437910285860438148749820775086280329546854464485450710602041377896434265568644072711864721076185756929785672382531251489959200291810235232240943445288670171438611172523972293494875871671716019868027743688570190140320136742355815466411604578572000904727903849278520806218052799190688908068355291270728312442981740446265027575270738583347609225723331426641574246702567639288155179692967847874613086604116727730419941278926248580203455710677576376644164970677177495459667190631681625230621406701488044913802131473349931955351619776127742095732843884290889549761009361152461522207769685411486454881749775388461025910744709553163321158453478804105499469544607060617761149717250207938003723356941592686436116729932017180385325330081913819767015168565546268503243661609962068370937712813343279904093665341055380440425924063788466517813669285738518895074568355856205896136677245875781584686609250239186355219791150387089265639452021091501399592090948922358268961936557589939461998470063074724992222397073830361537159037599657209885554137096009990819338762442406965185837373186628756885239363769143475528025845115703895567228061574797759371896759196077203593122791021434767309725393992641999764339238023024199451644018349325811456067329888904752631407015745300660694479152929643592039683866710098799910236722930147378116673304032161597084380246657890118358941790001369821326185040180674304712269538581552812250927519950042129908661396907347825198270093490047183246864589203900640668373510031769884276747475719833561594144301020546946813521875804340952463694573864728105086810935596622176519418677266851407552623213783107531795786433570573872338724488658511936833685115028830950596055263408464009276643571280224109153785153532982033197813013715247823616889239308394450802706785098702882366891846798644715548297346883060617000026798670894220229251973453404422218918490057364473116039447149436723175221695420712592106284261172882872421048412191940936481177862163156609325907302697179000871010997051843934517411015300875238797135263403590225081923827291822564155249671326607004898593432031983788434716709199005195684107351650514104847070006961324848738917307547896811485734443073636228277456569366135963384738501463521081096112743945128073047227776818842187947642539364986794712065235578920714740606555289642217051778075901840781329897205884577904792299034037217843225426702345721481370998228528717178129282785780705399857327019600237580541951799649474356156092124940665513908661800438002559180223071615897034086693927952755937925935192467169257863049814634465385950877765052340329815467290718721031490888444730655700584716310486505931088620177325390249209102824147276587050977606883414955664145314498076133887936201209280325374113160107896923076810975257001769055112943570961370604215408309834072906766790822948228920073786088268069019248423196483648562781140141222472969319833962281596343084248221507650960805913080724837402569791023237802876418136507958848076849597869914533846552891339787120484073403392412859366025100594939914977261772089966919057713083631152097676598039820122904528537589008523619405131298183790553813450839008338948189427472059799853776379660837173429629958277809373386839157154549148264421678083008475356296641717561252434810829148407688953634626119275937613958692204957772192057131727452239004663427967845239415828388288974935446319327160908523508952337317142129541822209638173481393210427200472119703001205431834545226175626319205588586476305928387798955370932875494321700711830414405064888318753266136794476991247640234725454422954949560064990409676677878866851427714584690120599890528166045663845940815542350067073190857355392297463322177173331967621269379305192596015466566179607252113324306899304145943231517894054884384013227700189532762290547367899749657749499887306580733596978676559463883934610581583846756930746074488906194168192555153127863075791468181101668882493700897300513771082291842788879489760605788673829443436169693002417301426476607698574570448290897694435830009568418888465391611348528693551716342180373622222380180745458408179871096734490218514920443656186782943116796913521043946825893241285523356822860446952696074515012560293306311018092139440797794318325317832360229126891593103387960345312700043144800300158120908652035478345994147760685873789562363816160877945113756752247872568184662721244145393987579241632756834344037934115975698877362544873805931661043679512357008083502457802720204657968475244874411198241014794189473557977811991147909223741983384577205286228969486759789765708319469477281983367542189855089810673295030455770936495704377942855018420796338030197795210062958105215093921804589218680138677740212741439605356099108642940321842832448069051801987234488354053610967510831247379945554860131949514161986167646829098439336656675027918902816361870936070504458657885554649133961953884148715419755893128068423376460425176129081482841476538291990207202542012308458990051246753742612583628589672781607474285678048188805787130560766316854331846085823899420741435752947505783220152594694180193749075925287036074644552204848529020944423173791931827515449456695698813775389486899146102585299491876969813416487969541077306975744626422051944768719511121662569940331876552840410448206122248054521522752342631349147283376811812627877473486995897295826381719385967558251455671839149751011530134377515691641011316696427309277407346128730524137637029632778199346320217450676494933624395201861315614225769590970401168756973603695749203368813636993155428658944149545330527285649022987945837157238527851438207906198636130605150842604327365786339203895261568824201682059799962706107302154740117262811398069219964110359234447021768650864637044819561288841579239765673058023762177671162367393594266691833040953851252432532367874631547980727997123981652722231786127569171583306265808395291615413984994709491384323871732412212281624062719379614675292501976598270724839941984681710264359387776497689582553344588340664844973528549245537782638860515745871313098696255665067757732039609005525414841394211873059161863726388818614832207631592148114918628333149926764985437242038404666715791140492098552976751143117726284865164714870523361965058425629947357473417282851670633415731207000114730426731521444614929702680925263410894843312693719626590171413799836722013676109648798700531352613385708573393866784763539615712650332810949798798334819075077042108818720024040011643270045364244060420556810377758446395825504874960698717811026895470538021318959890184328329286507570689140169994330542483015802900326806949368836959502284758276237056301262682121537947616287538342937656624135052451706965536901631749749505573214819424937048751352993874491051131679505986436523060329287577300584494315702996746561532331006484967556408321291825619171806704730769455110991545184710189692987199210847315086269207856709922994250666061285306398226660395136988431887579468360243708916861548430040525389436651295476401924108147512349367328799382256481302010864095598036663855713335939564433275140480518059978348637055267937349227064302501914424641274653637155154003293896962306203419923720622050636874393975414718734518602674683809844354889424763848806318374762688842327005138405168328064033334670436306975534484399570789731749089608730803311776044080628585637207440929953764899183242302730159854472312420528574325734883256412474600176008525119831668455687490627181436153299516436030919256759838802626485711722268042594092180743285156734659269676874965341269381980708823837015107357604715735519278306836854475839293442932815076025103054934729580060571466638324159003161286463649163881410502034571668376704279989829341925319939357843543098990708242866630581013105674905529876764015728817025476887632043523089196131460858784410974835280641070437700291793954871307262819556269775438618606975701848262560133286505321578679657402500825693364551029225298221322906872977336379843200695679364758311182796561959451216757352020422279099197684226533379901282324378881886950594173433429482521350364986655522166234754624632701438436598782572140169706155866560902934366294585513591488968509420521603276712390668292935360451442763389632350750354266973021226499526607788211748821154619283883777811194894832960056388359080349707459835908940867271713721969003282691040310680352251278774930461451210842041473450009418816064234554679578970123451068616835730606612862954646639782656051311531686948200609073221755685542772257544577480045320752763188421268295746878131937939826806660382979108485381899172084353828395104409032532232443820775932851940564173117338845038590253208047410855434149342662746994772982327787881897117167899020987508276490393721202182354119548253980014462780376460423485607893071849737202551268199056064599940548652191900559954925177355484185922631018561915940952392393880394472343773556050148760911764428066872825825180884165226859104995586076415119999062792039237652715133982000857138167794373578208675112552290672991361900803508193135388293205478881716584262521536307288498310157390314890358141886351959084161297711091981179162564588820754090962604833610118547319688419508332353433619290961179848017101357288075192211278926452315128757777851998201225803466302393100480320597793557435745507600875234155820118723456213746190666334411872322356909538541915040852455567602356198974399659958487036248766337381734189627044115620305293099959680292147232121843902152844588768594574738908393599558068906635673052134875833124465384403150822244290019453093766629472084762364240788885973779284915442463186083245813233784004742597548839301164660850452467440639452405134358303485686222624437438470621319723504303010052694526516710710468539588422696432402500847280121997901277047538094752445922547370253944895947351504838655206942775570875502886435609333507038056237317394862941861869275359395936753864313507943353048685934517360878047617880319560618821738432012984563026580508488600745019862445736211950963066044201208918915928333119176972828218763882134222265273563258781107939823969792136831493361829064666799409392628696658075195678661618300960330670128009289023460923273036185960838049151340207653743669032401771092204757595368466148858927492275623235294299827655141374658973557481678972427752351354152997423778991662519954334650488440118854878087569021853504032379170298764046187391070983849045154392887311203634489141366856017665732733136492189302141566458506527742641736656308223676004964634141822909582656177998559669172426982853987440775678170835398736503127627565066541033680715234522962908329243994577757198947810698700126156359824212248511428600091675707845066863590220495726103650370559434867164029024372093216880354820784727477300902438869962843859721487462621617315919074475434396955708740588410296726577716540244941811984661821446842022615265027598600921536147418382008887557705138174693871508416522819274842269175351845200054525773031837744035240236440403236702036621118080132863444732269263222445855663677531265461385689699579564737345219343339918420554469946930310463482111180070519942431029965781672261482175309390703326969212955400121360932311606466579280934156471474647897968325513206241634522735055445344766562340518129181719763781774503907356018434730602463606002386024121272110617731112207614634011797051597147234230331419816085761543646367575538457157454111593992202984860766977144300763751657543128441487197309095201300517154578439363454228681349054853455108694010395057744420711072572751713166550950938948752760967840262869230782161997535509965684880021373378557138996883419492406456906228863799080285788876324001758894808774806904148526490283831870145781666808224341304698947634713204707872464180945839639879835408205717021114181189376673216424121658281984328351659810559281792050846058078894141646198066486995619523756755357911722107321338056384272392424315479061062054231874383475646613528755508612390208634361767335399014172338959517415509534639075075321891123437862363543863634104798571710676040472294492515984181502081453601152036631421898794970873243412582063429811589008865894851202204934378096366281083900559556145997375287478070440655718435365087191911721201220196741234795837507659593345791008691316061070104225647006943761537544969958222574094149477909359703199479139365559328277999009588409169784967898647925999961785760472261573134680436656952113612042655113030884785764906697942829160136202705300521150472476814609585274762606744947439579525158577011325655852927416542315006612161565981719292247022919881326310350896260809126460897227514571277349354001331137326732406023236341697605712148587532008551226089285741802781152157630508056555420384972889817462780009381095164073268734323281053739165811096942760357409352813866328371205851878130164808690241845675418305875569225253626990594650199615260289936414043358224209269637457627426481338594121613516278305859784081435442709380903922409342908173768873529489991686644601066102534734220471264813796368662270243615000766023646242932148988289144526896649231482715130597653705237335752957433175507610208788312049297694157044342537744538708123930859142050776643447556635294221344908429333919119484941943639842049425839800521303657762989839024624475996072916442843256311521860070312517897028212852997496782147078051827463991972681228118232014010757332523933974535572932809632497688793982039660998775544173903787321663719714282334717235784027467557472520292613618690108299709761597176964002851732596218878462101961182335682479421513797835984158830327154787775496260551378496668448898892716106847580471196922757603848306616124967345642717483404276199146202217440803102841458829108972683119973647533665965089072285891499960580911470454054969065814188120572066323187775543140156781766341538509712353847062419774886986342741183264391370694295823661729563395475821995801297807994047075254210785899395085390835582698587075466635035182821104272908787640093327946475294554649254349628905762752080362076539564894255478047845407587202746482731554711676978636721589942080906361260278131780821637004065421429584019671381383596785262056419380885127942595870725816903607011327358463168260095433149660621145406102763415392027311703049265796414871660324662564765325560895559457322346394951959389560815064970759183161651286010971027175767986742151430010108486967523286401872837411237516787647436569775026523183787426009422774143029878235378546534776667793150508075001125453526734730716200973473316978526336098087821132632218540344656761195597075694627233962263978891911454029140761401884742084273678977636588836332096796784995971274592729317057667168203641419528991338839078992891645781517666788437866727996727632155482959318070682557851141685018567747004522308618403775175245494397066229333004359514626238181043667905984015430139892046899233215212614395355230651242214969692759784266986259878282628050399563181035969319146128657812233505330461329194524853799081860650466528180304132974130096908859455148843456422922601076101279098716700138151233442731297172529858593277393511128052898839389965079047605693223264982852796332350349918835279534466965070472256880524491417694011178831189932431588456725648458621621801371731292184187741542375738561272399458177878621510764934636292840561214110079284313061047764487383198648664476859693495448532243239726510838049689744624858699334401562609053325357478265520760872105651482484532520774141710042816682041665768653247357315799099532838180944263157045995479724172557721106292872849654940559320351345531031110839231667177057302993731366856764701994575577314727905805082007471657515411473687136556258649441911051343349842081385583556928778342533312025695615050056678098757636346501804870236238815380299314368317345076183646818935960467727468781541102276933051635849274641640819653502322031431046411259425540228166988132301373534291338592338111646131034604781176035675840076444153703895603611552505850726768822815943706643400710605319528499162873954356487223510111110898037248715313919039696289918061303861563390303147371631554420334590550097707077472517311267064798636569303640377469452378620112032276261714427050621874463844372806674307592549166441738650019254649741382702755429020657264189667535153644939922360042231499619246485891752043946696241915861150544825459003909513114991472328549381139894866811960991630450705627597752705580869928985392096817518010583440614449696379790515882138049986840447203087789931081866609231376838437084883944650218617354201855561415452658054911847553610029212569114757823990602996948611649234212951591243073916066206729694867544181138612537764895261184034760653163520022798497810004126315918856444081880991067091050753714452312812356454411374805119244258926758397168173130111880953709172173126504656639448371856744825694141624519874531081037818415535510161210470292359921135389031399095284947553504579624587569173541328549393440987466662697938373069004712561590009710851828593908735634630615730255416062646091292249913687585389000108112631428843261212317023632883477353128866875351722728908797895072762497483233416753599561694617668290484152952103320541591011636713185705594005039364466730408524647936656948976324396501198905832825145980672153100386662992639386900276673577855837635836185826774054915718995544094343881652423582726685114871263102821595434674972471991783643137709359518696457184020018688813752546622124807566865380805378372007162048731936262706897959004379554779471227884133085621721999176390544696079616961895366013703965099874746099858968358833487657819667939156107019783609484634521921175881270609278622629123538943176173728824730638831421249231680173680837366973516970926625932599201329892357349034873702116603176945686722383048887373011755478181644577711423573756731208794113073465816769734284850524745580215165363119492976595027381851512612953311952039092760085569793694209994646063091321848575375988267460775953756916346347443463543981386870530989051789466986851561642432168362624829178488007684453613121611722828671341264154200375936635111141877860549260552317569176922201074999481394642024311940644185867781511863343460392254665902001505747146305924249462495935620728965888044637280925609592407888670610026811622937058945351406981159212725141743275779245079106115812807725519476009268117516468021244750901396811333519273811920042612812306697496344769275108623016198880526564352155806483568401618260131210901213744888873335614200220270952650736632771825318209869397352896430967896693889115037484392374975676129612928779916815369108956512794601395807216477794112945927593119465572777102313619883699391625293760487382809358545574713651406508466496790527205495873953143501271704126337881434583727106084368394164541243709397318018595437138605623371961753482528148694036226333668080662622914371945718583549834377350196268477090784345768257102208911621414563987170990601039957096619173737118402062830457757266014377098194441381102291466544573979779350013715229903211301476951513299607499050654376813579716826562647047331613717569083405340698633151754817458291122598010897295457786931236597574961017084827712334617002626588671342373632897013218258957185341738627816193227801989770678620271321780949766945454347051380984590066663803267232437554393975552473971892114208585111690129173335989891061128930612984116319099609168028602516409652563373605078272675859514796495440608124149279387857305962699048107955570727367659393680353457038836751111234556078487766985394524614310945942245800047467396448931645638903347303018434576085978464864647853073734959518059066709437152514127944586481273158986175044602663320571586910459946904247766342843867565767581601874101437110063767059627948674584752256049833875358296872599730569638073969600179069755352558509105198464808352043309159134999375556943591928631823554392952248997520913984685533902938169795932061502822797670203151975244343453000878648038212953453582108755295890434045133876592804116894829817342601786717411287011948022080638971535181674089006877186378496181482802186444009172127526611922790335554632301323532835351183677150273992852191812908769579968711395023062727722294127123253765005807831735179414569274769571665405356395914351222503334453885115937727822539740500179781984276710048177683224657864190040959699975563283894649586566451083183785352017348048260724076426198900270959188009615690459379680209869308165515931805935019839039060349096963258795025555882820221877439517009666983780445341214087520393445241024191924804964807145965932946037223635104356352704590887554998486605177928761135677397381678944307975049130215429858017236636804814132833672701575014672132476202672704433362900482607332321472190008821405059264069020122997762363230301588071779442386084523414154279093991332836779356098043803293660899410685127669883611814184073422675273720075580071871828067454690882613054063700599101272368820409782230504430674951347970889702627545110394854492157021181940259115592477003622313587823832320095557049381924834536622213224208083447321713021392236792518715428695779763063909196730205226263487417179001619050527703189839022318344831109282359937566329934409296487533833071722319124002720888973891587138923676684263252215930332118724409857795010355693090984575542314248459520179931936800121110834858557862636291159456415713925283127985638255669987928981271771000307968205026707266014575455238236142827342645258948557816207051008087361034082464731295182103522570501331675075042446748351760826232313836303830300807351954853349711460291652104057462046978014534165846631260957914682396928919014956518946944083393504111585843561035263897771228451590330507860694837905536765355136589835126639720511521953593059710939674576355441695301818597623977020428526633828786771184183575811945965354386464673822474826902400093837409414337359072788581144782750405513107370688249713326227044077963357594499036650266566904007701754838090278633890179997349079127452617294942377648816345640568125631677678836076560383572604865377093008535357711150671949072834986776224320605793905216170448827493343758978569757463746799899966817752533692250389616719514317726215220942817990804593332765490457739964371417774367538566202024330435236391137658289720457393828649871764248980473399734610737251366372476899309515702686348735494708160258098977674290594739490871269149263915267641123253964413027347307491747158491119692862485378607167794486503030041619035180855921879848391237336523295724556891080613730108403660400056207855729554386839797401150779326721017936003133627055608060583999877541967957549110117414601008000645632586751629607506012670971259757136365354167217487245452736592970468579216442636813934132834224785870535136741211335203697824878136125259121008188108226912259876836360421435000094130386247592870291103652076978136817476801349495627922712157888815160196575600366678421974275539757370203889080887747541275399504632611733475260946235574626153291589425692507354392713851089395549369858849311508245382137060432087538036436827533016628143526498310463360942023782746166260292867286967831261213306324664772665435679621296631859466870940460629321316658276696504022242513019777325080000268131995359285154909646609500999216301741457220208362307328710608365304257151950978046765851058391343032669099300883461872583900833431552445584707511710361652847374018468356206614556072666919958519671972542641783398017637752287520287976617748720832813104336118889629352080196318051924469340941758023427644482789637038044382277833790929262757585233660955475709344913470777311401937415286664372999325736315309379069185801514300824735453659701608451735713082747303725717399197962209746143049165768815075351786626813198763959510371488697929476102824280311730287479440232673840967858647880089889119313458502742955101776729072894829856099141595861424071829861408658956480917163381530005205503313334511188761304964489798530714530891724197402265707874894076706581949393860319290896356514028222019519390905941887317330469493966874446052046529974972686133248647736588836045156690226829340573616790326065554454424254298620003190479418865540674307312550407437309509178855903137250365497339461817043659704024398299941613972042159211986419537652254532645113742145151681947636004099079688477655568239559586372793293310657637161849553582074551181948314135524458620566868159384357724390726273533908566334657534607008424239170071151029181188179060040301415670878250936752151518118495668467724702949145325916436055105759781883415056014923477011530982035150696280488044138759442269693999917689826359145608410621460738117066461751397025834714992690453896531532875016818562548467900416165573105396782858329298434504362402984611626171729643895472547837727359050089695442166397172603529122364674665246802082758240003416473939132607925416947419939291568186891705516584324557969923767559748917579377671506812470777276762509850730086647798440601033088309605246288556004063691867928407431852494491072678000012549968664109920241607774881584361510708199173173012730058666792061691831852165664572320359544409905216954711061780312169292104456000989586983396122954253359412296186441400472831934394489625489194994182078558936221849784039487198515812380586350034177247783328526526496627246931898907415338383267466251427873388202928849845251146774193839076574453813315866685038487455178992046478026772404274071985599325154282397689752805930114027013442394549761249464114664494548226143672140330289494284159553862396883299126799925705765613483020878839972698909052145585246663041382635193519678900599740691555201841015934730879076498749713550047429428735223853766529302814460579093748542350225040175034631766879399311280054442841311440010468256887052029245924740668798087886023481141025905156638888455350890654106470212159751089562715661819584831402497023882953795802867878340909901383282422", "number": 6, "group": 6, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n900000", "expectedOutput": "136659123841950275239181517284515869280266305806179930227981617981441121624155972595242993012129171332252879800789520006669339649391698988380170661577214141449171462794451833636622797304062702516609802546444560191712896476376084232367340871267996711978597786207457122790163305015394574209668716660235363190643519383585287523290933982470051943147630552110881897383114124298308344586957964191810516259717753790704560854253591324596682662196653206479072642359130258271963384986064484919428830757152173186807662085036181852882800976105690447267660488470558190252017088743646447501810012859498393761978190966786373755314179336549497092528615654919541586297802650590848894816205501175684208949307300533264336580687697908504909065445740522243549978718426275065613988934443880516782789956828813134192254743584600391035315576936902795672313220953066029244354346921518030174060824316562805899253900109400242498563207876638169464603299232598166990363697391465834758023228906466316893162557704136592942053159828662259394869576701560859120584494058206280298975528748225863842346350932685590001519156375744268827433749539749235613697624572097813882306036707934238417301122108639245259890545915569116242496481525144346022082297095946864101514613613640318975052095897722695004280980757994142613493060156586684804128709256618354150390884462511182592807776877601297894338408049529074204250092996529218424815963139964887080691501388235219618718810657717453316893362800377676242973404903853357796109743557670972990797578761915711846237120167859673062439241159361981785154896763325797799253327369460522944242927350318814881352272307476770093100301362068835756117562417725456943776219466447360829638169937520507351580064676407764672114713698949684305687405243679255753630277901994779580388008211246112774841844215353462369224767144152739514772450918770889748803505120070311662020184770516809361164200185150053184463161384035927693110439019841828368933655416488367459773531878164910089132404225518288651249129966731561561893167499537142092896499303768072617967056269993255893581161860311836812011085247868847787746564843421580969372182218904997060545523007459805303514294112393013825897021459963492081941227755702003497530051381125387890554826770111960261195426529829352847016712862006664127317306770882234302753240238065891825774842233544668271685271295624074195317809418181146813692128819140756631062900793079978256004171723003366816190431910502619641666456859930969904903396333652439655990909699129058033735896617664142481909094412886229625739979013842984546862458991416065141083460514717227253970323456328733292249949330667371878168356440052767359468238681901877228829396888016153012590148965976736446796826573731715427392602523883772377924735336984178874836026924843218674554091315134360543695479129014804014188446254623714169520235182508848756108246315462104261439721442540808898847993985517165829629229865245069002151517616442316032533483486711497484438843834805904854755704608663165008898423728153671594346921186040726618039965723012481986847749516273314523992358359604845242722044091348584354530040619517928824956455590961832736559388680295171806803654569053084431143606414068279694001037321617838270590669278119662941663211303172211573861903218634683749335916932793098100205730313024204899904633052531773697718918107223759221158714593672288777787005016985539418333737765809731598495825170979259645999613126908756856851363712642322573567753446780273609858472455359700052984918693316500701739233079641752833505468267967451674804331543267298252941036133493144573263856533340488525538033809167977398884836488079153689487967833151769370574245200282516725145966122374782784008854210825703461409904133005367573547447641227397739744593240230022326076634155976255985099443648582268496824241093538537413021520292286041019515321804430413145825037761628388214935578490991927136382254455084766000599412348569848914242764848875604962594742120121796473010922921051425784281837013565413545480373226140245400040120138184317528845736512879170972521264944753628246755111323236161191109937578318938192505627049483916748022767951801970245660452237799937456057435536974048563142245651480884125799225687013553858692663109360238613949315593015714447340766634872340841625968202217099058068848926092885719090025229092800804568930688988406576137679878410445714621675144012654150628102761483372454073921941978460927925005314165769420516932269723028372994394955559432726444201993447816356869870098967488171332877754280852562486056119605501515612260892891092467993609459262986103008608247809338010604459852339110038031008664602032437371715550379011282582068756233652120125472187000812420748860504634049682592943013833418826739851874657205345863943197070418279004487597822668902769861770219975889215047656596910305564442569857191140407697866628265679774932251407449088666740837025553764411374007502717002611526254655126553421400904693329735058167958683420547960250522416747476755355853560166320841534120581670110279100004648827943010520514193303644752228037710301040651852440302556712463405495782386620511537520260053376057940510375814059760794285028174245196679292556359625500934888212928370774543201265495585577019158292937920068989871582101602559907304131619780185721795898708645817289746714442283114854211565263990237609420570043414820694002117398418530798681226620327874637348938910352763441115424124452077263979497895910183877542952088003442945315635113558846574660470440081081372991922100529341242391713508851938488514073003103396737533928531972047876256485988242507088129691662096337338428036007052830953189714658582994434777483387202138131799541799238259346630869449961320521174389419775794109532791338012285102499940565770999830060862480824346858250693353310881763723365162412634383815711380026459727856780374227369620646096857824721721448432447703635381868120602348544769808477425152460447055403253916958283611262208656075522889858482443304180378021129125917087154394917874504412391950624927728794134337982543904926712475347917949734974921558280958662759044870274518050276835261052394341385667078599547655158680174093618410512684435485644648260643920595778177986288305434077762942962200574915193807475562542345836295153635488753629454475655315441128288161659587822921366296991608624065766454240866468614618639346858267753435572874530778561851491214655246948360156584728524191847530909007083540219819662693613431459531390409175426586742881420692008873545105983455027747304462923123286763920323029532104941657751912771751036861174872222932563246994402306745636523012677528295259085333182982966720913611630957864913771349778688073919318976571768467159284037346930346723876793009645466488676720528623727723147999565283865255135833497196223529575144004875313466129624639366276666110342507758462717398805722249791336083789479733549887397725436357512470575169420841920269445157710022797263864435205858506306499234949685995316005548145115309256086595039400412442669309575870870124691491139344689927520474267683109692024183140073232987095340530157953204576697067548774972943665587483664597274328985637604887107540136705549952369399073904260732898907289681707811948830108282635348834261617723777880619794429019451392673196513191296136118138836455631104296943062544270323025877043320288689193410533768258581283227617401541627610349025792016054797949289969105056964917051157054735627168370106128756167405513851765699710879609999120798459964481291836886722764948461460186996349841352489029419389321702533022391522230165845616079907481331290794898040197729308041867602552781168165391361136945543011663872694398594424655223852418184949529120544530753025768981754494859005122606364672022211852216504547371937809860862532256772219649009365739918850202961541901440594487250912521418540187849642030658600105281058812129467774653431031297060004288841378180034898036400329795227487641184747278970927828334283506877623678429709272106600690822578732441132813884079226206631190933159054961256615034081444039586362503347523792204435039741680790587118752282215635491979772119159707975962704496468603221656664982742959922439643689642850439411163759279977746000355211079052677876414492660692774805848704031538022901494363644716243819577894335131670089377016741690247167801401952806818112325682668279346192569515890922237460926239341154211837180479559842317412374195188976790929087806084064254055771423159118659498243044121459146624158173470130905795479897559878697012613435685811501470677342259947508636785705611943148247995776645271224681516476035543329469157818109963467634021059413150276212263175536379297280147194559965080274270976175963934223501309129322404919980593208790257820741696283711147722446464738052312220129354990926026924303065810244112108425467712584275990756076471939256296914423357499375814440684506760205978356300589973241616396295024255615063678603684917344991839019756655763667251320927348364279408681197571194654734735577897727291140598846282921894109780911233574988819510336434691737964618123129600435575189717525991544721581064663075600536292539148352324593418191222306470254673440670791257104923723587995202585174612080067379652847725863012976285414414517788582828653192643608300816929205561567780182354915447270210639063824063720498038138684278453508519392486162700841102223017189241401732835481017921689490735002962307700047337426441647115198067389090472748864258117864905478339876408248284161427702117432257055661109671862597276230815532133100734449114595424997012157607515536758767713122655850949293961747152926359385361409206218229065158375293071866231899823879399711789536146025400198691462394499740454149100794938516055219426791160504350513030542823089369393038237282851017304980350263845990525699746000610683684722382257095978173296458586345240648940753310134518368413654543556766516284638712530045706959089212458180203217849827538976052688453345905740829445515993416455313402020153927233274970375295732234248814140755028194132992708102358293715496223274707755835326025797880759444229400175722097966156580356556842895129448356299830978693025874262735345861544700961744407636033426678340326024354162047056776600037884703422724920761500821531847821745988299681220757795453451203379885048124693142275061072360222459588016450516004137105135735402045214632498534551370198932036757773322959889351256975180069306361634763763676069300690846864380047046297440338283644263730910051846493300947437134635664519772305478699802924996810963278857537735262548660166482494980517575318716910857850560564395284876913568143211278476851374981155879628787474505752008560292646337652163527851664275581108823676880769515527819934128928396130064459363133799050339151699212181820863717340965000885397659913947495255018261067245020204838399726950839670763565727466142898531703697647622866649853778842429659763345836728424084956583871557883265979334924064024561897267536950436052651272926821800684715931535114220490118815006474382217607761070044080828232505004651289451846158069030232627500730624373798429130303682203750467295557097512331923825558176083173744038241647025387873164847757559666438904708450388969243670503940681264833926951631795373178432339814063073687870345387053726940996529278992024192296546809110620446672649165469342714337649920393450872769212810630327351230618856737106836662045716722495807950381576563722664398584913470281516400323567726097778948577182856145352858895664414918116186695042229710405366742658634467904136035906639556861695638372487455441234178020018226656431401294521697433124342114273245012485113844829279534298142566499099123929839655041357288336826284660039206754057590287341756687289587903784069159496081886746241986950823895633043525776085138639677662629418299823614270163489418481373085676327942366366674828522965592896616120057710588982354097323485612178371694180993216452826481348664779868743435403966097273360075278463406549480938692564835675540400041449284796905925005164620352350103013930903327011447277452676085849916576223119893705474174543153385016315639352300725714522736909444556692369034082974186689687826673465154359594082378688433301263219987008966835698402750639571684782493505316455587150763738824541487067981658199974138624115543240085139755500331359160365421099537658609782712274867480016528850831562501081487294982522296267395511523059785625218971556415310161374998992452729814251236375509074090278236931973938905455409607707241590061806661992585561686949052040658631108277579131583704353546556752748075012103217126293523786881371590641476622685917684024788296722337280893834391505633333212489136467231079474829044034895710336133368644567169065351732131253116964040726907956039346683392895886804334507588766385358432200050250155525210089056280126387916714252557031050273233660495804295424326009221927836698398707258418774805636977661580786579243837625631688750104648832639491098196059392745173690028809919390404796990485905201399143435955882659115547096665560089973775746644356813814025094857051007163550965295757939097657894408243121661144000058581987454213641644590891779399855605127291429480265101139245788098179750182527700103911403408820096567264688371178571236114827153117418702082258887334925643328395281035398751517639453691480625690363281925006043071011623739156853960532018058142189550085353636753113013626942210044824581272225936750414993526976295377464553187482697755374918197917805829557351655324204716102278499506977661698253148057684271373140871451673523885509492780128268693283080066769597270654576481737197416900790107356766485373011750748446983159497174412945298646792219845312485610868998667112437702370128411749448989893827566844146400145033008512481764768382687378811812932119194927583817835952443352961229412606472555827121314098072715302601653700909641040149643990265642062214783758749468418844291311023523229510675696124690337824964544173913924966594318942268812043574994611143291059583350586336043998885048611751548563395059035476739429038520992313048055948074275156345907418488268239092903183368238894562262631011665244487299841841186924513133563729713726984192069446607216328779147006653966373579334083881499980085690950530816113533555721721259502580350229897307800246346564906736448493186952003943745731890348298835621113941705044893190093743643375192774026213383957619822355817970840303811692012571909963036175681826159920829719881719405202261880738926531999875917154288747032996233250930358294229070312366630486640808784510550875300090778239148181991467846059346305286657983095759521542420377251115497574827845977251858358112390475838225539257413705371341176302507224031992753449226194702679853795655780027971467637586075704199144746869337153970979456103778416758680685355957570715168333575562257848923827187347466192341811158396636375478833502114028439749571530670392939350408599095357369804691876362804573515657074100777582996031045155848216212463904631071270952094236419859092332946807379218589647049641763562483845157766410226991820559337706109726298739148033759484064244086337627551287438048314886053434212657217395013392092989070224740186486341942140273661164537050366740788373714888282479797157101939486923884327289924157080076637929355386259733539471686748772316532182551567434822136040988378280083872586484493974017511857792425356759332999285604929790947048509770735840003616800316205739964808128332432155000632848298968572309873635452023314548792728147220837507994679289524393316342136147593239008114170034870934652305398640314887508475123692938004856625730268192484758234561788792513238957882716952940318837389603264576545456574722377088530494192530234863366636661929411051286753770671907200627367136006466418752635647574894753868707561945328837170598824712421233011469359116528221642729341168867882057572320004207668396175756813412057079977817776956049177269870919123677031437409615483083067138133379680938217959718457228189731121316923941817045900076835983426511768049358764773469819423926220852144576042633014470906402939829911296163290462059450920842837847557901290183379248562520635261317929510563944571808036830032492526212127085456268921332808806087921015535878243665550765502115412397497142163371407046695152268004924198072439351647588630126760495063541185807888661574846238674123014262956667976701915073608737692402141019109101197831518143875469502473701224129322896203161013697587995497202947790466351022763841844799954697257182240949300578815567299885885982538881515009032193732161743167037597547007146361496065135591492183310522324853834541085351946151208198730004517241212812678201304433225514682873668029428702441189407706772768226988735976409160869792478723225923201194532560075071578498682572777088759680467521697248274373570424499502090208905665493336777573831322623852400609432638701923788915255704638611748182803460078342120566650544124302165905912712322491003075329142618869873792691487194050325811963387707057939869292837959976397547520332928355472009072293683679850126911655433913041206154322992734474490506253949975103394991817329003805194716898266098839069056650731430194294546175404399108540984196476352502873914793953434272815759147055234507628042444738684387164295797790549286841155992062787844294636928433232972013288543189162553970144900599971892718347877420831077437646016453594241983390515062202927402940207002990598246201562999400969793681153418458854454292167414149188626739515592250820339753946950742490385421296706637285998783776116583446050142519141756309065381565923820900453033147616980648112612792255839740301291646913534060924023305757211503863311139722943507312561193616373756331805588776416569228782888369934201138539465980945885624643238191015654310002231635038196668903267131365299079932976214943951582616694939799511632740290243306067605209341965100066539697679036052713925277822862631712790452590992394444861149036491602237925666908010356320138182573606041200928856568666569624669566830494993632899820451167244609935761063841616189294648738962775906226440698685533320638566530672321387556575302786154039988501642358902693813643327079291065286897424531421981557838704875880794996714110541272811555379367177884293668491749628216982104834529779001263281699339218380394155867576465475286647154765203394882989300685350373710972439206063418512722327304260707410516679704182324315888580688956901235660976625426390876308539993013928396837294926289357133612285830553581466131004434795104905331828809994303727324856834608025147551214133457055056501144186845344879283190878514622193124909392252901560372773857341581943337804334043658558830966652797989422944647815337369705292960904702643326213570854331564594913097769947518403386940298301168960252719441321605933995217170176371006990815041612611329040989834850635496857475570796741035196690869901991982303607723751253805454710578312184366369451583935758313512637785966007946688272310427711069900604636185799547437367299748692206675467083548838135627645959230556704241909053516893799994776731197173924845446976395015148250632558695592856544702994610512615853499350720159664685801166809107506497909719143246687089341964904388958686422375223897950895294017001195506870471518269704429504077878213995257932911592034783211787334160967200873338756643915032804642911791630736251634375839518120958786491582095592702240038550224231828117814676191873966454342938814812786704185737303145991571660896637766183415655277970769136077022056055559396510248648659223230997338677271978425510260362820151005731606850331141578392924413553854554205162477352375768629101666770593983082641589495660705302013978774293797387785384870468234919134235214438602944002981537733569978578752664138810300254926966300666597655040252900690756137435958564538060356697997456931664201742295725898076191235536675616839324989722458702870441252285224186125224580224498966586266838693734680289440480372465762309099902289513829357230974421389904868382128563641627726837484912224484834737297778685727090209888605336511003915315368568906779086998600093525618939364771977674975540655080144427389110365857632499024698576125017691266459339893654807315063395704010530867701923004007792105784583674514658710071178488846120215493031168518102377668242006967344024745567256384693191625122589705130779405618459785556027640749102015161147418023557731450902050164406850669168561486868980544333199274955517844643048656727851213076998521769678392235105128411972297929172069060873925962959846650620772145381391252884344924463086586217656160985989868534818520569446996183112429859013858528886111299309033195197988540258479741948411593749532405050003498511445079029757659293126328334658795754346721310503090797051290201104446924068707454729263644860170345220075567718071725229723337604256121229796992489712276460522287134974719613669938989107465593068990502842739323758027032882280310481059278614365395723444107944560682453852486283688051502676744143718465302239067702242157855756490218077774388448231486962232887095835430451698931158387233152714852195925765753962864848384553375742011513070321885749513821258749434099037415402378399954579576124838574715557794995153931683501853692108378701358034183551919686251287271952837431454485765961414348190341968912861292222967072053451133612222818247189836197845520996814046665577647941579199579463275540748827253708237753274047001118086291471842577248355783145259398732157047005697580309795691950836709382871312856899474891743175619505619834413069231581991782707439441251161421559775461131550147337589625454240340992764438090059835556687547739959587210119599830218176820074665033251808734692218537779067003293270438335190364142991586156143829528273029385369943366511768686560715169621259917565268160034277440552927540353813506210673637403911605775195902084483785907420288424195505893415947937285086912269563814690896534261784995753897380216529851083519404007793839824593373103572222558725514461534039514898021378773316791610927465207438458687883081498243990003961899058999259723572681567924083677226310623496198573116687549077658776061183994609463144413803631874111951690164363973202923684774168868680501659036804338257386548594672080635369682975517809199412684330636809255445393327110409204413836393420560040353344902584917319816134378511871782788699195747116277768003168237089005286380524435397005159049462826784841509243049878331274859094040950720497857869835744368488510122166292027182374487910401455951278762101607439175635266578131935074534109401016311288434132143403504129473335413174383884351565628226047612304449405090748738237753657854651340524745767378235676706566969636401290799252465216782132754291769718407008113980294674346395363112928931893821526258090370290955666249216186763589539807433823081113239453357486432396762774040792207635487209724107059847298153213012448710756011494499609894726108966238960176269233978461006027323747351123918345292962387553807514993807216739533967102795854782577482797150771635487176992885602730561185000972798641798555407349731789521785533060992085694623677340487251825237615880675469603904683219133640011306866754063228320091295931395576720887404765379726655301391621736910582564175647469050199224647089993200112529362296886704008743365892869352003129573936782853249532907313931297700478042211671609043111234051299350691506540597516909808412055253107885071674640946730567988397379402701150081439214994988824539667019165602129517841320073882252497346991210439997486843428684556945571293962642332563326290465375414179504780470519902874282168820169971496647691043021333598767285841415143577908541898432995439456387363890297029428291814903347173000168492986778248031579801724974676381867629555573367707971288513626002000370406280685877050047304352598135897439196545627143907487162846829016807898634863904085647356952617845388739895057814237499774804885872751150030721487448481784204950994603445512985636170832806700690090932114316774168844425592649473478082649461883763628314992787361940368824003052336325201346315108751399316280597695617355051374107805637260134600519610313176786402986134792589680549081022679002031101321198353024762634236053803504751648105052202967669070099250421749529359645162985090165097401543321302963761574795965714598592520813809710567336482327870701316331516284369334672010361530462253763120765708310478881768416739725478501025421058730127398932550052866187830787001175150210889864251951506086026751838547895515289185534773896941246795458649134526976911410126119591169631857297690731660056393248239878217636950988035581465880130787024788944855542210106466513066614349008275578895797673611587060243154047032734836831764722911243615800494859115012913346791311088950133966975972389234381984844561298203540734590945253172049774188068494065118517569362905527148887092671807772903422406127520501625256721208968320669590762495601849348195887766437862848832546921955724428887007726961689903439255217141097154385477560961045717363928477497184541034603957046329711971165557008918500859459181357939375099254521994772702313395886626328578810756517320836096788291185747415888964512133205539289841574312675498055079653272056660738354332348958963136596981485355386033186253787264285098798694477667352597173798405360836196032972991080669781224420167459795574776978466404781859685250122233672433377062460718369600371368985875871689546711170503793608624671823561955237879202473031817029714208817814377015453854289147585422327853483834014441097602853796477433865629428052868661382897785986662566415655051864345017424412792450580551758826538562627005719180536423517541770096224803702577118496217648938200253545006384654685756017173036612307425496585612882822153044730782154797396390010851584221609396188689231530099661472994578957477946047798467662462180873118922525231659078254609488454910071760494731397238080334253568713988540768678194029141392249575849709458952519738496562931510392445916210647428761727678359883061491783473452704359612654120010450295475283682127203990978093116666141985625675623396164116830369872727549994452209875740271391142810372357159306211444941037466683301157041303753007186446770570803725575225421792135561719546169284797272962815418778174543436739966194242805491024494473320893516888153970582189945786439157898216018800570973801688278660586760175313446435718394939481887550788652168558955259596151148760974410102675091440640111189568547765188128904414402642310349421845372562280254094497574434242319792812069837959157464802106044306832770083895303685620402185327698108134348119392658359319818982306093752101616177261874060668016079190257212493345842726144813429220509815403514751908796821556305028690964926671272966842656800127447572493084226585988134470608355334093155356365764783850542309125580182671773960069315297332299338670884886777480962724395484954399578473638576691344153309641398933283545175098201871479946676864773181930895376810642294525996548601934630735219724855170866461280105305636338102081027634519486263398732467263338254198369386108657047828671263262165732177570915749880849547002557516411132731281806888020295810421577498839633222864712351241787722936049561633541237333164672103007123329897046354648434949415122036345588910248748382584906074583679163306795436616197451127862880368065542698838633281036245054071491551892445551590401750733288767663119117033501497015267993700109928061883860922420448794798269304678761324244063025335267515626072054686897150568814363785657275015601400397841088576084977382423962232410326612276890454923315655521206574549094358726022451678912850268355551796221166491204502905746006445497511898419006203534986921978159638768560339032547594014260095533699906208170741744601924983682193036880640042452276001831115751200814528001676740102885736831640257855545644532756146431289740919808520234486360892566475885407800400827754152880617258062539134883293063647945992036921157247709849784699781952050613295631810990875189666544833372945326622135689695421510785130440638402143452168894931613604078879215163196275381434795546494439594542552867177019110243131941474629084762329595745689163709044270593619214765617609504556842354536860929381370099328403783966698904419507036905603544100921423289749756781778376783630432430399463103749453976421548244040276057586748778646716508536837334619831844824221961865414875901760255349283564923116749014274617633599002657053517635798677486579961665720678054348771432142783493587099177404476136941115726643540449415824505200784477614880865445030424450640740803048502942174451948994913641591446017308724143869259171777863512297516698621375956354184425890694971364106966931690527613462751115407423899107316726027131174596381552067172774588566800131264758790138137220514309375584410128911767354909608639192394720448667909975656269545763828855230719165309328886395000335517735647802606952729161698298753490831528288420632558479146304841361656678966931375877131872139876181347999304783457976260035093788545988205103157779994351414262224259893162366699449662070659942637417219612528661925486453925147812615603948438367973890266878127844702954312984715168004131000321958429227585766910945618317367186662414232371592238852205330396689754000817306733811682427271567076248481848848890026564934944306776687853837275681184639350031775406597310276511466684749197241394008812283828615639289889304104702173146396927915275547007363404624620185895191367462543289485699898779641749838879757555328769120031861918954706291037848100503074778292870491501289810214398191522466472954062307837880974564852106068364072681229291681955701309867523927397512539089825344136006726462168332193988765544194112394818783492848532754317071032440200109301477882041094038195121585548177925299830726207969943663768645554658212886549947939159848775301368123093443537210652407739721642573624334622092537754415264612657146754446978173869725570900572221045976512627672553110760423205873331545563688300185208727860565721529861012424216741136648104079147476251590547564375831187509344958601235929645812193759678246343684619542096588783485293288955441403520761875621875268866317060587540177539912881410114466570634856357158602030170877330453240248112042220436391723206469224688741199163812068245048930852036767938218051766908178787076953490441340975563686332454354973316977228862678746166523965316380058114396128435971597435122255437459365613763003964028606237673947617882332097880541418672288261951346553445944472576203799212606513562742994200146955271101431060783608086355714385055237482298902951991713287875516928250955488607819377286972584925207497073710228223339759790740512860361474287896908802784088748494779736135921991954222283067518463773242777530788661784312352706898383307878367137845020189269843431912778425099381713972229631369108371493277815525184650663566471473014408652853411885254199082850262522652896052936708771900985952082522210502938053081703761991169427973301632712030792199108115601756883331417663979466075747424712351885262959340470087844072278594918214771868276896078293108525897881881481125916761628426147888559819644879126698370961214015651044499332261164956664016904385793456136615737640257327234648151223340136032358717771893563592619634419132886767695635289758249622424512625392588426040003528085779197807141405871610962417987747584275643884277393509796639029456024110285368567434457792307686105753963756940321085480728037673850890149062273565678019618582578525040990687793300913936367652315841737431258297406028276350153321068326596610427390202062830090922926256150893371570637310496893257816450887236502094692928535003249825977592398808864369875389796409175027568211248798822433673489429315301649399708472176131731037713984171316507101532378171497127861189731708082803693860522253749717681149774165258307130118928476600923353739466416658761452088445106560702375428837772733894443018313158518589465297940959637102021488361177627340571759909552714944249055009305576898310578923638722016797169581858673952930904402814926741252362950033005425653191823039039059120389572191678632423791791722855269601747136002617622350547148593030026270179486239308000447271140340343615991367731221130827718057051815135459830215057775081103042734507159789129910007968039640251060805871345169590394582287284133298751564708420324636445352741686048610893791648928697011249703745765086048848145543588926777021446051294582135963267271188454180485053386514831100827614382702263551093668253381519510400791914301462666727773847354080563811361800975587508588349704272062904576633907069187895626713146951000587926326867272276087402515814995459219890133351967705643654657088425825154353634384905152183261214739025748742131353304772864993407835595164758434511122453168795620048056390585966655949339631512493349805429142117019413764158491855353540014208433855791009581003872890628149972372787470034320183648486051121763598961196115962196203049761885126267047710922922567214034889568994343667856795398403764568506376165297770306696444645339952311211165308508389168127288898677441644431154077013889289975604252962416646020656967479399460758467035069398067512999341463184867874124594064305560937026330203522662352692014504417767634800702824692200997863276098278943609353371172538638609465189371096846494168730268387153326983951966716017532084809255715613739842196823960167491684819642764947535147067961582735392609983549687215211028807193152894195154591911719556776620372472248281753299760462792857372369237418711098612202031973967278756011303108126591020745463765461133684945952412823688712658011119215815116791068627121310291362878289891603334895922579639256815608471922243567347462182419743941418055404095268378819636643326373206474057564441449188951751176354671564373300354778634779606143024173171538664654099875246932235029854569908241563742715088132305780388443735484291744317140909726228249380419219833095432206447468963413672417770292657986873944882034656039885271630525593978811041905882357145075621711134349679015905155786847618163769740473503031564381651843946284834933088036062182852387955129730719787531707734388269665078933006508718315723859027521192317304634723501696740052419601424355901879649184327902992626121661880100455483441607660461572796691325890698431131513207286363896441190722200624561698068220207714195226731399723948839640909488406379591424659205967760070042736548601485695437290538341572314715164503960603367374416934955306228029856076928588542109067813738351130462891826935857839509573137265479050562532680467674462686411728741894182765000549701235237692514767823256205476134185877983347310600794346050034175224075221993655305757913627209555988650995788565186843031842692377647127018513632784213251341447712126430730000505509257807939996022527202400936302407369611660611153704350066263862008084149082113522635397879427041005445500736869484780856117419289286020918549118163771993912936624530242604011172854732856199524493103323965286074363632798830702639563245707632794936937276430342674293937849789775310465581372962310258137788685250892292203664640810915904744071907929356838242743056451212286791407502385147189701299627611812531280320667633421650618951949043324801895038031766132529817892325551490394138055125850135478442005955456873019137058894088984442093367438503846510464721515882003135088324342368273700518820987084819353332871440013432056973243334076882415216082266097154746629417232631310777842702816052236134395619903789531045817023102385852405470740055380304302816710633367486141730742613469472771526739850199991179025774538039011496725231937935235944095632789506253012557327913386408480126478581050410672859020904018180030494772810677344187057035977056624475668660438483838488588640771522914790541499911899754213799982054231055287732483354720526072911505180587128490867174026438936665899077632182587103924582561630236254873717336332584479294665678771455083696626755144428197369478887829163318741882595884218283822266347012429933758420951688543637676504594651185502631628289205400925790939492891902472934732120116435679041194946634451126907044567624637535228388940815188528449612479786518437315171427774892248656355984345088655495239483177449511619896258441967531552689093337391568167866871475678515434544670668497953065370015938165610203333139505882563747708712940922818442406349506571285000836709461680615323502626152224434331280862571948594660307155460433103537776918472881857929949900407825961936079201858120494676985861463736964724377195057017605452354972785958920816223756264744539055534370005586078754478505068892902425961640423420990641898553989681425209980722367478960164517146157453099860252499273368945863056601399796930916689577131043888664018886343259085153856915400557810829312276466245076179537778275339472658986600357265295446948919321142144991405495289492197446875232371978644817537869157954530396562411093271515826369914080444545481383230856952648370888528544871656357331700162192842548033004951902569345857915234008984529469407220338810960137882758077248460604233330663189422591460764774247392238480720792965793976441698051422115461229607272676737303113987511293077992777218252656681402775682246861884530645086520966697640682915005151754461770165619468676823313169033930497938800614207110067372282238643369422246323984992475246364342307985408400164475422363733518409864783623806446482610388977047583272409546263884942575393136608253992998503616888670137468195242465376202679498200866264208738459044948539958662492955623491372960786125023840797280358045947010359523113183481019100949845365707450368843951725377816887059535002259825276711935520078338418891483549932278364522849139046368841020361034588382286229472871410900001043986061142963257763041951305502060861037014196155495397173587144860161549726345658583811198150075947561191774819968202172657181708387706799340924742281084509980938523316331863415650138459782448027608036577149127465624159160413347982764271834657616999845389964783047292050510172471392650501068580212571945457548927314512452732918441546887929317632385014852632671703070108098446541699895707352921548326472423213905055272171816282325326186325494804640056130219909849968129239071924987057866089804275953106837020454487799533647437773126335571721007714448364101930904475863751788587510827705032881103699620490579278011060075201072997467410082755717993714093506004313427345527805796176468802715336324664090438696878269439314520317410756935454303691453975539950572893899011466888851539627412212411632773236073608269673966500091149849910969332801502317061729825519547779475141783517038215023510752164206780146020777770885004121655289983245469561664164627269697402054829689176540188342776981074099345879259730568712733569878020446406757785903601061334794814084281768876114519708991825266646253016115439319701666810955297571002740969168559944098323298146651322796474855562343745712818352461539553655988426001851086013388985488213621612253089924879885608873513599851385225465466916001951629010563096492609509684660795053162108094992306358947186776159123054247589665537541706736160322953682247033728700633473330580106732276296336722227571446262893335695358233846444544527691416326987309618536451876654211114645402819408516580149025104930750268616789844240788280880443465774563713649475499753531482376228529534396513442022402628088009495574506494711412386148874678454944966197019439804263727583030959052080375405087342991615792042070706242840188883996716931217346247801182332753755343114635188185911670089618729603955727788523415386114728929537422729093865705722485613329011187594102043847284545302262821405144400496730796237203429937781302785213622725903518463752775425159767512162464644937898896215295998201951435862834206578387607233350246709797808327860241463482804120529392328873310222184287117274808242886815573126558585137722827319297203813877599558375815585663252223206918695636644577028675156232303124922760874808105228288704185542637218249070356227542213943419791734545656305040201821853864046890281655865776279816304568576600629995188933494077977386673089066463537801897267647164361875793915331167786350216510927852434781092417462931951987389764015401890393307757366764738290897939482806598256859184909338424214632933941830822209635787727646856656305899737571785964952359134198232517322798836098445983692835150322063678146696408018658729239826738375149194117333126035712065799742529430292333549612989530518867593639058838170953474919769147200972219173198134415793108970263965408534596566014119559287126558416996720677359985262591170460483568766093898201018645030544519079461194817643154344391430510256403516923218846984648811489539299132945407366289533375483553977015948580291330104567239782567417714068493416508043939807396121459321559380884533958988304252007927806069800334361986869144844973502879951762195510572711130103053585669806112960588544806303870056753202948956520626646478137279130511838859332149636268765340504403092227939658366873540115255968570465955047277602681485009556547448954041728785714094095182998758877852023810053075257691310604727282243902158392992134654939723934120484159660051668564498170848237749872370322576320743990725381593002336599916645168981098947312306023408050344047159481029796610534833744398898647574241115365567968407265741655300887432829394377939439196596422560677146402895399354629627320166808845157023618272208734564458334669319976630364473768428252095058564679859485744536770826950267952047100598102619752098594540514500992873564220420152055657974875335957113906380129952001887889736303441296203434507073381331567058473199536767784096333547305300121673352397909735433513630567198227745894691928240538514341251896438502788829018427752967093955573379393462411028151298639675202711019351830012368557013045413319267668763518767704683643942499520686215712638327729982994461885951063134808525453981797014887207024481355345611593880402013128765509893499517881094467942878154442497165716572261333354189184111672581178470399494105479428306465317533531366320773695802704136700474255504847078178028766990258761841955484824677573236720495355644770233213089610240374924033216474851961549223369570492627656117983495068460678512677535077381530127949382888727749323058037446969518964644990007137787011509838471689046407618521556399709292740232998701962630553473203608927140500839183040906745699208040591400493013122491217481020538146515854746541994921275871055441582946377018610621830787718032389009326495030371106506343314574348518353940451881983853818778373031331320298229940777569218219826966324504124619402664955551842794214477654299285222942973911687248325664692109276089555578531875952876390190727195704695318403483386712143567058624363068417308632163665515974744795058052933559188460838315492596535618333252864698941602259493151075847554473057453087532025714368847543102512481722717016848908186253371916484613155974086208739485143586087711276493369318899856337456483028127261753548660241418679965503063996833218163893984697821433516880926052418772100825318626443865691382119783048481285424200679554164982683147080313690454113454149702815944655349161451523078405629138473520557628758338333108678983207840024010617111337076186794096909819881300203116356181256535647504448603165225242831045342251569739675026897231965993600713349690550181244823869245703700714171571256006599252941320707484123200832894538266416377698330648711312506181691838706187869981543106768979325725053351500361650061550225824440504636885468985183637648337050554965924414249886053820388811144932036878859358808465022188981672757262398816442806299756406618467460678516830452084496582809328361113319611305162945640419699606312631657094542711003248553252465346672737862229014334767235313777715254151170612698357868289137279639135456077768237071215432104556683579604597454671110848050350814440046039714226273535030616406135409983904584110997674895987965939259437465539323318767279161093818273886448479951903918583671606399198402038637583403169918124140046385827350398374463614852014434370008538038486850652779609816670099948962497395366665541966634543131632659238906050734843987586942543376953980869960713827600005757445144509831266582492506184440109964120109961326600543343200846312221954412409126875238412642391611096434944281015035567198289844888199555717945290867437715606353717446385507502571866373234678156465913605589085704874100040932872362406685341730775540533154145224049883214866107296119693079021169400589614499279906897729964614973017301103338923203824798427030469881092153175826601429622167973506666164343374442324893756416978406186782025643518078429206546651316772877675628057677131287898778968408236344291172726908219761950989834104026166203383233822352107306613856397643069830862760117276328998096154799224324991489941336777737370868840429484099668839895376936580910664253245413623432524860786801288891002653333144492006695420610146760456642052582045645954226703252836323691996438809885601623842442581819415352124432355410877773010531435766245836134297945001043842839459955002542302893596572558314979798732497393822460656947268598507310303645731559916402575900230030057339664525660376137638344558655821141865068605669109877438532226844350343154307664092081343883254507016517669633869075067541429962357339411635064159599752704494146704302221476431687103275868929404054984823398140116473717009414266696252355604352725158654626214543924849522110791266606459292178381139816277028215229871599072299274034759843416527409184562942823653913599589285103832257529452039458332795512570160944227861109255712559176183251131471768210526835242410576713603718121392254861035415739758027524549010781710810010656789640610291730873366616860043455242514699284798948271842634834666888951749973340905514054555801845382647794285953224989160338358340559978135857268181925022128243230853244121226563242284005602380612423306697063621569005249249235813714690752680956839509070521890957186908206590388242879200891610479190609171918780631503335526506439366064689360544435211732039736167361806914634769267716086522564168087224630014080671763186824021322376438158486354218886847224169981826113758939032757799740930235116360631291864258601739852428822138125638038421963182664080099347852975823793829360744469085900833775698643001954481778904171161963060465005041452084488318990927859425492814058836035441373529692292034262144425675897571526562307955485113308512948620696321862612045487341795523129902942701768285802798085537533140045597188855426988319297604938177753832598351531622729288461005055453690699339444340062702750956943876164020408675072595080527726237579514188625530475736538251278749892885948472645491000116202619652686450301443631123706785930776872036113355177836170059490764730998127426617592206049213985316023228596525807191478501090894731838082439337778438617572132653808103252857004520630588465147975096615937935257768567809995868148787084823506192230668008091765313323750383395679973014711291909472396476050360484217696597444499089758948977103093343003710403956444760861463791623389945651551632443856050479135111040156242967545647896799289705733188021583068102343908197071898834085266650139887981977383198416808449785830352562973928017057248807965178545664552808121180219542653414236692576111317872128479749155788817075986385665287477403496509860111288363174008941544682282883572432955742076783918209817367080716821922892198994105195190094467712314239636244790596253965890152050475154376114499624161004171426856383309203081647580068064206321389530051902664097623583486085448525231454931469364745950542059479938967864344909108042593362405596016651946845948301001006229529575027823902079484290518893504577225439134399546124311788643230155852170671844786966420797144497453535663924463054299988291082653070414648098237249731384764598608491763796686562907441592787131840537267407158721508364996705103381370671453153672408408368591496547570908709035773078700503105721818004422421190165209877782567095987834070203868493164516773019183606049168105453033605126113289623852775779187930143523923902997830640316656290345202930183566215102641237955446928455623568053533547560018848070735512005786572367815520148583030262152414729084162299396774507781861241064271669069404467902548998512106020018230778006506390802220738649013410434884732475510541821629040391747641452421042498286976609531708860932916195134894482025795366606679827790846433608847351500213341344628973743658899431387984630361382875378637781605120810943743962622133818839831958115552960484163855902320518130123406356209336734179713958452946920678050449859249442904806844751631499404892076699768217105095569839031301148478457636904986698980306226554075447033892191389956053331154351230211062692578619632746949183359186815423656403696278772470959184017995399039550776822250094421546252289068442438664022442236629097784163134407417872654560728796826267607034251172633322296231713303343365123167689696397680079475234350916671082748824793761594692981093367932932063492675342089273986766182210025651482401170817975520469579718088554321314085948755662054701400955323818669886889965752233907190857914359810195517703230104622399887072174358338626501695432856113490729101844061023004742614495095870976122686269988168972222508078229009520898759894017635535307965819018275935905411021683687749982491376133693478785902478995912805223306222385085830012098731834298232255754521362681519874726807055421913028349316492888580135571405325393128215148321833322004390087075029105827467814264088175841440167242365540503167166624974632017803195770354924982876624209365086347120297736253074221708470338308476414273386775278704768583801873652735306799333545432638269883831298101391833536840869141005205732493795433641734350611474275338636857895228727193314152450755085007102535508622052213930435459918614601186572866444037161010182626087934880806417455317810131344376344221075253015175534031151610355398627902547156739333401112039459533905557787323422797941401846202277127175222344665101910400448827571181287876747171732007063031319737579282821673600645606859088464215087974538633911865560933184367064717771052888552024223348358646881786700837968105721835732108382322488698063963909801908126389890488769454501115051679983750033919527130545457850340729693562588850410247535778064233667611435764804566947017245688230914616999522698834524938540798934169115437677583070741973004408741428504118294595799187938176749527906921005379646051112501191593694603022345145086134973458159022150283233453597320787624002589357430664306621757160297463898071909460120461127112099682061323625128254179491716855651116109366682283264174718546573513276569436161691735474523593297071521224087378560377129242162800793534688341183245363112828350369797460394289064464731934946446089603315842094745027280341589430300865419218931153148575832827896469742666535027118174177642828615102131075141599639025512325933627944901082211388493048218354381949799454103011350168824628345802924163527230934950057754503226413480869922073297467059430050953102766723842815419478313727387594891178607647328119692602570712279531328601855753369338085960051134418515622197291188885794514039082622615950893463495724991183440075141783093396303035405702869308711951644861781173301264674704560021461253397060847944680109286041911156037661047363032193886810795478431959953507992132947871983473022432110435266538064230383930111193218961926461037764458898274161754800611560984263885573860914961168476101340328955807426949718873227800119114712233216725405447555007504257783590107188124157558078879921678443321130907480781061759752087612111111595059355264008182696597708696483519169940663898650797018617162489108180101854570644897637556425293063205409682514354799325244565859577570691556330194761518791225441449965890425106729873594255593612955871629228880905574044066203843566061181244595867443227306631804101873935681004416491702931153966396354844049953337055135326527377745356910426573437356381782405990274083913902095046807968351782342993898683918083741858351020419676644539910639978130808548291423196203329027250625262438931634827733774310494180865118193105273327503806527985521907948969339588428060434578662903522104412902875133519820436963483499706478864096456884032120264471638073201425451568620708640069409476103446685461175286288726448008047252498465731334877922471983795399377004936569872471172572284570906864119775237566346097952739398346326913492227242494473036868243693055650473371285840871619706145894147943644394838996928304162829869711479022747762435873238275889119975273452395471766524860947982295046976167119572810808384464848968087839666998299690388131621204641345284456878522240906638310288279657267637663477691407988144376414459504801282703560441838335751279077043470475909622943355601841833441934843209479439809178044329777696924633592379900359906492626636150289366723136048026461710361933636777805240133614637972487561410020732920756812622852458872761087299419675675901596001551207571989731094365914599825358700252624714887216030114732493291999281048048408870715440278600458158323517744315452904999839826889474565134992903956554710462630699582745825958471460188419512808554123378596922510721284364586942497157386090363114333571484471292942150657485711520754233118888396400369632502305528197673667493092511241093574190223560405886391414464188381099244367828477700747324510910691479544997705760843361445610096749324316543076132466232797202035346604957282758852189089534564493255354576641826315172728774034421340512397205789779254239306080476260304304416294220761875545045721730634799367436404880132763639261484600146725953076828942996653948951824589283532812104829240200560073650394435498588074499768548623876459781043397347616814503317392440393219052774708734211889311089733818407259508298764339018120955657380504917392509383624261820057892407721199820647184419213782325277946209175022152625622286573913718888607645309643189741166034175299745706068983339425185066266676400643887488403149355196588947477617807832567478370145474588416445320986644703714662626678802067105202551916982413042674628984176632802498458783969046531519492136317519663307639220584529014033718418653927219360968015467500311466443189540710358882997251981944541046790337619217950998252960283230949088825807847750550988976595759487468548155480981886615390309644212655657402524630807937181190547725669785275920978663376970207896253899920788763375579023915097336200717421200495100641503258204323048998972140592969378338863300529829714440510904612441244610670297693274075427450801203267439557044445869355799723946635394095622609192606452785094116472058539974239081798013467719503675056607362994040904029331034250427268727788374259884562157132856517171911946317156307739169369163619497578935439298812570042730463072903047014354457849769333133734469505919864415262190667661474292337227371701378710343912241569267429549662926844355802966328786356339134315822053506760287748827001032968521320425958836483759971370619251148376019796615399187522478931626333822814793425809317907522292134758270858347232046530054913993996098086042772016795583772416681120301753727277908062375809892990110359895895900077121944756870363571034834041448845422309363309167891941591196707848406913449345778920160206644185117812925591549219303669598118097360557486600490725415822826084558141259687077536394957984162675289552845763679670003667124205873790943624357900274191624646009333970260580684475683864136636433696219438928464976494684920008360078683213090933011735112755225430124614753715555381291698093926014162040441124981248479758617768648146520934115000136167592327790603650467154216387811959864265536349769309569974352751192434529081398900744534140815849578752914489522324988870214098407139610965823091852877422963795327243596395534925018481313250659855307711006711667439596025020803523126901615797882030948093424014248648656699141761053334796423601772389747253842211438752345154533518495037486771659854621331046014452130656315105304591045279364372551555174573113736530941562065542806685931200776198793345713165343961222147787174350076215336968355082581259276503360385178506403423003335087102312677294737031153555468191766517198894687146905948925278078596171534765424686425442432158036554282428666968171599405838131115225185881729702104396062006279461622837117989810889959973303004339977129066030251681415954710122525707267202313110354466902493780635459693379810153000297649493683508190150266362628440385478614737685969196057139113015666006465559241665234452153894275220460049356613250144462626267634055089293505602669527293971574392092216369270278911280280723596096044359071652750117350222984648752697470962275820349002862653027216504143123854655776036871687409775700260664735650513790161063100391414749348667405015031248292892034050818231125186112599637582866427360261359675346647772756385969184065075051330676564764821000780217956059372488092230040788942714293177272752512430328851933988012510955615069296604080360079955322730820633630032867056408999444741905887982902774939921953727326108527753673691280597540474257666739565199397618740451605060951651558118900267308037930778552098600343257772117929264906273297416418703123203207953977544211613411519221609038275577996943565168448027987138362237982400346289366641777988838777121573088213546733421299320229992535834277102120030998892952866034155190670617932442898242076991684515086389140046863023630597614190888831831234860451744722097161144372852271805072835809313605676391365159459038928549334404736017777471202482642272715750176951660919410986203794982427215514190099853467499661101301365430809494119720188066307377318960866621319757302028785250858177389142597364805937587670027555466932343676968327613296959350071460437122108965849800667751129260394039161271799693326680556763106622728847180436767315621805871087287855103685924845794159963095162544518524179380495026247516028116131263635060941879533083220872252806015200453164902372843706537296134352964272591701896655327168053302879488131132956759923200139541205483951098880793141666534123172610023604712888200130118945620921678355568040740153314451555804595645452676050249333288505536359070388157937644130223282306363506254428169187732931518103228963873365758481498817955665742783919380998831972433348646843325052213016485289873336810415488736134283445685269192714956276679191027035848320016737709776942318719062878453014771336186665121176823870696669413904038054497197550527512285796244502451656007876511751402555937804563944532785432251198013689231265900387478357844843946941895149035289084006926082984753716530965761524036786092759532471410459957525045216683778092756766695012997708174912834908055541139909687740339180864362746180760772139451088655723338650301863397918123473334315088303592984030169785764075668446229295754504244578625426586151851901104787561704468164802431195742090099303814901601786730925988217315800329443791038499975529980933602898787723847970172111741929303079999457401014580339656311243803071625232299457749480528974505907162830873556848138041322986406991390676976347916485051107622496452121510000336123898696304045455627785349560415058139727666881423023957353075194894265496079677770624075001645353570341977901018190735065927789210403574266461906533702773541247932927386977891317379660296915489379699852596548500722827633363038967205905537608326392921199466621891066824335392347302006534745897736572307167875682511373059524678446959939145922795455644543232577424031872993987122696829204876431334032405401627220689030353123449172079928449002958822352978996779611792763382089531536760828043247479494916833901664787297043597109979026749751330651334734089493974468593990330026361355658099268200605988393412615315080067990955221488073264518633544452447586898520956621063069530253436915189428496499279297599982852899305180706865636511795763892906904542696242846129485749853563258787168996166522855281064974437118254690677061720204439420312540822397801860297144333166669614487063847689820958641347632092705403999073700686852391847174381076240852076722146594375233373308387567076185029524850908943285876194340160199431842637513514175722485044645506643337578026592069915304488582658836031481264236021372431741323728249613170026262975259727586047749712446198105234975754404798207015685292030245730158006588361393653928545481816044896927928842381588049624691907511982188209359308656057855187843401576015672143733797943728082664999259596316608884942460803781227096072056128546630535190130562974638117214103899780550825372511881759787983338478643374668517377557720205941182060002250176666562815485180008876905413430315876175184049601395727988478368631802081493471774642081573829572776091365758198119866789325263563164000300876908076913394559592966106279262198676525681869885513696081754248538627584512630532041708221285930673230709539933292008754216627400253475519842819348043024901372121954042538651845042509108682599560324000453894651957457087023458177931476907005090261454650391290851243735295664110606583432793639913101175741327128288072254617713988992779414257620677256618324166913364664032792391806299540563176429166849826884011834713286425176154906571590524880023110883986362963367571124777053059094983205717996414039088461354203234182721972461925966075193916672527715266683465512630047268411674236730324457702741734757014537999197239010379508214440063002317983745648305375586820371056984940205386605932160295142171033140962070313178644049700375701616703311350216001330260062933236496247504379309041485627805507152771337839046520162488723675791552919764974956370750642424890712253397625362479345025572981970596608942443118486951416238467561010838775092078668391429460488664212061526633388731693425027393890448654531572712565687640226033418834236830425857586951473915989291405725064990611287881824393057501314460631276551825019563742139038002463323436243667911491476742262373853098837712701906270711011296219019874863988599990466126021707990338560729661290395843234229270206652388316550083804645816333887262672327933308687601162859711446662484793632060817491174942823318045832117497024553766775739427722925479999465982087245540752451357077209617160913260429396298314263690339071251299412306476986111674951900954039780919086933333022043369270635338784071232658676749896987217948812520654263208596760501958127907630817658695109602199047177743651282267309971491636247081227876259409466222155085220928550896030177358554835531558847835775914655119317329123379608258905299854098883490578445730289562289883216153206667017680033412228721293497008788322476468866670192766580904825809055374324893858775537954958334362321822179863056661097571593838118536327117853699259876393178754575620880272169783622101381536118764323658515478501679609698816595141378896019777181199319463602226514000975116584435980963279182110178832449774379929506259538675421037122745632998917423032981734868898928186588706385881408997081429970456987595652299003805881353438268204974038338414297366073679581363827784635397047064763399175137864852424553526706315178098347525774357605684636225364328316144098734334074410072806210716886602852092444781181554737136551103427982211100006273903011265167860171105750098756393381507198325976416337794670300645368198268842264337790764509051441658644540444845530018695673105740358758766344223938727929821505341725922546656232800412322397246293987871668648150053979944508075816935305183504338450766777913523933675047110227652348793116021453762792034425570088932446513515397309637759316837959851524498417530214282048872778755792921621295818960721143317481493233266300306942542826428319146405512406387128199422124935423506675066126958028687157661710829499737641581111782954561863735499112734115807862736033729547210284789877937738023907440319351227702584048780855308811675549392533185684705942060205033219268659104553743536883696853051172186900955464353099360287393763471124880913817642498620430254544435626750448532624750821146498615911977807712252025613079810955165702702688851554336979467277251462868965830771723867348705593008895680299718726151661758781199530435325825910413923075015682953082446024818120203157122083204072751076528454716131462724127632031740802242833660081513928898468631279334133694117039542145985509937175998714480800041714241634506261323607194820412864466769468851852087975196676562762150819908943910592872793954092948593117172449223826610772024497787264607548450687102111126055194337037988380720345051234635750959997290498698161361045318770833470651720028797018168683722224130050184806944870742221147678958172202824366605837350943381987988074853295612042860783910624248278886576256417422332234153525721836522449525251674246762248065382611865857289688836952022126948557140226524015605934874994855456574048538791330666056042199227575878186426801160652244635483781644937567051849934779202598587501875205647690254665431009153667160707677060013814580312278854345458841240022701868562303125862408557071934090582181093003920566106646667073037769112822549538831295457603680268605200841880461404997426284753604144522131299512993402892474147264964308161060985918723120329377532665973487211580032309981056692174745447430650132618388181702231889629088338203365768774102643438895814817355097324635394342232405990615408304292816096288658592745297050503882525595328052289001856427972648689212996105964095506158294989356369925446746694581411639356421925493951308323714234313460743992964885311582434642894972088393696303134460322665880391522843090647664640234294017031474454587493605861538382041290046740533526648393838098467795161965085781861448115351776604219766765392186177068750786289443976988201398701789638740347859250081709961574526404219943033137049146925548888424305703361313605364445080312367533353803195902122963383156282386159975338174337464518510482270697214655937202626586515597326054731087577246741779470660685047279153918267096881742656933271986063956515126086023887279845544743412741070970953756689741136125918807667027143958371309161419898480526299410559288956405946522738885183544543834384526557764981718791268604736081783878796249526886117902226203703193534539870712384016716501668446019244159901187195657042368832789197665177767522597452492496703746561752404867287692182612157483304681523223744259808970992976940936394755431720084814882798645631712446350310809451073250603937545919476705662913690572882645701892164484324435543010825861439395278222627456248983383019702684745316003022650049439222203998277318149465520788758654684670355562530766716832071852702596054380339129885895587898596393553215227754597984918847667354262695071659868243312442655411558042889272960439257801039671596340486209020005917585310822006459850837246440305465420448615864229186636407550169786104678140552094979595692424093947122842893664157776621004140431114315523365881486602116336411766694573598638364480433771253168705335729700539939725112058708187490780045624974517287181940064266250065525191309218486047531186704631365098742421999155350445087051402041897140711865048766171736848632125907358617329942672884425990451678931446800114499788536381594806820179873821185584962563436015682948155157320463532266420616224271636761142973535791529955133887218316409860665314382206494249082950530995144765271789516777203576712725648743549911321166649647703638629059305505635968997876267092001541870872902036522301906931105547175986962515419449405728726090085233445006684951498585050483544344706331806312134795308074574960442804955562867450410425330618630483066793844774053434386306844574431268400653397332404932780159491786635342254857128929186265767227792018420778422776111471819980690727985250712041828982109870649007924329055172295439362789235399616696215513075632029380619184879896557790430485577382836849489456015877735760821278955582091428751855023032433613624258101702686482112059083598522643794663855827438196808121204051503748207743391306188993430341285703192093015590364927632327045907890380995674334736973350803135032128200104532315625629370190343288391410878942376177402551999055048787250628630386661736888330543878437653586051791134926194244793378613431889601816032840720314214934147742985240596765804538870268513541306493273560448079870194292365391690824455849254828814784498413360899476927963757192731498160079749536965877757303077688934197814664056267508370135077294268993671340928263572630074596895764934511632114981935443924915754720708716401303938911077351826165723797702922874078932148015655242426524771530469949576724276551970832595632960041667094799640306712172347575440537755185821786769616376649389122426223074766971893285213330405443528539672275851036214333258248117832921073221842700730761294709865171248045927925002176264117146977346338441290912642156939033444048394509092802629710553565726742192881212226373074630106119363320017478066694510063939519530115261627587241065301317232685226998733020019604323773029012705669667111610611584278931195713558279403085709207130939957147784352846274620866476495013903525957794041596664808428639804339957595118654671042814956536034707782055005376004517466090948238777880003208426170872585648838717289500985515956783161181726593609716258770114156280435601542062047647240119360964756057604999870456402396311251212697665967836410625293599661724432634521750854015086252333511066071850775266847693858330074612291407115470831608385827097629128073382118565594636626879549677215338602481174907812393747354790959201762353401581778814400161155230695914961129423155803103634465895920505869478895253109373672541138485576583017507005598309975987902794170225827843147358916262419033962947045967924738620071241375009539058966502793705915500404144900714806710590840002364238745856713731106846251173492329939730986492679373702970284168927699144310470313050107367825382536475943777844314559725217850703710203240188968157412544453657676877681836897529881347885782229751626208425427228205114871309952660514209867995454779311897145194836728432704771200961018895165951409726907726229391193941121854374177466957692273176154670326400130288042767019969828492095259246185950913429777590980374109906538231957366643381683206018931945436907657901616088822335517205544107418839157096120838941961981890087794503906747061383883335328873076015978720220116610636645370124303153676690955827282559267133394187940374062195389726580273362260423569996733263977156937684430986547269182015179873933887911374707504432351345412343433801610902184440218468927832438752692855409324897141134694408758916163857250079455573167293866986789993616370018727000009345026253133554394350886807293590737819423116006279666774855018256254040617263247845009698688669579763243002550210353498138436440903929679485122946021654156067958719145638072667445668034671499225952528591215746413226317220264037749829844946793953124598647113190624703234316605629921699223191240671122904528581406602133731364336364371457090298125108574845765433649365741700948373324696872213092054832280334670542017063464765541387520266000516882541666435366885143087222424262422260478898387908840329449411165293017695246678838967289054516341026748142109578572537432343932601015237124986429868932459101378333155530891255189455272150682179037954502707998135128256409677638816757637077657126540508640151949636124212562011223962727176585767964051113842390749853395197160501821091544408044180217744766627710781880522988309778078226849424585750453995734381907894109136336162709606778758114500035575894485985612963068816942844979560496225369417117325368608430257683199379027204392226363091161132441138987228035464915154777458200045544443825122505281995017319572197941231807045316577685128154830225061848770273087841732786493763529628134425353904281488678242423246311279805270336600605887853533416674491225305818000599858740268815258486651657747080126608155815391855439989217247164908181303912769703706742529899899804517926004186611124790092723511974547671187282804592424667411787547146120825985464364966735550469488087959789304193537838065891612581216693566951864460866283574409806513276041616818386718839573836748955168334059554864603633287150305823195261731678428327235356299932620463684367247355711452429629897983936980822865564429767387351184144042423380067770102163570357043577982820951077129390022207836444960970079688671678350242736594355943023325355426305237276564973330075584286695309839213966366299405119672234326848228812772935351178084220765384941086069517653410086587169597920567366963696204048591665045282246465045137553676936735741433085629210981230906994613858910275080115370692930157970910598593755669555967260517915132731257998832965410101001293227481776581898592158863932002929926531769934562646586859078992567818135985276248563482727340059246514750532778599486303005582769184995604219841307146692080439039955562296734947597515609072395486311748616861676746722861663955996064167430473762029009879350523037233177230633354930305900187340731022038163230047471234230856427659490293128719718325661173066611641578392445605492085473845907461153534704369041582477904940052795953910126993382810725169905327430029822478442253043580874369917988443807568282962345560739336593697194586377687603064915891092435489778760367350981431674381184016632078033704659831493301982424878026040455548722987559707898839686855047447049590095220117002950882621300589443191840904581618504819907118717406714083595783563441351352228827452868611760487939630228904929624998030937636666947517832269429702326611808203185319269737852360924548064770649467563871019841237853735959485295035247640592718547150033167989458030674321511878014664194093914373396059141585331735728635740633182218387375055266997573384340424151740654815288384865513791183320517521339877019364994067385001862549252632915261891178560304093838978076311364752925601499865457710161185468553960661918970595446392791699369584698131901528240459711390540727120415591842195344079071845857689841573004679712070388905471988036152279727116073513228821959853070000986280203501566492517712845969189112203211676329031993239536138625158674934282877244510156905595862235479368525143793098901030218208257087271180533959834065838531086924770360520553405735435304858689205076348282137381767986134850615408907540416226312892553490692406013837513998826945856310991960960029460785050843401764651440234312800992330541697185291321122167678643456836583411018890322655806094776397682000001281982102298324970319277846052315136615322753049361582943383257306716079564921903297310371476407554975734596504387805654385996128671104365938991005794931387817887216742144229389609038056968423940344219971797602806974954715581754643783665115394552184618160022337601114739386192857339790619754134423489476567916575168829822309170263055097383843895646054387784132762749729632526933033335431951653743256637422231261615162696199210995444715987161167771518167919306086745938500479740709778677623530656703829378496280458718385225843031525310955072245669609170603848666795363319535033435170015117351509235388413003920494171412864064330998161454757569482621379218718554609863995414383172923596602995326068086552212353899964533135502731714346763213174671347099574846525731021463412560203525576024120903763358174315572433334106269933209082891648807827009689094110800051642371483896858584625515893109635645568620048227809356375387409925270120700893228783537108672204394798683700159313510614671982543845772636614711332143040806743023472679527687127870357729321535044739888604440760375952380261318894057881834488326255093582453057204455856405212881380466507620967806364341860590452270528074393391735326207966117035990231083218737218682118299726983869270222859997984445055004523129702840558092927940743319256753433834665014334587905663460689340113147300703513247926940234111001008009196945839563527389683657729601477239470594065463767243457875189777172363798887979407333959920824012853079500567380978713436390466107575808662044519103612840090625582579491125965747984395033923647892112646556581778187052815055507672963399155496370298634594380224737526771685463425902663229314166531884147106272185561206058974785903529127839335607733127962498155841587797382102105285449082565978141448042750797753892540993987555400175101781533805792736488654787624343532364406843116714640603846478744732058098022271607000072568256652936555849181152728606490321850496782370713489656257395658210569151785198095194577123156902065484719609746896055727651774334418848615783107424342554160732653874765364183509027845832684844382747684451749860727778718065446037616675317256568961390931406987687309853159743851893613240622935024689202054860552358911165061203092892326628892849730501816554778244785354542396231401948880556523981904971274313551411255365825048826673718523762690397013720688194783595313554782876139917771968200561098534087675668630309421068694581138242185257331965371039556291576986857681805084837345106077214426359568327810458130553630987585803696529041007643873288166448784266126020207758908827681840195318483482986711862532864938020125270802562389898544172898270324496696202459937563995778229597691679783040057707038200384242849882447058799094583116649216099470983684234403055887077194364000257976525676618297283308631811264373099397808110721165028845594385125900288207722321615616778076840456721541255720974290758878089807646138543403056299291296745661581269802675164065468089358351985341118906781598921261438312253990304588318029349988265513268925869243321891091440214878562734804434608273965815855908331270665825786579994264413503662288120480793424997759552994943445228163415556706591642766826631443657075876751223243671676472772629405764613101528198745370486361272088593233625056931058777316740482033615328196980488134779729125666154704654371148620685300282335982447300885781220551878320252178193472587684948278460185638197893344335553188904031650360968480464422851820193882230419999080206988035471049116673839754464422626807661865546407226989518782657106536624277839835856633094343336451662545903127054876782429542601844107774955633527482741934772891212003144052774822614814594496018977063958872755700357794779068127322427643365299568092438449541290008415254842991297060817923999199767249546755200371364884585817058214683301884176698597244608767524078526218225432147715967869627989757816522784900618393293089041790997600506574803307044543942528886509220104535492568036123213054239344479946566101742000748642496087860333681092734418162125430140551028227602781914455794606000369295963646229202313130126020862148429651445347743209297834478526140332235977702849731217183282241858723903405521606358147379728907980039272734538429968733080271186573097455714709248510132982568689775751307796834577613846380566103961597705399376068636291101045229358028394757043456240184872933280834321758299591319526736472744212563398333993261034101897208014791584913715503453818562586746872568532351767424911983210303256969126003035025519922165061548629334803171820524378200753681470065184212958200947271634850805282677699705925397189570793752114660180247654660177184355910814193395442058684371826255033610809366484025536558901958554509319037050571075179445828296600346245311033500812002082151488351164176710168403822311526666907865692359993122161992225420453792331942952111105330749818689313871336510227143343167805139021267082447835873170375719492632042393308000232036453245611013989751682963706686564361755331476281405910147123972512912098464364132569597083771472334947706479798631357733795492588684705238645612216239765924003621266778811526660532886616105223354909330066297980102616982207374616525451006043653515485255179715488656944611681655012292736042410075283257152217643770897406819661490477392627516170026545124533316734744979983691208988601851398622534881816349990186351479860446625976125070199007184007153638728690244381387227635959824073090489948554872428154358933666034388939751835428166406944350951334070733590471270105967655656020592904593649629559059400190576541170558042498196195743939695744378573620213772953130276430093787537389210845599796205245540269297054474155441061535730858943946236047610700688487176746303628842752068171236605524598996072796121227396267972959941874711208411514701852004012237824729090232362984265120992610157704032056021160900652812511811850717147790464404910917370807667831611914413653129092089833864825304838915381070803428055887599985285347116393230075257085393284334379927124720800810245208068421292141304782438089659122558066220031251021813231928759997665326624019825111095881240698445944785042967304594397872737711389950173631876660184210917949250523491643976132205422233752176794560942220192913257340646704453972340724445084425181590681242149561518573935908880056075216331482648205263927083509074471763110763081096905710462168955824868520169170715730245313012202368063460283354902641769950930995747325311057499944935755781218446106864882074817500236333800121795803186655666036338384688113100930791306437140027544050371650322516050514026326238533382905810043084461674631666825732275659942045537615056587430084598611264805097607651940544974762114880220597578456052917380443304920443140587990450778454622862766099439031291949387086200043992897459470179897438972948951397612843287786693894844942626901666635445214602304935557163150378823741942527929593706767435684399993053527486727775103718792695445939638261442473567276222022879153116467491324824853714027373004318888626693952942152718182125601834402637765507280893663167898714032746680679090872203579139027182836280199044563737174702301253273881703576915747260911041213499074162017981106950425237665248111034337766794148979656243248419597160251451161353244598870972232841641317357015911522823977963643286047557140731209674564370988830748707924494029086893918908967119177962052313780679922634658619179325027502098283268801080976490865823173213900092167566799821386137884800129791943188844995778615181974508212286928566095974335500558039930456145757562923745555221576131794116646656347466934004455222730839937627924141741795572063834670217825034689020962365339714401113714929136280623485339259879567912022224879586442801435365977948524701461066045683003212350401992556001765018331653733119167504454401424318038903112628681479031462608763503904821308272356962954717280766049010171974898616352725966426894229090843240669552727438284873533048909121348725791168496980549777304356917713476236659636550316410536711302616155942720457982155747680084298339298173507315475123633250524282137136293698746661522817132665408067548347548291020340122839617146150644247959256137931917127273118335048326898453449322060219300757673295246591868881566810117492778597442806847962191709628818276007740301440794153643159580599069850202285440279324412345756553673988211867703137983624876470105984789349800861570021338615810071563328950595853331411913896216075013028172291545592448784719448474006231168499809041535319001957943768163824807202427058511268625653236441086494373356136530455041355867491293690056537979105876144719635828803677515807730741763417226454781084832462550814935997988581478011181545543046816751685779682068384028955744217234033935461295125243361759781212744716315562073268538200238648792452464316769579006765495450963685646255889360017226366286761928046801680852684009660634426455343338147126786253532009108769202521733439998564264274200815509781445303402229983789817287789225188126526354048227491294921920574972953673392256005835380129528588093141658721001643267307639478049407318732308422439820330974854251179451903727176996125047478411917718794821802919455893375082400157837192360772076656548901951113244195586370971331756644460792042705555307535422085482213654584894772319753916126121638042324641269035493977723447190374576325082053417234850365146450217585627193066793006686503836372024748031124590487676179443438440556406351646571514609610467796584088349052768856783381224586928245241130679196037501815053769622079537327178850897894094533904737402265482287090010000701635070459494803703548045428741500358803259743337946607385424907533440864924942789978234670359444037649443500582366886946519358547194413624486794815506745194380838607280131479149224133421532673899371951698076556058620498470749067567285825475710233839029098340278839838380883705330876313546659233219881708071998526528433462794786586945632409684616612436079772470275481113952320281976407827184242609150566615205037827492026814457038604102047528388397104839352565867825030864794099289041352804599205127645947753132735555018568352787812413736422162992444144532632640560231044813285683526481574133804015086704805886790684444297331738323566920956971543198486611018530754437504916411242039166984800970156490874727147953283789284538549545497523142047570093883913813683955227513377419454815177852189751276388729563652724481772816174653579104350470496209786573019215897907081039572913827774471650148085274546402420923119686684409194688970023412643650860843793690123134065260274980023751550470171612824522499941253450605329432880825567857121654104245986132291931645109743544562320975864050641465358842062995638476414704037461255322200043286408004712541502765412486714245921396652438564571970224943120390786251594493425073311543705552457592754562268170188539179024317966264734656862213434488419730577767915739830948022878359142644382949841215862163385089197086763402636100371813480677827197339483793244140766358739396190731520430341006373765198907493901260043135156898453621511773757345692369182514890273353511576567858191404732843475867442192253521211791407549109722432508655304569593797312183882996367709454219409626237932047222903901014220026601463836593837807341793085962450734330524699828303009493085057802924212066411547587778762937846078470401177337748467243675083282304158034952804338076572841151641045675481680804376154625933586232852745375350237431074428227318114248971416551755549874211096687585122864460751325366237603439307924602927764459741742135329916360284796298897795758367252311933589591222033132003307516809740811499411969304475273579679160388761054163055051156945846284346926628926129036094453507374380301908102687616931203274962142390361373537315393447180780056361837014747114723766591927451053310888835270313792612789477998687049415981025629154146619356724465080411163762854059502777977285682522921961397520758856031178879836428092005661696149020247228773178509951233068973462979155207085881939375340690162872548506299873033988440933733270778286507862013919835064317591701435895204088001265204380796189484059407276848637839784817242284316250943099557020001925735084568222746047103961902144167096235875635971716197654666165466359061612317849110765833641748261335254136282971645271332779613565775593799770404460273858696165460319727644496882645090467321829963617812140639877639402643359771199749539141581844884037355361289784997399597074053538336887642627422665245749460392991510178862904169863060430617495130146552078104862484668793109188626779137002025274377258537751634903285550875386740665213352630592436234370948278941509389404140744350489059170692766737737432336278273572136156961175496810398083471852655668797231313332688431178088726917765588075735256444211221747287199844936447366302829019420739933542171306153534989128372968623679398144235763111373539988453059348893945232803520131322276987936175967705281907490984694209827696630458615566266924933756551786018631254526880651535182975197458607789792579514441363546480045910610526274247592436527119881268289461583080724958419130972204596402206553045186963710509625178080594701403319886006850638997371119988088607994093730974581842249744698286503775197630336059874439180354654500061319561012591920088266145702504222728289144850136553737172993997657234644955928841074759875857989324909081190485786804077863792685259086580074983469923363630928418233148435050111752536995389879992162107780589748493710220110922542764078977848488426823828218520043682290743668331915613657923866834791257875530270572483869322208577466097973366500111091429642084957350611954499514519509482444009366337597730405863563765630740967267803008979803176695649926065732243480188329370127296547401280888827995537417159448529944087517640184756557825223520437620754830503329609046938177705465400841443366478060109201058984124022681875256719038048462070604349936523801863136612408197224825453725679986585545370423599706248426590485013038866819746766070481000486052321336255939026577542461553083379857625971104858280873556243946785777039142396810505197282193082229284943023226670931331862866227550003992517096852793538396704411816685812280025729035472527510887151902126852240376373003622108726047146169899420161477585667497213615156597464682779088638737812743627232997028728179210541995692448608780652572825237359705039146939183172977943118360616934396154860717518076182508236879850039217630031969547375627691105368001298802112585509425424614084955133670668994961575636599846977772543874666254848900434101941773191540827328091211250595770529680306938326322413837150386260839392539582861322831234280082076512759162957683313951263884666041144797095469049595125130083453064722893075862056297367838350745668294241667926885682874859548035909881167583751576198035350061623095011747806666011972375775382253430510967092886853005414967792237497546662720913951571559592797083765604908446142111915512633356372079536969490023389695826265185220668622974523389528287339232380733207678912457734251529494666888650662788669823306759482124791774611225720054475274309040761717166116196678608733462445197503091030508800288545519687426183408895401812472543061740835748521708016836417999987427933266443615756806700581774310547229834232697310336148441625566799196331387335425850898603426989083261112790393368317451059094409465989449427820873317661996626491971983310889970507333406044454464619702911195926008076243210570359066885248010620666966484221695659002363883390605055985729017191138265053884749683076816837395775325482337217529601542789526175068832073197847213970034657316417787653264658540158344237606583473652205053848805258338771207156803794931205743038686004950628710567897189273431650600331544745846756438328325229997845785072581199804972664226736387561458005000629286685830465802028053008079400399739093652871965551934624473784241782442097915077424826734097875389378823393906479737658783617226697469057772587157630403064808320317626138446624806994003466382837168192816354464430267237555218392179619457082789740781235817619509529995840004981244815087214594029397824234037454802758604287762146461170639647941606794343506351259648263078723695695303338817817233150149409080118840070250610263295321790331565561513461586112662447100749783309776667390659961070187703367541474366967244567383865030985110185050576740972341301206947890340096944059703625691177946098955305965713758462882542377259681094848806386605956604915151528634587804315843999986134684961272764627055336587150987106882210317411011965821733027320750198368604991610578348596253576177607237636397954102146022569860961108223462664269004091867826235142555732970144690770631684357763908060706339494616654778319963543678622521105307313051273852756195426487475195967073281032103737743435792375580279763163235721219832727464901129963078051921965568452777389861025919767426241796017822706296982685011394970347709966042190955853047953712603147920416118929704343866133788297813414854661784594992025594523424332331305233004765144609292318256039611208605425604658495559756901187367040121629963949493992697620735660778984116940748846719175021663148446316215950126514093626572424639595241863579602039589261368276971827731086927528014088686586380684156369924836652760247250888027296632853598138572943400962116421228534938796438450782658500742734525210840816507849306789600832711989023466998916428395469878895265599492567262088028196000035567236301031093426952656340563421493261605956896651449565955545821230137895931229532563345175787148082521131114007031779839863992967884707335845632827317976867694968969843906100086695548464320700486111024705907713395154273706785372770344356103507355336205877239132392422811009013113879055817139809349829364805513119656590803674098533240413856638253187960679814721426515264957576083266463953800257772394181321904602575222307061391207706103053537944152685062910071092952747179271404887716723580817853970058625650732434714875823956455888698836486481725566804708816566366936331833352957843330594160130387355732981757169096608600641488048901368864131999623663312500928338811940891284401484103660804877576247818995108435984748779366996783346114404666269598186197407619641044387754231949604463592952224003027398356252381427805321166668516087865791527683052118199968879353463882009693312810671049021129193568229121231503529796153771710157668530187689654050749385548267259282552045785808731801726413092041727019174536134655109950536724552002452366736761394075288714782639845894253452166506044690068282500642911848163564099200753473534746731173175318934917964324441533267539486701855257747619738437529111242322009268819053017434263732805680692893116911493053704617199401900997437351046275241969668000763550554710768699909401420718556549559690036032462477885007122013001633710483978025573885024720949521397956060398763526249184683281706054860402482265863154487240522981635019015486073381923895353480143742466285259226775087785952485302314025011509928063908740801872583422682264404290435932336282187151561980093038221597678402121348216181411107651414903011184748596661552895880693006225275478399218307778508724533443465969667030852727457878826429137675748935415576867332994607548077040152466601185381586224831674781063307848480560270609089049156739888965182131449041864259651313401983146948104302748104657258092464148103802390071015569001041866037403205360668017245275068468964597046544531625950016544379289296234336411641535049043319398689509840703099495213414007349093237785803898680541017601326466396767220847515335956718571562741592171462695903262880871139326073542041941519326298994599855978798280155355061210037631246822479793505959428235536317166146679069224819142824636797852354557164112430206414227667062417633581485908035943477125652274143753326498200314835021456341001318385816290629660381596857685816515416191944233728060740968020083093955537068726091128677344269688483517647242018250904748993258750516932693593147197760270398299255774548844546179330884943144756130610480010527498243619739203478974800933811541159004380208655648686592026290237709661649412160348353096261222743866812342037455075727680536277884204193308287875616459932937183740377192973562647458799748343879044617323344602221230887264864722107950820110840346007339047117093286131103569650200623210506362903305973564236645087486958208593311152263289697413676284037329924040464237522793459316220881741327749620268407417543333428525185887262585660605848328753665862769164737671381767941312154881324008872366474064178522944663210455320831230121314438146686810936946228323425505898418180022847248952306959654158153886217100539549310182440094023870616120496243609337001316723883672422481606494702034244695136683097642488816493867072057529758078964938978166559564073944943828545642314598398594918981717747814339817155807313586346726515075304310269591889593596086268093215145381079296257391453846430991549916131359290115823910920984751970825372209154419987252005691523884164355002407872434716316176309234630486542456033298254350046664441805541234371217463139068725230005855262862920132271548358121451399414080297667311364478962693418978219661476663170109458704195433513580381140320741941848345674273850057639443067527880777840644687243271696618001454895531479266137552966417904914685014594223107475649495478615496796810145344598181853222539525320454367163984079732327806686617170911665688165818641708824303088708122918577018691973787912467835707156053985035436965024798038451737723637838809861017545575089396770923954544135349031585951512019905409226709685620051705968647658189503119445584720913433036488537168179580945147644007313100020558482147771714954019137496075566262897816890251173275367526056326527691898110845765558516049528667293787974431850517698871845169337138828247340636621999369819324737565453381822659494562932896991662579233144440960609555778584941998537595296403756358128690540393895678211889423630161332905542104867910948295724422891465544145276247875114867953571232372406416889137416696662809331569928899719638190122070403084111211874966909723677904578304593167024831112819105338496715667410557672894605581591444618087882753752905187290837401832075095057013230179636737496696478512923229540523802283006578269583690703156406036635028007176099867756729733987715856570123855496329620435433957856026036135319557940756803407035057624121683582404994406620335237448636647319950240655956275910253966790568605027115232447318621538264451304776995646686736027529379304749409323911912747139000390092342760897031025393712635037482300271953449317723322067566297885304285872894684685101580779067818985450436331477189032705772942768807103683237925854796323494560380591390566635321728039837515839269594673698110170616248980738999243457806259839389336986273451742166433735736281933839606463757857033913025097926212164670552892702643492688596825559635384632688842336688856177152906345557534021021383698860006767876428045527829589370293009784237199702352918929121135638992230792515320568282995782150741958221846242812096190488305944217159328845619186589506112062614210006826445802275297475954009946275892054976196782770692560506747736094502764588652325341293184534637746075453361138754934981321522433948080364017040617819245124092240398475169465262121151759803899827639161791400252921823666775967800970907253987244222397335794582819605287135115680007540308164192991631659600180999779285306200297984868764841293369901702835905396776239364268104236816267253004874846720018464477796260566115218281603706368290652317437216798527158782549054348876169374859870612515696583637940268840095447788447671911051321149208945876184207748156280083181178524691081072615872023818485639967934743240472280110197356615294570871848714979185093253691612368477405025471710619302486938246651601278042628676225833863835186376486590252732762573476389246344500142464568089807551777405167519454619794816224223385832914460242131666585166405021887873583290986223654704390535298150316628746232738678895273505195473777722299882106427491009281513712006000204204875545821554107602203993656655569057906156976230020584385976824774721822394666987854105974157153697225715508615528636716346739843704620318420321864594882003042111254164258226079056841048155258807673250695757213965905862219545084196005755663229351011779818462936373083656389461421688248972325781291207245852984147588944932543429870968948185077404920297136086868508108478074639626749972752641265424862554995989830304230734973716663782290450928830367273139871296911191799520104111034466811674850673721671665904384671624426285114083168893593373554054214282794441244199457139657350045751080400959475831901645720891844677783245243349227168959410220264242163779587104753582812789930444029332823963450989003921166969564928446505957747723006558762169376789182219334558429223515200069322255985662501532565758718441873063603786016660216031422170458615275540942364451410956949694228349257856662236707141368941217159357573775200108733066176963728262940561425184040905351904241809576603290812987537477825298314254171175574764202268217308532730001094731061811215844800342391459442220990664045719982267732092241687141194572877251876116851255982917756163196023933920646593413970098259859349439330704870559599723556793768588302911560900638436710058832998647030184358583620397103749277633262562960323918416114799729002503845772624473106917209589758232000118930141755231316138028259164702235593873851620611938886503342658507085868083430044785911227830052839001498071298942559159714018208956486591229670674374324233384677456554582000898818527208602475209788347519207931811046741357211437059480838352931763904721346090115322179352808395918370098992408193487046297032927562708233624275220835794149000564547153910373643734869195145749947828190025685842930410442299262367493588268235154926875877455880233028153934624554004914870532419422503567038323589783406418011883419120342746218451402584336967831608494325849747015904139798152791277093573317573606264383601264134461255773340587640241204351113649321920942975160784497790286641442429023221662843651526787479525129353614236955500862637115006791451082360713735298965737435487086994035507773791394772651111956639350613631702898076877538166218010370666151049264782476071012175835418583737099507334361802157765029260332649104536351942654810866175241602232441357321279007986637823766919366912588617464945334269753965856845055228963830616449907963106782629979794277910641839125519803011311366711347069679404287164111663745104363007430783114363748342481941070807383437512420322677214642265373339617728074742870179353473299607387328933606509033707808376246831576018124495300144834481894201394713133687429770758117957870095174828893681116213412378833456398426505883898063491576134342337458848572554083016091257656612886737474035209518920571540650809253766229617982535552204487708571177255231496345713257805400468046567754143675486261934968248015061101816087378897893806158316767508450204168571379361537812498431918838037738252180918206866108828274214814932404160206749625326064177413816283164926447622935382285724840447466781255766202559728332635725430496096847207457028866639639651843793625841340464656169636963507570552465976982565121080199848448441136198341925962666836727402844520496289734412904670187138742855538473457176051651196124161130317960810763441684489955707849571528452835910747938714204005091176529454786388181402271122606165767432100568297031105181289867301707268458316161745658527508432418257627627950198558010298723062526754885239014225006749395228258532040779157983910989676053991109285642118578749166404608530796321439681011866176339613545935210806950595166079940602626652529478949928173146973419395175628195402216966004275421218411185598458680975850203395878744893006676890739113608181085185290409020234232430349784742421750844481911103774579315559811482031531600064989207121143630104020450967266469715863483472391304245963176437551741377349243462161529575293741799745044623134302029790162926775097534057270343630313638088502018216208927752595332378603262256079299344084620274713048905714958919240547718062097042736848404953460031637409863033124384653719640352618881869640880599132556571213160628643065045219901645875692362435305856192634236125333673965924221485213058213844086431323565936143453834959212501313642907838580549379124992461660679542094610842393699767810036607442656795900740957943838349798260829984908075963765179422129686153735470734711549506144807029916161051863950855200344283665172316334878889518225111654439696702312843323235661663373785248317960701095182792532031728576789827124468747797999228164534562117634736861059124459968048819151931317011202253626736241702162395380933388145385846839900330476338404692166266677437223037650969112301003704529003438348171134830824877988564298005764742163961346536645153661553008109020219950696084710797733335009948333739684096001360496395831187615485739740136743116427335361739971135169486626321422359778439862983285243804772473916821357012989457521203054830910617757021574946743633342295129145628169117810940575287389066747431546353387241990813344560492023757644261017120097490622604109814034049643556132476861582669155806000559952442707351208082327401086265209970931461855091995016245358193896428780120765363205915484072232935642396693066455467423486216048596059035328646230773226375309662026783226017987842787766172503545065898275764224683493164467489087082099215918282972695914915682835925054972437901683362317817435328283627351359626841871488305078490854450614747991757918408602835422905146260849412458384077716608522342137814764688801909911414126836933596534550062137039018758598858863082211561202852783050525037780595229996229145285624217412081154256790929073978029708692481093815325895671607348649716792159200058518834052386760636214817053006897190633013131993351428097227125634048407322872294942624990702613887977648306123334628761096152397692578964452092357214188933794378034447203834827418388494768442906153456209026167143520196185388621701242706445940432626286628540552263064724376526521408831760378840594097087762025952890926823633364813736833214806979271958765427871214975515195117376001816829963330307930754402141605923729351803796830904321733078323253377216531420070875450031107567255328996663250288430270717317676793037986848219674547965480631637099314382423555831534994663504711721086742727878917712541566345671758993543322737374275941552375894722318342610099187708242011103768366824816241588733907845170152054175368353748326929191895830243501019001770769651198981525945020223489203640238846087697904138057633144511562153164482668159240262316957819044969496622262790051857889754783448192506045773388440331006958171640638708226122514774866196592616304756074748527191611451168015919124182107744096792202815697023487267058658300183399793122479815439187551410510643525463576104472480949618878409889687740335157842885013791442091716463301966933102025930880538724284432248840344448529647309705633670632213885133755613603766812790902647912707232326743088592100023722021741713815369909545436988339165330033070452687063266828095651194867971096810255115924159617064605747102386577464454982484968028157435754146047984587393872530392396089086439363561342686034536324130073406261284650168340382160618379881641663404597799471151476520886374798304120546492925056952921199799661608873584914751817588898548669519573422849851111629969910920439253882978422073129195494089374898525361102214112721905311026206192577169324601066857420922893756015264447785589136041644677776877608249778748607772777969341509532112474850100371706749881797203298318556878253554436331810054902787203902265678067876049753408086331577879471069351040220475417885746432541338200339164825627543391188474177767284718186187181829887850004463519222061053112048348138758461029787678011504756625211323004225889059401834744416902465423711523662108330104627381905363989710040968446499513529200237978370589487425060558284799999400663168767175122530519176891766710217183290005646230713498379029302843479001148232734191291745020366536032884450239464648810753139663615577618888728614545526129190941659694250356136464049587427456263378612828913330205494109201290256620168145822995558313063741100491470887065655142429082070760091591771459969220976736350121396034246569150333420940826414346626096944407130854662463683169903146023857755825026322589542749527869572822427764810909022356553495007171040280851106781924690132471614899952902500093618141170028188831499255419300858356352400831477107092250646362404287448773318289525751865511888480307994973037426631255082561563214193361452493264296518640053494279939747378353734946872752429908558599286976127412376958897495901553562958713347168355279857075265267084127149095084846413525461839155972285725199404860612882357568439287496340382449568283730709728812205601687764587340083362782898181086062822191295680483940674848217572598004645013431134174282264667120838581510598401872118593356272320537995744948615081015056742646620142040186411543133166354164690662063520935183725001994970168959915715908170074590595949773523218029646352594854930830745465845071965463547129869377115610347543017193749037452196017198717757922270407815732786687711271143418626150741246654532261661289463599853373298217980372106644074380239787213621759576457678078716919634567941793861040416933643160566200946579722260157001578300121779058595688600629535543874980360178196057579592816640543811888795140066265509239034189432381250531486143762461516937275405513195584112043478874873200667008226460234142391803729636987013414043397651660192664863941422912922691754688807248144143511116501657196475546078120624926430131205863574665034607465292631439278112167093578378838299844074863842170777818163017342424474832181001560535839430386858350331236971273676430146323738362667675017121794969665533846443834367164111581696461345118825794954126487610650686794978148108828808503738446942497199000725269802492067223738756841648862522924349500096026718995325754844705229283200641047417490411326439400592859695643960821837549549565115796187371211634331319237619883503051838317548254888580749991518217119240204596302462786979825610432641779165862150530408737319621010247659023591454641474121533470829976728776294896573576228417522409313739057594374407373941803841171336649987499276821485963089619394191722153910837730266901759252364257308748834135730140091658121184945108798244607089765369846502114664874620596637807655376166299981647257592011294749046535211987522038352145079937109218191472502884935127664369286695985429981302029343933096903151580496890835650228175883112115442058387528425201694810555335985043000642359178111250025300237906104272451534730251466620937478326563648885902665783698090879569754742617627555306579292113667744072456183345252751586151794372487937951628981620705107610151148592143572639378667354249894096661117054065776365111113495293011754266407000168510330894162730537826887861097608607293790771633449482851920370581266110026851165769079763173819013470663081606904421871868763274380704973065688367602053040326052044450327186301461013316125288764570045207321784117308423913232377818514756998954242784104030018394036274348375594040956742679775615878064450673088752620947652630597952724377854035792090449986995470731717904111554514259526407975253538529532229696344925303615594089296234052816793414426507210241411407873093067273227457624284858880158532843288789794511710847413070570248615712374456701164391243069350161530599333051361298480571009322089639637426783549854791953557355990351848363195512193086861887537102370409122487634223847837437882411343150146207206841148817411510660535265706498141297773959557058905995007476173431288626733318492529866346035951161610714712072752496245273179220958985053904362019066329381239969351918834318240042640284372955732650551823698898287240266124909761025346489288373361452126005727386680152014198101401744712041201781233516355442211668853238279228080580769242717602356453468336485746743816974881200474493599005667423839141822558441056254814103552160289830227246782700652929481450769364213295657577894630347738702251749320400144827378796854461503819718669973057446037151022299142878327377796908493293580397198962171164386488421270099931256933365400081568661211058281519403476141097816878058610643713818036312483905636492414243071974811362498274688931489771858011910403883354459921486768525712384890713060480465665399756980362206879279061319283119802971993424237093650683564777804148790181218794332156057896963815410954727124098612834012585097184520886865205105917803192155068071580785885840041347838764683134354331501452324455267341542678799228147573534974352881271565940432032693516999140232960630910050697470281039059371573996965682818675330408890019078858877616466427466802349216124126115179897167694062037569274263006103026333803993456529011482906844054281850358972476773806646442944768263338370141311067223692350532664849007508609428563257276840770121467396777190457520999592476481160297816109253045739408710426341116399668099472689858753380569409050798393733325488841443952650865435962800676151585582982520467873682514379626989713466042421928461896157380655688127213330419862156848141722128048046595303610223881820927924509626215444778871768491561376811999070004779575099182047313009551823602043679858481365502856115938847562610008063351868888974051920443436182099869406238048951579051406904244079249556060609484600198061237240081644093982983937441979054313189921124519412175928284677170903823203172619258619884221148008052291922602759923999265992262261923608765540494326737358285583097171725864508798233570318218931823727814537529934883926808132807253578183003499417266074116107819373662187083324939517667342840989164157406535683209094854585654759315943299811418604717573538416416735730732822373647648591510628969832683170221177668835895718128502694972674856057442035244073821275400913601237982904765476655492401392170337433427422987470489115673224451316381851035380983742035216890183894515789130896479764388383227546141845383562134226369475779481490167159800606399127880234061805537870478561280876885490087597754282587235387687450298253727952886163684247150540965576880794263030542097144796734445108568763437838305747083149693291731214542611753702393475784365571905672071912178098339617418098689155628101416290420534123208844188565965742449888301611297341125820366993767316280495169768069750820968771293697615151508171236618429893318421745940279814392106600337217457444301972098268747412760364920502489867694638417964796437644784836876016449687043682723587656636395322121379967098487508197230576031332179917314905370808835097410742774951345446850245731338615308659552554569633661951141508329212352851804435479334329165870718214651564317270291659445915917058372045706594501183704714073208557652110543534495423308963761854240194816603446701173320123114956674251823600775995970638531447266694362412174501624088690562818637739024900167717279325040429943429782884070914933140275130185611203474541736844456395620636546727381979088549152661871560112707955167919539714994832453934893272049210814468266874990327896327784335693014874174224854706740375806077613795794642536947151131192039125738808177848874013627787055200132461072058598898752437139899117990536953995830336292653673290916493985486311395676194809668907762850982064982404575133102824819757919805926764303638945560388264453323964065029622629977617638635579152402121670843887033001978437131486442334089679885726966714008025602711434388720295129333089515306322492761522172821195635207111700435495339180974147747130826311786693228107137488122717560643896939035952435127253060653610431785379473897173483841966214151814897453896047761773860184322289840637448045386551096798202097571347893268378465002120542575181070006661822711313845284133871074654688846039616224163005356842533629089051585751816675651741240164018940845071106568343389200649636290795691866322101836969688111387822736048347545165854152187737998670509007285747735284208543527015712351994596537099495269137859820663200165230229550172275411547900559693385268289566921109474529193091303401804786983415501717789660751012632735034187810300506019631102974613815263504247903068642773888923391187651360222985903463141019157103903897847090978945387248113024135549370133514529849671590596664019067954162836042803824121718409281096116505682728105684043153675965915338341648160907787076795626108341801000043430073633333326603233203596488169265894160027879779172345669761967503832812536978559383613613458936999084432803639589058022986727543905453239004438948396976283255255135634369822014190033581853769989755505051060276026744898250798859571884519910895475277219585765727750355070600880704204254254390185190647075799147324741438078374090125359237287912698042626678057198738442994692005547091616246418450234486922277272568177821290879514495648828000105746175484811838572141163898966810419474572729483895529638841065297167035768428389976362762689309109334567276152795209066405087188195997869659290465416762988516306056468481065067448105848870847419849411737038380518269619510035301405436889154917026022321131154831697394664578839184374684300084242643060100874939711745013741111360768042870426650411610750102028061299026243244369249579703112408340505508739619063727240474830440111579154765648560318426628678449411440398520749879391857183068712002643913512573754519821356943527052027265049951234594852999530512945641771726903074125727236654536074847063123076452788813077286609017202592002236697586420589102258340822937058379956640718402214089661396737475633446022438220358150026523073850991899285621989213777423908239731596593750239923497778176737069334907368587608171170438816305665075468986694409931790984699277855928978923641355830762108537220762513032192260423103660076131589433070033630003284795500678243178759457430574603078077838436164249699441478367387035626286352953087415932077317669606763084493097084296544228927086768409089092586494918261602146688488362426686407281846426504651898192911999139179067615175338878099373185755826804062602893819978769404815474056230566603260711794584388343804695816931816018271187659766469963219978348726283095589529428674285648510015278235139917590295379255518939752830041669346102131937921418461151293167853709700250431921316230283046898757242242193518592298273164244808523520369615219256044145826478278908937418701892658914086973361027375663284792722324139736225020465830809251562434004656908530957331989387515196357428046966821636242606921598898435457671501572021378171715213378410995005189002262402380588602276772024805885218018996911981489823262530122417928470390429224608687587754123534205223398830933436923751702240208611717322008025399076684203733925396935703539200708635842110727270446810108925599314144465205108518295894344573204844112087039065335661990530489496989045749104169711623396743455457423933045136661476703522684696302167877233537542768481189781109225473579752785147599499527256226850347432098103240965177460718025255843181637960438605863120066008885735887010149790156146555781917715737319615335416742401628073760098819673069702073664900397056410654678977637770939209196813104063355249763435602221964661677640274755866133794730199271691059889171003017452745088149223762972907467011864399291576303746002406087913464171140547141437596695841129036438278196770034557736039442592412024039127931385875424202268166978976742500578442544418924109446122882073096969533401819810359053526686329589315783472950176889000774970605879530293535846838827270021989018872630619356793744969862678638233887343781643762866052644834711941182821552201869213519278661425251735759115137734093091559361895844358145977988344240109144369496161068757723888205199697179675991155497929548249395734235776903158263936508815710472925963474168230584989182862644807307557069521440117703942208944365375518158904575087590153067630167340639039617579521626389973029797606190812473595662417996893309289283686117018959145465278002447275715885958681003624325636516471660389657863377908972447616304400699729190283514543956276233699590711886420375270309823628672611002992138697066293786746059085544025324234253616476743915058027351539192048837839062248243732850391823048032276680043537382093971169443909806489094361068340720966220080452695742881324671680125305597651082219237775001337794175943700146840325620878934753872413190509901678350687043346531194752720321869301053057902649542646484184953265351223923005601489288656487641934587198468088125544382512138911681258553470388790970292612774545517682339483997503420628290346230647171864698295589333464790832444166771456152853583230142142036740557425794022773369107757949899707307806468114181766855053906263178441885918522941221221459817856965626154063481686635038130681699758548493732075538021420053670719638055570403870291849140332428543854594481201970674907738669719223461223883900492076282208804450894460547091890467539354916393165053092567817370288233022392790243746870569168798876531287795932974849872670059018674454526252969882004282045847984894128428521872328767248556456485439021905170808623630862319512614305777127635453339301931601711906827510288447428447048209645733328449833166269765433080320323863661137446554925373165801371374317827189785161168116670892842365256326957517694644974132814697225516643272519154355616488903217802978170900753413586114880590412582090476209588566409809149255499548827422867958788691624421754090611174715467808886985608422847656008033375748957151793095097419548236015420404886065184675028038164857695017636506477209729210541894272546240136918985595941776660996476078960182564331295915487670920596718651791619729883904334515400791652776489353747689059172407379475485914593954866275628988549546434830489563058851780808609702339477494461479201171955965260499244171648859329714160431705991294980501764620442739407726768341087700354581168869065666662862552254304381128763169844779319487579674563968748438699714771878374553655311291682605422119652155298468421511287604744859413104385810419240753482203918877505366694963115121044481090984950723755850830142733977551064864369778253778937880531708943095052576925377341901566056597882273302953051871241531459594438017585791632010538265900780656553242654718112219968665691584931669818018712656572203088247976051567534648314392381172628504036774692084177418553501997771763915077257301269468369763613892082579079297570916509809830658125772165100565393114107169278966819378877441987549615279208817577331487698043106317519125686140805794918012835714474090956420011712487642543022820681479774887068231203104445183522486718993539696078249703021505038050439015582393688681211906726192275386698281545252434191172779559801671166023407886204964774351341087374620511524946828343779446548798846428824628768757507972617545619372483233722285682107256755815907745147081362348170709675097466495711387640258599826447296084242106694893510579188660159506722270335650900039025081565046763246345530767348793307640451942793296625017457987739034924984803973313640441223017159585167875424669832944668442720669367345289624330623593001729246540221898558883243697475429385320214189115548099409041704923898098759089436968348410479473905557913638566155341543763910189165278200189697958110260175787205484448926635073074788635910751962583915687148350889652283739390078754364937198983545267932015881173003811686140483812614526646641800989080783125317197953285882409162534207193610867386201331491650764151993731584082149440240940498207189087793030002782892572228874212304144411797363843718408084231311491915337203986545767223039153814742661210229318435777262145728729163988617333988865446913357545500594563279745734331389349539549102985843438777877657322168980909574240585598250234448079561561453952637708308789883849301274878009078657382394468479603987642828670843910165228073591362113377551499334026967780157346018303218737343005036913177139760127490920128467620953968969797999169094797140964498400636465201897028467694638588549003679274119157086043065550954525634439284522761136807884201997644108548213504730433624871840165787224035677735265895502342779793436326325539289396517363030340412592415275649161723248029780740331475376592566637937049120704495709413345840982639363072049496807877501677768653522027525838900740223761228366359733088446760455034238021614316877757750534593315465837556431896702397911566201757711702444250740901530329858053430655686821010756874275095777653504191026364388589194520835178687921716706039782840943560040458227370676783642742083371647194775946849558512875315454377746178111140280464393527698124821801517675025340364826592275814504485050360025026518064032364363013868226528888998403870799070205301577634034901756218885075873559134855540290227731668584941934797729567929254875119612788509525681436440483287961555200548360113910230964986329034339796325368762330998662710933864905187452889019753033231774565368597509705291955503284875224067368950927334746656085115559544937346160058138591903481796984634728513146368680655046898131688459366632205559895683019281957620685247469178765936569349126025254583478279886629880682035928814871236831238605631970181831419040349561848400489576808490012121509005021255401607833701029045770979865371784730165780571050924242379905181511448055316800854999400243222673381287284070303319947728943499682683993693432703345383903676499724535123274599785168983507139251105040096316491789900269913506667352666744354642980960242553801992924761615272727746820259403910730400520228369558195108054090660226231494193343936110279458097808849506926388023489863103830853664652206760622626772008241395154117442524707399217943083601726877772572946872647435306936872379284548609704364572441187209185806489349367786782016373514392714225534978166018975068308673275909380973614497119737335928086494890033424617175851687660064861594703249797501415335445591073547159972360584037880452893326866766910221072096347842253737921924065483248185564414719493062770619351167373433675295249687745192441696955888922784605923471103266343154831437658501668333853544472606029667042180934489845538004423986233022397309191481862150084310167232142660593141729281652676535247996749037185830541105161094307199833014776248379948572539965984854120731672021506696419056534238745544254631183992278022749164447408386737244682616343270535791200271469620213508810466759757115126313894508658577760882507569996660083237911287150134783011788626322970430352941951795379846761730182002235289271646643926966189986014644584829070999956646860592931285284358567744031425789733431894214476817575586816318810903003930937447006375665962224710624575047374990622425446886149337341836497054774901693666978542197717863063120645908666457431551995752959747927530743997371820239599523805435051540849369531634871964805134447172160036790113648741128774787070255764333891847186804028564207624164944718563337915829901807511186150102390721629023547030541177953061499457239832104872232361692416573267146037577725602548379725977133224229505990003368110044221123809233404454362367129376434750224437240881254131208473294059509697191582211344257819377827423161952733807693416804890096545127287276477211336230959690890123558344095096665237086020349318402816936803509331142314262558063530856283546332159309326768736161036874404818293691575705072588213956541322808024958991568368040565215251461784063454624211793806418041948852967292845603513919909130403622033071009272295312596185774231056891835471748556602059613161882540398655126881611953441761326149188041605747603591596265829685055795505259119017984805027135822964442346442164264295122357281924273252117435478503688205168607572562526189877400845262003868579892426883373780306431505339206096259582244477159761277486331560707781847613867290208377917272742378344396055347830412662727915295175114427509919629965180651499353238216354949899061533935334084912284083501801311195058436998497016160264895410449390217801870312202982787495743947345901107358771029030000273944634134553642628760450605038903348845096785936452156603345040114373877936937004657654871192975941272168562198808434448356463729498613447705231185589507675455864722274550711071143299940420585229975641787390425248753872624941038383404932251378371867892935043373430891583675037027757637616210995048102820874240901736167936763434788932171324392965972552803910448710863283206504659467893445618986453517759329022947784465759210947221890149810757874894922706119960359193260319909285348614097616346024630979543952534826297446337374834201801726222945619503423243861111618577816107957299539812053088971081599924564233241254927313456156302964665791434877718093416112073855087445407748223068863205445003287391643262247226383717791038261908520733971852721153761240014497545309619824255539815485759783124000424625833469972165191117817032278122843474774101699741906024019253163696622544168417469838994565362902479120640938718957106509328954957095419670066310735092043700149735852839374851830809693124821481415871410263011689947507419997955416453138507288622920509888952858636422223622732100206115956615639468467035025143254964997916878409696353771184143060304985003149891748586750965024321201206151165882999872488699101336452961117746075279906844986569760762621052481868002748052103117387969235212187259860833384314831327976997055080932024112500391834187157292538903353473443935934728471778730497098596368415480786936749726669811734349184417312473212267620162860199276999496539914469442528444806124232235362701657879718212795095598039559875252448211600174658099137259004776627316207071729468431959584230002549568449393260772624216644892941107059851370534037535596259052549263491714412609447723426485165087843586775752523383761119153654647228536566613239348478640187627707236858409258715738253893159221137680749424285123924489717735407722200119500253027586062269192374906559976461591845055981702624655756512437374548258362521876922368978044936152510312247052633097773765876062156200310917204658250665494347941662236780337585917351384818578466542342247071702308455831619754875820432123174775276406182062962645159319953257109296385763490254142883811728861967030427154305428338628567158619182750347583533206878795009219807305257054911367410854175772094979080300193651308279493074789689354613038861317815985002110867409894360221691451730287133857670812144270826886043505868199584515789481106943836093358104992342858840041606313828330398015866502739323106195971351513262109300190668156883424083622155172002828531095517288505344952915575063034732852327969420772132914090252448293914604778483066400124904469729683578652015243570800941470361354444032529728637377527260404767689526322511389126154465947000650105643701680942847518542463136530041774929752514754075681253978806243529174959984769877882730112966135058929108681042654813210208913761655085544363695544794823928759693152685127101333821945577961408526776870003392770412103396433638954783755056848392486784386089700995136722137006218611472358924799405071956628556735007349528442103114795194239909276044998027185521356755831390317914046870162267304728550111754153565323362573768609043813049706892412225867588835605972767139805607592607587692278931487090155404782690523978467787965427531262046852062384420359193227022489150161747988400932246584091723530921755829211120760526006316943435756124866418058566742773197087028078972270413290321429134755759114287476602635908610544441002612226922773547038827671047560618587619596891993895415626068994532448848267463165078679258849811106881614639986672280967282600093207078321478358739846984849284783451937602400384174422646327707930844378946694047031993542425287106304527473215584511892494278044321246462788126280012772256359315625608418418548750016759085975106596996301999308949322589108692019086253326898082625587315486114190943762757155988572903384048794104322971553836761072447929958469027957657403883012500830055377985515518409812398236171455232010702767004205265262144901360785141834695709345236012516663798546460125621261760305743593248181111492362907637669436959556207757430267547351699951779992308649976192857101871909832458142166405974367885678197384851197615341850699746365712633246593465083217603069524067824785343563210690411713371585644314631555694226798589304100640923809920159850786879327663599292144104317926223832223044112082000141478244319295888736757911145885037802909404324836435014668273210451368226517262311598037562846340778452173763041071571961429492816339261108481248789483778649029799084457657130078804474574454160995458579726662160564138466666008444708603570005669678719631837675865093048113184253800270216584702032568718935522701864113022447455647972608422195098750197234702243705512131660881171395502557901748340844839227192670282153436801362445632333624946412225471512307523496531337152762124989013926406700442240301979022060101039878030926599194824174116257046991601508799462795332283769276968209219950062551012919539900091950157551357670239362990769140987181738566851225903689119401604328322024993156390341096599319691423780700010971418302649447834612812111586672629626223839314652079626393118247366426093486125380420784457817481586421970885666133335495826399581412101384963369056384820445636738669554973077673764092069076596379551289209429591007792813890293501180434487980580208543662293901424080212534844692638370757996690456181786079904802610550520800729309327369749054884450853968656916889318481988957983980219783772897142261583200231294076154027760804033471419376830719716460166271040270571288336486009507600403105215457789182765069745597763389226455796028592104223849217647778483123345062352721915604820633215551777839006890636038981268589162847368874375605336634794336919553537627556254122807385587029871941602010694365431257604841056921402412581854460283398345447426330361482835210009294585093066328331368844285583744186371889526577952109889352988449519896902632161832588774608770634693702046300622718266745087929731322522659468909843321044930317943589079483630126807285591504824837585791160045653370292464600655586044483928073140748810769913590307685685575128541225850336557276028322489644144155618883063656728446613308189001617521054287112622531564067001912098115336763609439849111306895895235188056257633852181578174309137105894005940010992643393410936932327506568249904725101007369470126407753692602976933106135488960022521035744599826439526081509181933890819579255803375684925202098180263903556272909118222412991675992439456316045045279293475341810357765258738511169763396748671540927570932040938524690298049101503638726359364388698061979647918903300225085396273681855982406127043220998365219013059282435718927677383600190119227350653920578180356813525687397611556492613175777097050664882336976032237776118088544480538861739738676356779617587345290037638892783917363216922276269686284235879714878353739029413082163094686454823016607444934714971293298028356870730911166363169133275425067965454369910576907974795073002596299404721319100847715252741231724482256292907171877103209564882151255041584987972371755125896692321161881080744277536413472680280974356353530121984738599904865212340523212074355884146968854206648382832039344958838730309115652317807861270444861826771511790369396296018015018400007630051842235020481986003442839282624713048694777701234648125094741846669801962483170730058652582888647228457805347241892433131125017521751307110251616790010269721780463529543727033230838358271647460641032215390995420376076368167994815283258105457846943879967514869270877993293669774264433587098775537236101775142424119807671034003385074605049558497296150328566036262125697291977367100524583537417883909752705916924724709127062232271651562597630147506376214261835616714264744505564307728655275447384840579658797067226419644844143253074922528406839337027079750847852249570829764521525333567472241834040757688940609055132701095518949908280168457640406935396559147695437945656491701140764897875944752475519029451263911652673466232455465313545316048605015093619201278684045238176421887106756140249321948091196131604192462565661702153850873244044553743112208817483564661698899214255489934964836299091263630251548762460405969400326153569978229612252943574247479747483396476715795306455976039629901524085642017926154885033258283218372181322658218358181137067071347442416908075754568516278000485503228307499954070829889186647327192366602433440033100204281021546763474015121261006237079709164316846862186240673805022297272002142351075565852064771854666422058008478194819894242378743585531275461144370470646728118742136065630867994673866971065449216556418033623424828927772110928247751252503210607008076306362812640569426859186602345702577598685855814210966752131503293316388121844146491890084315463950736534178797378811092696245939480666471823606061296139835030198574452539227181410197761633979878262153063861350757526737179530018619894117056363047884035815864364173477679581697599624802191713502622747262537068959348275676816829672839295686711466268876290574270577045761326869653568158323678634020455249857317080431675896351403470068006042894040001999882906524960601257720106721392998428786103895060307345131867674047397908499610889236838870179258873217657522302142351705783772793928382795530942530630682877999595421505139874346873956377598168562314434341252634594875692926834606736191702020953324456421047381912172931669877076609031832022757147778652671748477813878891045619090286342215191844253194840160004366820094252080471919713856443207202716912097762210750114283554019608101703147085710278951003652812339227696384332775843266333561353587567819357325805466515269896268152497073050467270999957278267574979735410972862673541329065273757274656301047176515584236126162394274625678799362416638309289166436069624241966365021588622451251038033881885779148395072853969286389907026311803530454388651096420196912987031950454764174189063157290985194565629125754315942872325750654625115257154095159328521043009876786467112498296457630780008664357887344006924754239150829395325910490818922074029804034627462113731581756832063333231542702015385948495455494286208002003829735170467493833316725755103822034027194297973797167493799054073208664146063566539114180554207445462201933381429503380707516101115319728620639139517251805560862193962535024311147961716016938900135621175643560790154074279596507524325708024733433396255627287134382473342698804432377812246597238687794372539868830857150546935639062884257365276509860365154419870797921848002567431060590101870500431729065216780115816181321246291256182055920673710650936289466045714173650003405532642008101229862589784299892300555370872638281464490367453691558089263159653382747174961356442168264249471919559665523271346462016085452229585232141374955661304450387896121916070443429625639098528083748569569656943114421798526248205435869680862519077363507219142339215939748962242963272791450280641179733258147704982618225524934480572500723859923910320028506201274978628297455280297886208665609558358721191025955961758323015122205385279233576046236736381997809358719973564462958289448401160359825762294641060091997171714491663171500672684987748368928987999055442139106644111240083645029948385203002614906297092962290637547413288332037555894948538878641365802992221228411371541415232314926255303461623511080651256221428359997283538609146326745034325366751075981629180158917160928047252501225161669056219739695237934272825753905352286712192364291188134416652584750947944953819600360988804300692550560773330226653720332946581427804938380550317416833914738799137778989843226126508035219974536629527854114371108155789384227332980800087885392230908935155073598234310253614025900540871091944148370410540657443211360304891542357817178156694179188591116405609008785228849149475099805458756372926773329501906862793422421655521693229388126001968974213116221516465105981980436919264847598902244563348539063847404104917060578692329848426433583588345564349202406195877894579004554052611561643937011954474757975175337806941860203862660761120776526710655452929957589932872208991592783960555663675113594522803333327237117163019540131477216275034303231413455405835371369636886041549830150797794506257553093644242112815732886049271208281707902955905103959224331381071230112432588214991103241240988193851342222629187377580810278997268082635031199412385968349731799843392621094448702849826765104162843581165632266837135108358685972322964291214231033368987284816290727035160868867384350192383617222065731468560276704223776934211713850814702549333461965368477018414059804032822853759909015554628408309164010665482087602957884755406408767460959498111167325218021422664898237731037491947978193153785618536657617358715142443552868882363344956176714645263277873032105458997674777054947603583919686151480733554914788410498784324827981042598354188818031070263052981425261850277574358713563911322403456101057826106915645580851945454435427689282060750733851726261729247676915487597516789019970640547642776102588680761670701416285407523234816598216211485147617138403908365235807082236290706761242913633597476447439043734285561675111710426093884019697961822705546422699861435512261288052898085068061636318661428803829283413957305631969700030467375089750173530686368786726039156830190578172655425265856992129905393292019775154223703104783786264593194330678605983242269653394888134841831261567169075302353023133516062169849075671423690678898703063640845862100517419538507594347375538246438005714947760314790418623414406752949314231652027155321779860771987260155439249860635564449458992258553233639832282433123578502817418512481498954271766298533818705693968774314049914440265516182144514782018150556687564723831754059289449099794997380957015882196087761337962661941808108423186161071273671811323347772751654939778477697512035725597941657111530209155798481637242914072307912345271035741964475831730657895478671535955620351915955417864176977857716858497975906550298041877337705548584617830920282706373747603280641751737803640816808257747573824220034747512802528094775703780344608205336385770050854493340225622521644611940749512599700148979539027778847245819447757516603853403153034369042349249001653368961910771575202342016999788967892902506666579500677729599198548931663367767255066168617327465607305314181540497138662979788570798542640739654577050773057986933125038230477524188654599126958149985532321887488437259128896565556016274144920975293157998951195600671816126954297460626985668727704618577540655855712140362325705904060044803431282914796797924571535745700265202636265551210254908831625754202530955303178645255212334759090630465333563486763399254929499912858393666314578780753447585056196048177739188908984702913163446577316769432033723353781666603259214677880248234862175175022538721238419010088657963665193361218946542286484693111497152679315684757587478680554101940807992657925075892371790355553423115707522708776025937931883549659003639916590676040234426068408534693903601753289299195186401632773438940971631538139802150831762969715818970776339791318763964447924794504947499404312388223438120931232844320636751249738743398964290552494451262068198468895986816093589958015500802027399358294583382980021315845166453598418634558250352886130536013825107958662977459306537669088779659587807151262032229611037481180514354885691464222738312812617156546756606407692473319072646295015720429888034865154697979377095270244955704956237910986584591212357799966095060046008032154740537598825700029401316550593495292097613002874952336400366949667970416117187917634517098886961050570832519795462408212555118386879678353992924563316912844539523707335291747673572086994747816513961443087941857866691450679793622894474860599673636441604199717704985842810278155553504811264064896892491824743311736100483672779088823685718715341568950093798649822580442388560112743825511866552330225442408492292952671302615243671272964051583671594448753821332573091852342363589319404189109935731065267398257013389633213813872986724569765535504593556003157364554621853276788577021543803862448287020459003851246476842556340893954321331766285895040749877259760983294255819820587757726326441624483801209805303267933959886503127404552968460230321624894878249855413478899176803163040586304833650340770995647666084283079160219695503568082363500694018078283085193595911986607763502152664154032264703587907564203406193686296753278419656353380045687025168447528882685997602980626655618356310205186461391054731903845713330248813232584269511422267556098097506697772011961067834300442884651251476617079052358417634126382296352449122639742858693617901290923103593511106090564785454289088240324155749911407630713680949784071214519112925982953953030304448182958517923152166815116353093699608380452884994380095679105438220952563628865238219091791379359883522984608491304519220463292953848098338067921107163930441483142764051590957457893522267248205635582587587646436901347878258150618578828594264874842601477307065450672040601621236177866200407163789018241821660540795353045597560902742780238856128487220311794930540627345755903577820333387633465639215266293180983930097765328675176129011056663586959178029736284414201890455832348165125094517351913701323534964239961937065737015921912296459643236585100005497580448243875854587790219892283105979272999114442385227307627362757980331128692147633555251921806769641031169978360316952893899519420068760172289211693449941654601977836490307146902536416083047172344358759126352304839242774947920979507390442481315054271924420629004851612962131809358409400820866501686475092896571943538119441157220711305292842925552877976536023459883455907793895196488465154749855191056135438767249865346542083607935835554157378646377454116988183593660669835973536490942132030657773372462066466913910598599977008416538831043555679756220052787466283105573391408530796531764673041582284346377041416634685163491939314969144673365771836149332718820365743245145801962717335312906927363816329557036993738203522756912010818635140171300072770944134282755160304437392605057382498972247965294125094797406073080765353822207451907215068715553135624386711658438517781981979555363689994299126601216742162881565181603493751290418798119379543366447190289922141872156037553833344836468486091338978619219385787178722757013652462233272031237076850108157394617979287095234383174708090734755729014275632642896792131268206161296960539554864947932944405675303411279471720194881474978305282624655899106522278023800152226935189981546738049590263417408828997658837648711127734389285959135056155075818669459894967898393370796873632553903382472633566060116855817829018534730405246399705346305563958054365414047077876899806586436167271233471595164927715584084911115658034106929298878090779456097729259400008056124327923775023824532309220979213029063500554436645592110623896268849444342591559503375370808468440109567969293992854501366989618245655969735051528036304405528217558651932961399686012482734524065038256922773235825063626185951512308702587053790682385402214102691702476099362436003837357027531708491016142806412477000961638449056920019104539309870887251274222120230920864928958372760870815890625084215096377122750542688719867853086045357312365019764712962057035871854530045565516824374359090373079035758450150347490236731924222964614731037066742415217766229576952272202787012776478981510609148798864155899555488386290438771377752169168198452396793318765511744887347124886001045255458797001794359500757843029657288451355864111170360834878199717492736587926429664243232206685518189857770750573416328251380502441262825571110687822804908552524405586867624983404497338484896976017014910216412477376039290699130607606376992015950489412069555055704509675245336162117028526852510108860893781718557099940361664497873386865652320428764432812701131017901358713626859866877692185051257397887940549998734655457366041482137071710933653494568615340825488227989922234840933103572219403321491385526261936863485456230622006689916921917135781357964462064142082157779988990641578683815799867668007317861914907852918645550061458610354273110408582382389519683297253889929691644916157353116748336172298513152666615550479100515385753072243937880702580434563357463360571171696096211553429085137591675324890986593909775482243633183385642086246313625756131545533042775388774352447117782665072837666821688533824848808241944127389598387762415619724768942449557905617943698440828994319954245780598154280520688898319417598070419667282727523181010277631851104593405989368342311780133127290325830810243166298255992647629330739585654474644043925400580105075080518128229051766170051107754271522089293649563800406263193318549020287506487761182423605942066342321866566237556812041758290763850676598860472114216139152246890343935413788450147526928239544557191132667323482076585674632714654451289148049292695971561149173147293703121875354168954000586387644791518053996039712817699750133048488168982220199067575749729663541324109857264027970070286922711887813599420408017512959287103512811053892991190777860459715547628491244034406045009079850874487843195616011391753195018202638525446278414247425806964672154030025879326367604319040798339688283530728225028680468753054457475527070380459329970158978865750318860158216504828313017556752029544432089850613444505596955126029746355466605681361716283992786169310605058490967724562837332044126852985517184793156973162816456208457793969098257206049134894000740020428510191890203712445852574816830281087072841138999441235549986469344967714030497138245131295463583265566864856203227461821949877208648728861080165132387930056855672715354125358495697179967870890458344630313700265557935575311920568026032315833267311537066102906220408958005688324656233249764497140512362027837599237820082797987737463418887665215087497997772906853550740321043300634488071965055275913637315268119075995183446781119249702877546534467941915965386263449162481014971903844674066467341260783852554119539181079669338896905802546517328441740158224794842771441009128314660635502645907416115656401219758285489959015521943255356660662864767182227852341452484696379004868807237726351335559980914722668558229473956309824134462791857168633564066536062974807698285242732750474081577652924379697392055310487152147363755984462146648924153569682967117279423488986862523150723400832338507189039350542929139204527978386315268117243144019366170748848250251207216739993762117805563875003975680242062204626702512807170231015873511442631237139228792404399029419016058901161257360860322820482473902439333967804140986935051441560957423336883157117474967436512740683279157776906173237639699219127933638792593870765471848395450389953014322426516218131224563583762627975750674295312357151750695879562047657696879803807230170371801178880876301398599696426694645391701399981954105318356130954394205118591987989477987996329495149537263791823472051301828643950537075790432621414643338535096689760254778362378244324703043668522707080843505532481953296961076121135679735149929526250345898908566432045125903077511794956636294694216930403118232737082321896023921116607763099772332456906043692376551237958976593458205574066794426797244871209789821994239923751356131942978305397627000183935668665383337401678926344912402260092548225055438060962365469990453866421729674521894301515346814592096361877098932575837381827180976429582345763372202906566183366888108328028797506573502713126059162236428622790215755397620903764167291319977599858570571773967287786676262590122504561498836855343238920522967540012033935005738234802518642985509848497507956140076233635743629773858595748375744524364274527297832816645102843998505618875248387249324760958252064971135475118607136620448732682196836451507576810295506954674740578184725485733002953990726636435194847897476821296587000479376761797932409969918546090190074225318510483714906049801220190178323300854320366860136480137480798130266424038352335766676302790110670372831368714119654136301052713032743742396939552997155268522879258263307313752576140608727050389606240119050606890626069867599105658784294778561540012717223302077872087040684154051043618010310799202684748670091254211057722493281830629380046056537790940930804191569632027176595708547430473557264689352535505167776214662181452291798364127504367656006742046120045763902876158314400063393519987998287041466757413709315892837270785344014958464253470189073759195732653004348585139499643927643303463349611766799544925204196921369489359067216680823362010020846092362922979650841457962918284007649921837074863778282990335233659457269476054261494645044698035709253554083422810317881450433874294440813750955140916797223546256152064640249599887872750122379385430779810594729142844220005773664880268955364257780374755396239607216191162905253278589000571409501336334993130378344851741702418354435467457336609402467285870031647709095927724711053780072358759404578820017100774772415928084613586130059109669730062199991240491581883951006133347023687879392054670479026429313313624510672479740885167884880544391058299298928659522822651734585759601310740401480009275323888422941086903025426475719911628480679748542662501268783416473583559476043508314060103035572167158520493997222929942666608627034607436014609736170901499554736192246067360029894741466988161636033218440875863208754371722850382059818147061197066455285688049605815633179868190223871950290721933999644929875375930801079161037034105500496751289114097609830057333371953372284042202594797411386122629869933892433069041346596938135821962528387017639679340388796286473260794363828142383986861845181163614571018431818028404408377918564700054880455962486731245247832247691151771913819989612719684059138244805098800773703000788989899267124751866219648241677555200596838117996818660816655039020864731945538743550064821293931322721464092963145723822278685145102314020427292151792540237941277607948732682318102237733722918956080093873752744963247550787965467005361013313165569164706609137916101679030247108482676068756367314733602631114218804933090699687577882616552390529928057284697604343147792686454700012849528858918323320543461580612522602643451114367948257131261027080120630657994282653274538681706355859949042372984557364198857206296108868681402425908667808451922573900584773499722690351275086290595760634738984384304212450131539047458755771627544523995229133602130532080648280907833464112020741912864937164732938970707295927674792943826769358551281731843892782959226620219246503535701453381724155126055920511570158033816213984756458312981465014217894471974852086172492063721362067327434803195199219191478041748687645478225872993205693507647086927443786438065454389361781406345169872623582586037257051675707083030742931380369163291910149461666620338264037338517582054686244958329165287176851192628898012603616966265900934023673641578888688345504308955076219587346317917859234201253906106630215486738332782418737053564344157138993933025594384031036738725199460763732540568877631413614741350158325439294782168031355634818336617896244339341820049729151783932905848646140233400710280279484814940091259417441554846116585734115560013733996530904845313122324227108715711883157682517841165664444283562870223716374296402033524288806913194412154844659156403872347340340348578367867916832611460956303106776815831537629835184419722203673809038466579773881292109175059552697825763550625893367270748509091357815130829905733387549647149862213609430019077845780207998168863135639906931435674158475548413540132433742998064224834654531458476552391221683345877111789765525131604015672719679690897299443151959300999515124652024132410146122148341333121593997618736049653201393503233778640466724962988491847476354732452925819256318768495218235130241542465983965680116583419526109935973019567187541075781910723906812384189373371968731977030909417681656762249954290877151538685175848532937005134800883136609915807093757621053581419613066287752119269706319186944157433751784846098367292861257172357237678658015174041037511677936426270105920814025530800693795632644992214756771237725248150602071349809704035947144388058675770700061813292149242918015800778303540461707567863017887387348360713506252161375029685467109927728243871681765543892308790160903516915471430120736661650411149589640571365220693260466872800589432416599576429483687849264900196117005031734005442011748592241707961136962538823621037597491556925325392885644595088497321227132981743822677111442246976188316244318736042557917658191374407204730093444067005304981857112034354576581783793930411864787726944800309887485116889717248074718523879929467357685058247187604165196816784786386439672527654453409017204489623264430532575131516407626769704261994583408822821015892377928601584864631097789555448046379460551580632006433804985617909801185635053146864734678359766395596355746452014639857080022948929086841537722378147758304668612730751301023125802489553292599641723182735261718291559012197020879955488368953780602337203451421176742742580702580273487641270654713948431134598103946227756752536124731969572057446195589125855042773112881485203970146914286785836852533810775310160259964501835425465566549340990106176952387700644815000901585049855177708052557924163487596293734887114036060711620338196159485293867108392004733060390804084017325976448912417409254076531612535755444321248152673753021446501881150855746735044475026588424294359708024263963276574175453187973406228030907605840733654703509620212761835026817717816677163428765986560564325405987262897459121172885152696898959089957315226946319718907432330383656056093040172043736127889188324818314154997181048948794234455541094025265273786996752704473196450078806622823919687389008705211178590254832801825839242472267283705756553685372135954885243324280515364482518049010652413159629554236488810209026403991374346756271809270195173858335134989870626505864249348347951085313926985639639275736112509552192237218015574218563369135831069931858697672239734420636917366154382545252750727382508098584303924914830882975505268602828589625263185776403438382665624155779507969763925358428215562890624085922951131493898347711322592337070019621889682702617430492589592507394010646308413768258411235262031179186603411832530382787347722481675183688956644591025828383407680282239156276059660141275439756124105302621329038567069781228789510668327036074268613865131175928758680700166987582503751159495929992670635463264816584485521329693570601902849812034091318465372824067441281437419297176901363187225079651739871561441350492913938168993254911190666191214280051982475286605580978122715272242576058166159140823808973063325622445275743872273986738547473031005915087859494837500848393476829563812369980316172756559166461685357786945764934396977060431467942405676979273518896175106668023855461655994452985960676877459241679610742190922870644226656322049970704521733425638560230654233176359164370287582099612748961208866189252514984798018564306940812695217784950106642337489288088081537468001902625453169906427633237378448529486376683846927726724332723710627081573003223579555918865986024791613135321019346505775988232144912813669762011449620882708492201148153039403697571452691811134627264716622039704660181615783385096290138263760276373320892089539743403623432716035496408575735079177428870271972248421347535027663814776234274231188755886983275718277445473429894489714733644128882027293265367558395352003028897753032182403350893034518082135024938996608267217733267163836905196039518445928070232722428356617379780856294587754454621465743842760684030874279396939051693958809385789430293835715020314909109569128235632729717549893004784851209149855583900735592492644387981777702010402797514502758625084107462121859771637678562447286686157290381591990740931105202470468278194676459018359674032650516776515656172717531795031066765144959273891386833718612654913576412262207145173592316173106850770712421761939120241165071216266727597376942862192890928085272576574811980271277493146046235410350304631714437363584130895039389774909471554263586166258047509116230186934038510574902242855142657813430498256572161326159371441240208538186384133779369034305320817274938291054917442064238111154517626231446565874174006605078302799102471194528511243465096140336639816420374868673936212666546789713560283096039809833793529345820711171592883021024922136321593426981439297646428860406417790197449022086184589781009670875192322610567091184957934183455325572267636740777102016311706266024884740310287621543477368644537538626179193981198456008557458689918444947828820021742633242568454297493797524130142250833337488305087349421255479182728991676708919465911463836583289977237351452821718258064835894058877324766873783476581507272410645093860048072468790483124061632705101391240580957270136239872303429992427520784946512700749394838895617874392705848219892491241095248966600087464367550936358128887533489397468656222810092830591681163326023060800216017496346513010229763531944826155217523119713301138171876012315827389575020231498455024200843093038391841998779949614693593167185593886764470057228005687759135806567584178755493352710527549780398635556831987223172577029284325544775715142316395035140228775247930229386377750251941868493046057916908387389959589586156278613129378428434744073144106345724725663841124360015637994521231579595669022349521855699898056980543968590328483421572006837253779768236989804776195718175201051444906754555110257635914453204471553987926961940160924709749843451966102005748687804102046564119380238075585927208030356855097972037000539877850962763766497326381151360029529810800728157661195787193640452352493555065299535364717318257159125985684853007847092648144155387464550250566931489455079512606486096711809287073871497231143945008798490053507505235981112869567161423528608402904922453090823636076921821386667296630680096649945053093291030743687850448227380077045172207216273518278337824087352284745756850443826016270886267796128510243333232508932913148606837440338323501000488362606794727028396849461443818369931420417284529761227017092514477973887625843044534009297687729180417536273010002858632512161416677678492215672818443821048262305769441000477730566474439814242949521078734295094902096755246988522819913306498432417631277316351453242084442905198266758794807978976579152283557088112621834888039773046780671991144936267139029502893906157833592215262478296191189070994184787939971657751746267615143784290060759769695528077633657649445461065973677773150695798639572693589008966208074629160563909401314123755188430845560060946408970178032459195144691357128134472799770322739877748670138121400489353400306363080785948763128324212464559357105938411124764491703502527596478164624362502646176059878045085568202931071106890444104379774849967095289349342925841277357742090072379873791379064727290202750696681376628886380406679537502793336195867904238017148440417936813316099319685519466041764232771281823267521601938880155119389472705524734320033917414344651141696045077823478607001028392594775336050078862873286199489039398025934347551536493230228821372400421302907990484212986938864926855550194884470797713517821518468670725428214244048788340173549108744350856542796583067921188298979518369215466836643422764364193641913921307104270648478450806594942903623084827959929189427775999921200070092987629999502824421110622504283329836343700704700253824617075677377810842189836776402177252619484536255501838851096599882435588228051566754741451803384213430443495687320806389615401518897966701775017330956525133556964213211891928776785360885338225166327217283001863021261576315461132566990966047368600651401691764119368681108894055102569796005688985822558955490237850594011264674838081812523182489226243866940370197511953555283049728497303633611659716331283581391649076052962986111353165061805202295186256872921386747928450113710532828077346770656259277967375617972746601793141849759526895680394572983837033288030859786743932388565359036205075405520614074192418803696663515933948183059103952171585592567832674358621683563258613538331627372546326251911527249931761444263640489690741665079853073851553254612060971688404814778791835471602836248692893990297498395338021212432871199708148452972202673261008371106131874832697903349170281148003905406495684513586258863910433954631240634442874906286751607520970666685220124816964910640632942328629031244812059654450045575059387615095542606229672554908434681865339645023719423522258293785507502558089839474779164631626601593943753705719730862132770588594005817777999617003540731531061516076830753130812490369726859454406328438454397608583840943865034069003280778528045786225803951637474855021117265295285362646380865143239708146399214397133780273042905501520515833499264917348047715671487156351545880887191312923810990085215368099779066561245039717577215769500507758159018000873530855212160085828643307159327516630404456018006912337976248487454698334813012305662832442724635229744595931358186545151467430898341211689220334121076839943406495904671164194909297562372280494299353973241290938961702038050170630821557195460612115774066263685841931982032879988441593445676787833843543269234382154801920805281889881936447051786445460232377495146689722603178552785917624677549825885659921602783755907355722175503403711511696993562545504496062872012132044441923592536355288912800217453043969537937973901287238181236088417334932588601958921688965686943232215924673722458601238292635374040759048965885468087489545097890039689590317629439775672448806016994690698311749438390111389341892437261988657308678872204119388580771037617704850996687380198103583081003118503486032400360566170675341832339587484273648548956938557259376315289397486821155775427850840012105529332376173468180682421697310266717145426784942184395238266915562521164572280831123541742225287234528780548037383042781345074977820478711734076819704987262873455692608594467387271561906111117211446867723146516532483735497353309516419178396680408685166386024285615741110655202921834407258468379802879021480682349387776471634958457832999400294711199184483992645006180090663239303462829321529172004396859620809677348523761987330541805367524825725051878188413383333229042643466320537804505770899241806861555493935422354152015262237068069354040815777417168486578900814472184471212981318214743871470860263452140141544650968409335207090207919886244328817943052837910360820461973872985218234736006101185441440190474755583211501429111563736593427805237611304557658216078852971155502700627844873242212671142131049100742806529676920275440602665132651048996077319762016171606037430676637714829258216283137260602883674463943391092269240135208007681384250746505674089034823761963094972927872233685784120269459431219319899362208472906638979408063349405734032404898919503407612499193890094447162365615054786210219647279856432383738069621704173939279396574365731757287765354571481642175196437003518204835512403426222332520651605330874614572066245617452667316875349501055764636500849916497689648093681914681987504415509623652113904021295665077141776224432632256199612165264945218177500568335471267787508567483099684811647017433452621649031623512278562785693890296598733789127768009258424716681296403961517751265022744170600036256551476209714979301395589563226397353953478287093351108164582802503019483467858094031563394722711965371604019339652833811780599667734926507461955514144716892792342801517102397372937318327945567498949427979571175355163391320835039795983288562911772261198184827386444017395392379983451439424786550293341000115656048506022533230350417571633810507533354103958578899491221378280212085203142511817896304244393119017791551386654947667632634736091854146017956358104272031016236095497646006252995959941506998447838013263049347831238523382946861777476648383340303554381080838244861465522561237124679436821388048086713968367851444634269254788617690446029630913308760082911778983227676495977147309203716343924122991449872351273381083390309993267483142815178765661924221708392635888152571766725826924236618565204755421368465321642875003222227247609207817475329989763976987991647896709661392946839095080489744013643669380914063323685268880075768042777749012923009665390276658783080106490117636136868725985359503753961075821802883542117033967401099815856541059234124493185078522077615873324760206501586887770304830170655013094004765288812043409763754972170491851967627614419624261886245805150375044059625958758960919377289544489067877438112564292816288024093016128479113002299828740641169436273408849669241370821472733304133403913606336689449220349969846153717580273316779489582554153037716370848100583325511123696050429222276103400440874310215021166200371772689555890980830393217990738985889606373287457880824386017730549989060753098123085920978817730082914621306180527882728440033405757314223410955700963930931433503237963792919030178238027016099351962741335094019081850413139122590037204468708745859693348911785116473835910419117801077708468597754958091089219780124522205888607772862626324970463499097565145902896940169763291946527145395394799931587774766509076214578856860606086154789945059123850056709819655646416367656310804146246105741257771922771448504153231146160579888760891373027938406684452364409553878037439697136340954656801256526115987847508624916748664234233084439613261029711682835322282498999188401991564952188348151681612104106741426733664457625991455643014023586899035808355626289441687344328445762102441325050565958691667442884755560803463360997558042291646643213654998986059572489217489846546123730046685061874937883876210005176549231950264312998574152193345433629516869218510656154834501033622315281023973154966469657415071393873953572724816536022709361497544725936323172648667771478770163764764840287333505022617276181572223834873502508686806595223744812603345396123243725381044236589478394757319686434143260981364395785243666025630614300051713634557830154276083620975767333832048808388982517273110792360625372105075217255580305785609949246190397035830492097503587542695926456485362182758305797407210613669974328333654349399600086821827439819530856398742277661409219972435122778637254946821778655112182379693827128955885253446573797415707117128613774087615858236613947465313446300855697674083563334560842038582898953410024858154170748754136668086383119386628499561045514415072581449988441105597366334900201368345908755365203500295338775546042822105417291201400128644674792573201359951994134837048424404114847485063276563046671179091806531942800999910926393903111615905757039286625515108251970830264878304333976407947210067628953511250243108295934610954237530602900993929467875328792048998958889414652310894673612346777032413414162632267367103814377484972689649303915384588761093625629418246350705168262723446120520747979859754105732950863725077428706197365274014914842636563314196216154391290848421821089204987277825855089828715538304370888783469822387204834627394931197056619917868123875271807474745051626902045598494474223955938977120205378118900758976317258152677780706416383474940325530496660078981126164791960569140938719592546006949633541640811887498660859673491987796520567134121127388411469927287069516848960464628005065424849124413626177700241320505301284267110703928422207504406139162825205133923457360574549866001310770158849940552066806547236219582755984852732029644036280060088810865383434644148605363772918491672964320949984573972048811841800852198503767419532272066967029997618947050636570755454164120130368569798125465533486031073780316110833635984077660366075351933003262349102575769002663928409444779655023898550633236955216801088567012228861617901104148132058203919834156911127932850840497488436127050961122764066683562739930791900305238956040897799243937378516300061222529495088549451776045712421852208259261043681744152584591035136407725182326788866399733548008944742001468473540338302574714740466315365648371701940165160286285528699142830354402221928495954859999151522058273349878678871100427218291511255702868372424436354043071041610757002051468866891975471341574318415848327612110997867877524362944662521090033186706808953889973588446083424674235648052631482156822897149907505852185759561476367724099277088226960271881082571920918446437975614158886510943358959834413023277176905451988377283977479544218944970826033959904854884316849021680717168504373504153355314640021581812316073427344787062953163202712951080379708682377553890211447490701794615762113142516948385526067566156737175824971892306095037515820866401640262557832803444040778705265529963201732617361851981725342615541323479543051194169986750906802511542267117620228813542510870738607583903988671207948505916953528842252256964598958655769784884469591570088452777502056709233718129959681734217856601148661042746770632386332257927867008423258800021838458912026612783504116927248549448278289355612567709386959224553550345871654743840651130247100544511661755752173039872868754073145598910396651459211124798648108957962418866104237083984216939223207339746781692632969559801372811842773049407373255295242389901666869679796536666859950859440013375958893325740045991023841487686911854564414684686008915816020957839348873375252448446353902071529480807506918735390780127617718954540839829813185445812551494551664182621592821886325162239337894703116072542477776473964642320719961177085279629846135759663054319059262915786697108023617764834813798195584095113061034599559430294038099172624846646443044651583797936711824479688105476232415856533321340580020738523401177290342698298205049888083843262762647836104421727308135893395395729111546225960644342553735865118659590629931782370717411759520800623671576964956030141979900385193948349639598856760890482148767546347425232552150479267453134115796493981942624133706948752954036126109278653210116283723824553569108868748912469065043077725994463370242145974274714233112627688377149827185741508314987876325521535427675863914349930668784329031073177929726618172681605142405978217988120815153422425161613709161880930246720909029461102430242273934850146628249585139499898546144371640705480224525239873196028335154410849688243828700596496351262158707467685278927531073448326668188455723971279213533417455129182517942066066925626153733170286456481653624871639965622887230121854499125106931711205700458191388607978805849639970756551320857689249233186064925282144432697086082579551513916328738778194105474827364279225431417245351916417439559657726547469676100006471959849472449674467536772828335982719380056317671396255383620214027635056412146976613454469185912989391482628862872345121949921586224909913736127502983792151864665792838914743571734552170825138107977196696018629596627452399724763847907346727296914250035014706311768722742896841333812783424795415891661981562079018185373351217014437175328762593328611118072664787124672656798374367933416479434038264157930958958071935637808913858319785536115477523265091040486593309687056756496494232112804550430081017570350525425593530482763953347364322827861963077186544044681154770440999317673774282800647102416244432231499384870684817073785917953836121074454536453496034497160091387817669811602653398836801911073151612105290608286645839582490955626831854550777482337292065564094926815262799941937767000537614659458478024729382943044203340398877702552375095769416804158235246793940152812913395878724109477900830413785139628803225225507988425676859747225524150547616428880423153920781035390175570041338019309283454775524964747520258037711293066313564614995443460611830888287229522759366746108001258605243658142963192628135749494525840429752299694772727861964696671628777166851047084122430967983947960176255721572177790549787055185073214796573676194113572692761940893366740285620997919748460517290624704825012458655658323251690846125797478302178736690606469037104350988081521364910533574935554371551807370673050638355595879148476536554962924719565400360036364557975101512550084901928600136472918837431755570323570813753663587491295441393462702282040129261883536590734584027055751418373598890546991029142013220988429044443748573874470469838669899517740117050686266097775247585810142523277908579051647301757503504040435007914205660067068336566812571712841899436011416224717343618610041584598019989393822988672358449524025266535866470402398736576359396251023883156189721326437317036474094334589980662962727562047608998868308838581130322418248080347256454462556129903184587925625687022962344040469965619752019944849661554307482416408830678472656750527003447699022641226134667261935987548707354994131206999436080186221084916025406662238652710881237863202098102403399068022356180504652875834685383922629984391269919537293612879100741630049159742078615922004976797293445372174925248619921442935768587683273915716948828548728162068314499704098595241122607040012548733376734241459645386561489719114631421570381759372986932974424428796146010776514391955437148317304002908610391991198493058228727369387083345327169064915120479400625619457124330014692845509792742841843098192430549426933614112444363176637426006724363319587764740174784621192720178039541099682552327229313484599346168671902133150824617455850290560366808896252112777367422946721536155812743193941790426851133997478120277406112145562722158445054801204008186762357506628526210646056375726298705890319914050645288429303060542341183420433075869619963708538643581216295225832792391190278266169939912926252105044722492247514939235405600496575433926221719129488279931594809081683290741898586285888960952065429048550374217825548598181133372719541781029880172192763528193048062792493357116476774534170276957970047376505933731730489570523996326923359395052303436934657234651649097239872085814036291021749499991380189275548127195624610692687412929429967989811043193687766539596997975683005504601244065459885397048376790067876899346218285364331613624233459055892198899063110876864534435563263226083622624172305653637889690768947562637905830673332096883467068913837469807139146682974601466185208428181096464336484396740255134645216078060235665519292215566403796673288516378911030162027017149958396973229087211804594558791492242625649950225860574758637938549774812702363560241072245578399338213251572274520576896366127470778655476874337128146048154262612620047573635648443113020368554510562072584118174737779263384824587239701721594371666965284208540636087808258101740418119867243015235865830234165773739290354351215708567617767799899429385194150811211851553433125136286374830414337345412009071906307559515215459666270832071373086310252947025560986357296592211904583192175697732325264726644219296448532343796519537928211704644627536882182395588844179526711790277967190824096760359566979326187794552205889944966298294199799712201362272167898824882514956826100726041669599282478997688565061686745872324995125253866651913218015326292629611757792763312609587254014391531425540919264248300346066994128842142592940834349556050028357684948664840366835732030691647329523442740651923442998301018786590995804049404403255245455353491083409308050052339627667824120607085398555645864532587462248946856932477364217789488583383417229238691962428509314236715222482147770234935851512016904325151725392623473764712063164448299406386408595483347687935509634373408191604831699704213729749635615434829605878110604438436549300280842535210358046327196170885224461641672634396310524131948645748299037453948777000099161649453536571871531882540852312714362624632949002829783499873610250896541886833164983516140129090692595091881054908143661279639111926347414241902126674200568585986073628335890643335504630335260819077451129762177416651004728158920164426671954050552857363501487084319208890288753040927294526642360585897850149445759035653095994958149115114422219599654462823266911344034706390254995474284552077918635686223744651336691323420203380380158622829644974878281748802459835812097755128179069423037456419070013794716724454547363401969483678932203378984357833049981834522500282839460507615016608722631903991087346991782857256867805734744186535431635450989903188383781631596760625234031021381240134157151690532086643485845027277018773203941599589636162211147384333582474068168135469615695968920306901511312003111842266135073747208243284447616944724824766927135673232782336492699648632942130733112442650328630758635037063102071181958253635801898119959519172405802667898677732831889468899410765543823001873849974707133765832627571777938867488822334085260632564962990864634406041470306235767039764222483313060036587212785991074465232657516465293084415391848779662850201241116139939549702564036560451841868087546382391071362789746161483796117625167125430837360935963293580953908910065350266881490060490193333015868506030338141425476523936212424107502469621341866189462474464762369652460780931915480254882650177432542515007796070785783620169205188633158903819414167914938210580622498704220061311941011757517707397913762111706194818857988919075007945507408450779758327516021784704548563786864682709847729826591833007985553721940311474495397631751566189801628776729016168344047543676186242788018981077678302330242764771238475627549588333298381660968071677024815509901448515961175557390357024278834666976501390099920951854934338469663163499896716047859725850134903386128252841959430019301710941497011214160543998299779885042242959215868474314791064772451121505495666854391697699657012752747373845727512933261962931298308997476156236066596582764470397225373141730804359212181232808626404345917433275525636782130773782572320108110195867318517489421513902482242541554581193807049586509744042764195605357037732040901438455009654605849510235253212429998133439606543530574873171146712071279841776568800633019945532838074319083966015759307010792847497947945118265388373648690945419156064385435452658138558047512473994577561545975851892399697743507897135094057658113807358557658416873881529112581044797676255780757425626100293627025536405008232556928193949126872335421386025413897047523954558120350128000021533423922067366175705634867545499195636223604321287120403434692952258298934946216445665260718070360121945583701217944387866314820050808512924358486477070511241711402342924680315989180627878474636674487718597636108589288024408530698008578343487844019628646426998484420220195624847096747954823742712434972614896429839097083543958391637496445574063819606610308932074636238683633515390017856949315522723699463255291658055356370876448718846286235828578417190865956924431008853090758975815223956509031843278537270186328490757753847173561702808167916741143533749764355346113887573732978410731450885906855806801967465186421613925188833780540757266350264759858303988838692657547635438139190503851752159067861036323764568822645680265086983050042248172481510571296951840877456235926011528145554015403097990806145389227648106863592302279724474364145610782260807065975795982396772276480630966590574996241581237162313485900645624330342598343950254783564055332452372528792744463499885232656353415119707203861772353507560009885854997143438701543078208982636155421256142479743794755351622987305920090445376977779797945163195675932352730419071522091779964619929366836939874577573392712631019558093580913017541375775135481072623512366285444723633666404431985045645216430145842600782970722874049176635816425239026103360186236858270431263288872781192279676283536130854842691851773983664294144266689068982494101709119089324953907225858394286210714979960910801800069108437327783217543445287702871003943477876055635892194895210703492475217075394948900847580160915963505386825984448978756430552468057464325710760028886003379355067097207901752657072569287615229572480064422702373448817997188118942665967220142819499397630939138022755892988570088588918076257856001235876814991636931764644298786830860190012918806052668634643112796631143433310948634676100032845618694696352194067294605474505240090488791168681183283067602889389572346656428309326901141856885106160234971176944581213253773760411405043994647987146006021300095302976364791523376602449815900379167742599324459760869023712696181164623221678868540645876820659871900845195106420637359872937245562070693212070383261235544888166544912673154295732468452508826642931574503390011903681714192409956698644267889018763454388805634116957287581941913292557178295330144202193999730469146685510215132998372759939938321855446365873973346894582609949083305552943809931501294378691571006709061454845394343409195188725356796182576933655505048034523211060851468693342935220024082334117723915818120300563056279393592599717749513826822872430130973902807392849476518454518083932576424514036545979261922974627301716312361640612326203475236033061017532201422437168843915119403593773785162909567685615090236520224411620746960364626267503538984857242941542319806077055206173893982954195127148779531609531966158027169849079561301969063286912094368603042762060705645363313750644670288169887975600456192521018670934617783905489575385895379015296196395141791557215407902891153162614382985661608880476615656747309121776587138973544039811003546608134299953513214240435125060037786417262270371885225259090378812246431171156462730554222259087509017437006444349391951074860867579111309588893505159065551697994066182007228717580755810958506572391566043212470161892181188831491755090068663721917702247778275642541853378584308478481109597601696484240137580237884261671667131124857158602101164977167808858109029300142385461473178202939038447705729602459681295423412339417039977988663921699639166236178455692863416274878636835891630850690002382627667405819376473061122416879974868050732407621485828401398166865376278160992511802187583107047871269251452569088044094559564894969360180557646481115580511679270107215347497348212080166496623399927600036129023961326496799535399578068070711925477628811828169713157711369741698904318331384242689190386101441997920846049521134490984482837598009616521900191640511721591097001932111273342702390628052362770111911964713676292719320652238421368198653760450519485835980703709725575231217833743297495722204528478512144664037480778706928054173767173578089205541096249064156084673941992634041335754412174433519417446078066648003592134295805526704376405904233513785618317308759484884134565074005776815751210611898779732674520586549255063918220016564964338185939588167105662040242743545424409363236117147762301074404868683003213890756914324090216656818162413303823219947659862265591440777711350105972410556580128702384016435000789178302198228057827068973701887649105649556525060044124229190409382056191460135517605389487299104364934561126853805635231524711798129071321406429956854549737522567911495083942556561114857045116193111504475726562541428439927495259548941070063679542920379303307412568380791312737746114502166947667000823486531490522732629628945020584839794423831607635235634777386426984705519935820127551251661669489440038953107748586382743456759999487435343331694736266589655445386837718633222403313318991249340100083426249060793651772449025635633946364606395504825556660369300420317708213969849862982490572877390304678446574826125125967926708031335926677870951816190523117864544872481615482216254384634002893060248062055931443578861173980385224993506161454463353131182485645829132040343375885064509028816194877727022372176940491973632406984969742307022047574451744718169180231714253311731795891030983164200139703685855354838473398181222553030402280627610513907267450414893690037366936854343673019980113210899556629175363059509854524851556897091796502748661244162522537213704237710740416011753270853701743538582451033320272398393573436943792948176046819834764434423071057892212495381388108421296430303779698385969683417839342032826921233152041014055308429778502715363357710181348526627087870078689911376013422740887511108379715042949853311380187313087823058866600306439050428577284630913192125677650056232909165270141454460346592678579909222111404520820417902467638524269655764735535689949917857874326208094541763297494881494188952885835410833852158314117374911229748956465088714757018938104836616017638621425144124267327490406813708752593021299174798524835591522667080691245329976381421284440145661128376682995697060795336202209689836932216471840034243694895015082815721349834331000544193879713270183818293722932496884017461861067980814218010867201060145552127661673351716205819729000478698690812392983379338596972085382749715304328066242021187972473243988986379454416776140123254699622858511892922351738740545895562787309099533027259854372126632618896724110906090680829804406938743875622844734046512931105158939549844527088034215843834734049207505470675226455294185269390557709124873734295691103200767885999673757698733797226424688350451195042874723972006911695418097100887156196892658792835857066777664035415359520222057240353948164006973067699375845229089449299119006132522692188710919700352321958646719890166453161455022167963199538858359629761273637083473202666126059305403068705119146171461290562483802144831249355595902921023961150900591175400681350863707491198790122044086493193228423521734504584079045131780987064585871028809326281280232887393834965500551282226807193871733411497005079708787652354236740077346126268758317681897295380823903916361061977174100952097520310110289804941402050481006115965805154592686480463203956372840487525181659750880518641875319237523019954103072326606827583982269618330046309235339720787075363000045982822664080778296125454710949768449789444462218558216753081141109343293952759763128665667862994260348424122003774826491203468235097893812971828581847870170290071240684471940236638880008715745204131660398171123198181315461041562548263992389475704011521229000870219542008971198452203113644935664742093745826797881074921918997739614405928281436560594899501085342662662568547565289858597486488998267778855050675925192162873241900149144347818923170802188533553720272227905205777880880941788464057741501162233791026269241233202749093711731562164966073330963646755893695852828510175728919771263323520866541308617840280532560752125329740524866199855801041596100775476988152238192338615371563780256740624396473400299164905502197116175651596897131288185727921997570240558603796237787598706311155261773245337103820768364855297711807067934431200320818765411011790704688217102791371324841876606834251321777448154480160040052068145760222440839432523517493945038837376107925492478701902128477729005669643071943166754859558420225111519753850005071310668376090753520129938311499434640688339504112049098911228771436847432417202660806737904631790346374751575079838801900512620270501557554606652156317625225996657475428137732173578344772721438005532574768852421888921624732903780667036356302411756861400166223225177018053862713792376763984723659678930277970653161584194710969709999406767259658372034598228064486179101809199025919535801633546252376271425670313956730149500094036707802361269193292918441957930284479575942301821196311744183045449391616169037491646134058639894152455211774580932593456920843065288523207517079001917868424919706760102104582193139401410977918053938476344594009676862794590207688105100177742924936634078838529972019945115152495860790985807539085254421878071553159769848113832721312650508820640384207914453684024602087430447779582091347331395662585777441410228480048907990882678062603980371083740254025061594717210485172042117940183794663354844954280504197000595047001783119859545126322553125127683307018236261058272422886340177202260316747665518256534065189171402265849404692397804338981385101915918807893473845788701100641263593641702904574682783844572323813716818116469383095536876096178997177789239897320251708092456630812285242400812692834176948790024173841867031631723455210326092425821514191081131777462528042992624367269170143277993324165116847220002970815193382227119730762250683328203213062669379168334219405432411996792563370805261954759065588635901449864092933478455256014381471916195248696301211770110932876639040990534899470893315549074943522702952116838500030715712535115658980877296998548811581895613110645643255674546743382942500660136195472350143057003046954899989732626848379209545035903139509116865670663500491122389829431063289800326255563803210738396869948441156911850812302281666436425665573380868364006923110655281397060130742432095667670914684757503276589675831415030931337376438587520513919363939826706826930692096838601471359193444022600040489140874393434465618843773762258518436831997141370403031921255193340350960529558206839435693527682039060131900021403422559784683953587339598823172035463688109929054368641387680697485763377144212821822408544981864609550660765321304840187980942578195477368937538721934597861361529199190705138637323773316665642085219073348635982982971800390457472311471722742035328224944947227718771044241532747340494533622802401124698841526053190778899042102460654624350408356287148764729113955784073952744976652398877722611604355984402695945924199500459645765356836723602881666649796972588415031104312340616172269929023121110052269566190347561788157067575842809763136830033541389464665133896236318348604063676437487789090673114169437891943023526734654537731255026554405854940730037940615456159692916715551335246708029356347550137703359836358357821583335289620538982844818301672622290710377321993700129388987828422940031593956584499760856049096218804969197516158437864225565080226538809805036044373173857555583381375582987362216613158663594369317884056675801363113527475965412392419683895041888239090118859193890169492202117856632536620045459115836915881155235289820893168829779313633675195447254471335497766723743067969722315537137933333652002004586164607057743656875167881767053396163712551817140291348917814134784251743098427769960467439733029695678045403767545207895392342685361497725706662885012334683070551483363936434274947162676418410669654266038512239434411774168115409013400408395168371851145896713858256282889482298365522838390759604756719410803641299144115925268792207001652167599099234528161891614114145285379796433793326038143522197718818252277425466291030787140427873257687565572238445936498996518032871762750464536194650854068199639455020820613911204844416057685750960448365545462772298956232326550315209069879578679459847067900202791319764259337992290123855853899836068271009624552010274743882045711008273912161933019686645775868632671154245435603027540203334359321152054018385999005284091915615412405404207286798935774211416893736016089989905447247898269546095399781188781062170988831094891372832625689499612633248266254081919455021765508510939999854813052298859861686534120558481544722395478867794782043415746500916116888145657987204046387124094519204358494016597135398253687757984098744160796042700963178044414791816394818467603052348744600007105564417874054349994919685147852348055062913857962902052172340209315175572533718382659839039153577032955746320226329942157461408700482937361072351421516563830298189656281882462504328715712461285734157589718567157099261121617021072771968137058978960179250591657116462106245836629551108534971223048180161802414108808912902977155458708504940881225474505270015978797996066890851997794569713624014827412276446071377147778997045461894916989586201611008518362962602010986208270545711660664685658113653293777872493573953583302668996318995617689757257872724932800310487563507219195879538298864211122468687200116627984759929697021016900107995567193045693792956571452708640216794154879968457392267755108044137179341274496109138881472348069135965186677146982743383680625455453007581489072211813883759274387569794345170666718875993644625479670910592153597263612706175514122108317500692257818382497204673732485947756103870658282671578761220234806223432718556897688209184346826257992935463529605345150566346311269980333395112646493694396728427781481149696300340498467040664776581011481519241145399692405668786967836361729145576923713891723746453211897600851839083751882464175081382391703108749365424110417424030654349534984336959574507723314994400120724271603876983348563749934569152953957488639815522676093257597106740054573672617522416324362136582040527692034405755666193141626955436847597838759628393621484679479206365897853489438477743651789911562212365539327216390969473974430068868253195359287004969051016421104188275324827124656428498961446736651925655940585255991277996877859776025192488582870126141149856443849669020425619623172237445483495555943192260313907081508283831808127045210361088247331137460897108158563575451117395730703424529826227292999963333445246930156444052391858114924490890065966675741313303489575410520575204869355033295841532079457944979927065354018948478619335407299759667668101442977027825638306124233834063540991577031726946951092738582286176500723258049878639252610558668463128741947915026887964839110950288036276109152076060007979180816670256255423133683110453050548592204340597226827479254955342931499971727145380410229193618195468214644557949642286328489640196967165305403196374234708270190980533247246804461632662467984319348058039133588645058902306086589916894681700861790938782605522001447254844257494418331414177744222679558282956598934293248188116441154257113752460459890513498716557551726895314262756212436500388730833056056254858114182206555237689167591786430928922595571254844929809215788972004953503025777853494502046901422701164181887107571385132704111959380309606529634801482779175034645528667297562815418441030465965420559172476682095657021416828873077959516862148899697318906322804911184156356319652912775207085118870476240416057087509087344390272670628585899478485535069370102632656388849828128258459861145505019223537111633926304968085269306379022581740941330204937351483356001303923519137303343927387308518706188520195085135340639117517653012892309008604789323549833755627332509197813643047084989425121336497094994711286691695776607674727932399336582559371488670367117000348658948947267649913828355824579057089053803351383674915252340461861242086039175886730014110117159492686875586969597263209734603349701526534998627875347800737572106394948261936289271459428487140764079567897605602659254194024033579403650230475965933411565152499313260859380581491654938197525927981137530853533750318425809709453364675218979476333684906965106210248924337566106152688391515014127233359998241652800069104098131259947025139208210453491136780774358946358577558271133547594599106693356983088487275567150193366354642390873797802071896818456109099975769717008196005000502305481086488189739308646654534595325367904706841575847495080614687560461131902315588962372418662641356132443332318353768049728616021241894271532603268097816766553507704952392831654479840820421592990629011192878867335867734029881592276767769640515669576470538564767306508463801501317288401641913288574942716387222194434263364491998804079676117414082857763083770440212507491507754535474966771696306741020463816491601725024299221472651884692905105736118070580231884412171499495488713491869954876968040047818355823477977538717083226945084410025326543828652546571759622190150931802213556891532086427612558138873390335392406980818205262593090285496105519656393466947100634553709105035548168170782378788602507312831899302316142299553097075525945862342412348365748424379907997825879869533679622473395790435771016418409313248093756214087410303967657706987928423351336464835786355766544509052313538231431211567470081854708597437591356499698139685892380168838523442454211142396854885067036485384295321333249465140046697495454369495519111400838864400331307883532069451934614614256113249276895127503902339776978656760902801070987179493074954434080911545492963138991168519080599380281376942922495611946683838992363708783434563864918842489350491677796511726021450481358465975073803236397769305542099478698694354926666089125875315379843047615349558387235240891735503303183798134006772350702985650667893681621631956006987899465698506105258891325223753632751007246775451158092421217950190175314415157135020981701146415256996820045894486597180239840434644333278753636891919721268160624955657988414706445100575217987044187492930210271143864381584455713860704953247660040696378813123484186999547859799901388508899587428884221135955292997805022863910487005388231094184628656216195608203404548422143815846168369658408816606081276798361302521613824625842777834574679737513133749129959397013816942139068997873650467646275013392034473697860598165970699267027390766994078846333029512123592593566736001996904467945612051687527471879400564512224790564629157047846756935657646373113400047931012587910358979009734342811503165309968009477762947468740309922094244428471289496659364486295586889509290354321992675690401791010983946187046735009645205520035106297163119483380580930931036155165451667954347587102065739553174615523525402572393724843302907086267980518183596207083469585864553491833722995358050845727395340760758244443257510931653766848536373309640571866552860731257143008516615785571805588019128531644825444508552557952338120437256936791644143690205910371525855733836044914992780915719515518913328566656149219923205799437585500080571886876846771705220177293942732991963019944437490682919351165657690484995237645986205394286449116238468093171056456570561172113304889551152604699297672334946711669478226752727557662857723950692830983192681588900034130560317178790858084528144277337162111031127612362070114778780856076323437152559015388487602990086731316525812192146291080138584913268977730538903842859878972534724334783146574063572133248279331134494012198935405136627101684239565743809819481978927017397564354768192097523817941960736351542442784864863585579256353819569712471621073131312246193640012484688938063690830646650950536445147422432795116713208702859375145727007298101141060586146208402756121765097586595256912184161042457733829382730984252499231153637258111806774428637117470261162648672213195526041670365987512959777815257148705652094979179860814516696783133030541166508817005168804290605920960271877059992055924541236297729284137828653494220346652321584198975178131069409483854965931735396211665263053142634530964572091307544128537607689452293708140037259120521875750527585063319752261723927648933335029350196101799762684634596040473011534618403474159205879377785477735669333511215616944269519188200543358817119479099992541669552253997615984839182144676170853617103038473564100469470405977747088518709952748012287075935227970071687266674313081206213664615017035983115543884054436884685227386531893852476128850400416577158666475722266550203222995578834549637132204247946891816164273069324579632674428518435747640183690681799012806179170046883038380569794474115335697582390128918809283940503070549788458630274407656775134150596488220497237471066182187886744816499632124049580623985718738041118281704890383591572675809634032932506104658263913058912744775340932234030902526404511038144060977736983142461106139612048714524337664402738442421373273546277859469796736256875281984827195455096174240020748637251615248292386464247264170951953585543663085642283516174896979710583497053689227176163263368350629470234999989927956417009502037644459453145870788486649209179250593825152740372457666054743959834297753872314215285107140339956114317885763728485122597761673502248292931329574680829672929363277694868725831192451462676095641274799137295013352109285352438362401973692464569525126517451423644570565742304373194399151685775507092275444183096535629796028284905816973107590532748535338550476343625582223249924617936289774765764181319713947336316746864908317659520224807809842082484573020186844483958058954577361512136692986929647434302040969471389680691016051425584150583660745120468686560544934331576272186832470759335970266291638372971586424651726535026478414359025697458880567442541318583749708514046880457555356072295378492716722525444768206425596569155108412082653180782527254139721607783440505110331732502746422445675454648585284973593882903372985550164650989217782360947292693806901345422787823087065086024550083251482502668367668111136140167837783821453314594879402252662293451367920828286039014778341583540616217929830153333876205766321181231804406489647282471428739636260708913083303925967012904502947884641035943872758750686771933391272536087926210815576284524952859955495305769013443184035210408049758683898855523015716387042046661982481857137424499571422763324895211649116511845685419507003478431183594489166142856406017513762296742139043404952930086501845362097858015956659311591254562578334173820068263299013248812948165328332380904947138034747597539373953253019955037111050764698505418116232318822623478871344223489818983980077785226191203903026743106553376768035195797155087620299370070395864428257646191792932144298668706905569254123140502767381353015173381374318599057270505430250682457959341170930469803001950992101767109296386713518946521737648715426015478473335879129940807949864960680280448935254755209821877794125841533413137039502520054065108427319984800857636249018038258181731867485622222865027797443108476023655310916285153316612077407562394892564753884046104626566151906419501306600933183635146811820739600860624515040107798699937290518713052742295553204035554647434573906845035982942200804269371134383906129486403289385221714100233333494762445734136409415086934116145983484882656893767044612061640922845202611811614405744107329169130330933366609735726048600002931777983743306072617547342414879273005738941344414976755712651753909305111596430701402415607721266975118873274209815441318866394469348307912015567318977456031109521164219410092780074643732189003768145975172583692585504875347027163916974626167355475511317445450849717866918026281116114601466180721747144295277203404346060857569322661599391827174157396832432619318664177262205186505964694807651923599744436808838806063783104874491659799320365931187365378990365004773764292566511668963932400738031496916408761827491207637246632381424928887899619785109516543092082531471267038029892681653707888675628074598304097753889745980575671124137216493484890833429882451469559302227194880398446967381760550174555458613251869350253722485263286404132297707307529153665062732187535967015862016888914358407982182081457551577117070783408386553573345730897480636811403135383176499242051813540836217441645745604265180041885634241746525498026441702013941006798363697951185494647399764163844908179409401044254364683113437973233172520550690786779406394050987008995843383156932430790310223515489749480471929021228471911287773126731574579517862441596989095166384760777903768698238999562442248804146720712492901822118723624418761982070658343468373493960315271655288193111193673632454889795386430602488892236401008389462609055911843274559504450989983164894019422046553041241833734729211377188398307257152285518288596347419012759426392797575482349633377785136073639173028828040860998084276511987289417437217002518149074122860340873272110111585039076003648928033057212111148847489303614188869155402011816413563316342208938307943535874173441807410614619564934754461800227377278626537087784531622277234087368526498365762729040061045250655793602650761090983706312942001448472226548270005570554292988561655337913511989535442543347750936703716382421681149889873311278162086043343405039403084949033613121362596617934130626508341546659904041439854842277184475923744938029494930519998612910920629093131553156987546709810586520664822035596156272995040292606408991929214175293907369619846163800337695394403416389461037067726488081181382166264571972071449098588258664163921889980458908250807819261945043790467074349985849581561062288294735377893294826263831649382019097135832816960132149171825672482797233008054159284011638321892865033901551307565148832043646589483621295042974060812675067537764177278592358698281429400362820412147857129904857082960855065067983598884979585643368358468526713432451284397209657173642452709762382630811356335392308170701600746077957207476431368905182249118024850533216290393415118756862185998934732371921476541529460910666887608731119973219681672954043723762105275808884451332460125810842711966212326419475712922205525857573490997492218974922037996437219650654027966902137711112666948784327668924561867027250237965812278450031896539814414167459211447325087127648753302089995756751874740678344811112322474447485961100901846455252709689140318707725717969688745473625527795252442667815637097861359480203918374126654587367203956872085337315258135763627544765192818084092832980818101970262394766291229007142984505207825051537525626244138902133581220853991039932044366244456166011080089114898203121656738140774030044430999975145519520192164561755196498005058820524926797124564372905348890262069629564202851336986201126066766194748130850064339497007188678203302171844104721584726886274855115153680540402348540235156382206295055626583041597952657594835210565308473794925787328425760592200653680230050634010318551661060329880472853895231976835418369342878467010484040382594851283888433906769718142033159053411596294074738619080607280028685145414095336394242368983843480774918151936591965354218872852669787520289380817534319133940219373218062843366631990948430463685098899597394430564807992612649165702876064609043123096602280523444891632765441025707206598892633969622323423049216612989119385222919303746622867664511895506735744506822935825031875642204608687556688417024997775089582082994488566704145924653508860385420926337815004255272911682816955503352852020235300471437831787535491427801274636464664955584882703858676703346399527884790062025323626249792137000034938339216580588195385683400902453141189660451544064866720404259134539189890655600841031867263904855017858005587403210852671079647724269713415259447874568844126478392000337430357468911687783140667877584301681153140196516967220269090891652683435606281276345499984251980558810920918715166657641060872508377252290077169522640694457690562427620279335074484651564854128530358402242420882985406206504412145018556209448882604020413978379592692225952661541765142274833594009425192355950807625128398620788321281329422011057281259485939841697616141637346994527476778334088687955727711385616153004969199798136777544049243305012765118241952293006854804462168365015126650676880931348086351116632783950632520177427006374615041675622496612425971263080699177478140202387359446906703385741870245032021096074264120018466788480820909942143651440188359355531441457709963187357571193364115417672230662404899499933626864283223763899989293624106810718591404129836009444925666402202692053887697532424116663366743451263845274822250885784446890190711750568515963802664575281812735123465531925455204225014383511712778858313828526471898654238800227699034573121551914907965950600957004261513812674416210841165770570672692717293357311813276078535627699753810527504341476470251203022941383102927933103793570987708482884513123039647461472796249615225830329438959915225519822060507532547185672906718377829491847584171074010009568378854403616756312977812832959155888802964110977914413704099355568683645534471694289971135575439372406602184432552649777688770012616431477973933020663881487796612467661292670847637864739867636396193615242863761292701401872714896320856660377073440240500725427881245901186031344779074286315936741069450926407475392131517882597055439202591898785097559211529479139173380273139203774840353892503583878797898655612427200585157844376653592600379850187458957385070151909730119757863424335550161163300949867245359667095620291975561720652471889006698033699441710045366025009928779254163016428683482286232433110475281388386421293808255359343632874215735742754048221244891085436989781480395257063586122467629352745044800569255032042907094295748687841811265779885307332013215809245103465619029405878926440767386093879798157531906223147539130251147165766070999858804080960615366270319342454808738097941127252403211539770534630451430108413262698811017342808090898009892501180391442275228224322551655700531875601708727074842074531838796682984909709514746174264289453508926502622881904160617385272652892528454932658549666765820679265139911560344255561302001108378504881879729824784300081742542626238927763563870438467175731171075778263224035742432917139010668866756744706579835212365498854133433595590686747220260110151690013727197785172752777053693235271163254007951324866342817788388149568835493185686357888050093450178262009787973168673038059732863588011833735549589873529294815996433189816732423669988298019659643454475384544769296036429780363042324104827224188654689995499658531742449597553004003697660908981540700511287936605351330290580604983084545248889627587101722250819800028624025768456231224291824438886472026653977069579172029155523266219077129722354765161061449791332441736501476953251108907414522890188834089822130955114955642408152415225499595649598815442703050218830337331648041884419863500731887854708999310062995569410868643396890759406806458273394987189707115950447029024569675379529819691901797586905522065958817454327568618684497792634337903059032962452429984107011761130520795668175006826497718158708274004428626739732708821179472626116802179730316533045287389391104871013208064056568228313546851635622719861540122715706319531441596619057345206435446077109763423403310388120204141970658203410425802178469693644332455370758720399683385660449705482661640520724587556185023695453126882578895712864502905812711909120227085922770318790312984535748876513820432370672972901399513217709518836381900856133409011406653690711272284256582697673334486568748728182558806392428189053542354423451397787335645284350384054338274463331790215821010991059325528843800647549088199881277876591890627554866217819902873985841186840485320271628280113457636295343204914468907813345796100000839625803912818834218210028277986993019160074796283438605235731819314564173628625688026141840411555184095348639097428534585321680990879697435900654449509750728511168933697436278562905040503523917254728043913121564470453548569984623823363415054246459819193320522000855175284280876575361220590547485706374894807085576722132027674632835037721820216794136432455603814942048042365895423754060580231270834913977305357712043697876493961921498455636907825021091969031072971833538747649935764016053719278434806155070708937098356013784056408500909062999616711392487330383191813674350138837094009306588135910588151114701585968901256385077528243731235200138037126545391105888443693560090943247907957739638000955056456936950464864824457629963430305953954023364261321122119029357212191191648412076214771821099153407431249280388048586562253803111204686506561317227702490802424125242882427489259285171262870414872792812928871633830378077831779911787160756818054681407067958666490350461762816417148470046507641113409110029500912043030891873139508239316459166093688072110507179286552483029833456103275117273323319950280221180360052079399845095715221880052381344674285837463283904208295020546745696885554661306820120288298147267150079036669663626379637307304581477366195809039851272485517720716293068323946792129760353464697005046432036723805405119034525310161347632311464262941041990715983040618829484381678986445711537344818596479265521073172387120549990580816870993099088924400949844043038361896566286989159322729850685208560088881783779763881234081701199562506617601354483309697289742772827720496093562331607006343888127649041321357156993520610434779944316121415389012510851215635942440859903732775009288130212140578220812720403683252753182768248757950548004336015847066976609672441525307994394905467064905069300626881382894480494501427313629950661254219392753569071698159402613236338564505086076091279870859932980952701089694766307699853358672343527474777544566153181753401268250801140094735769143966206902764165263571493980991840022631665222440827167811441627674323745584623871047133522870332825046852586401639201491792645943165104239783330208907029458857663739183883196748702958140435101382814530401081583931620372442370405729336265472173457224183755188369217158132449542000567858987141379316039918979817754989752019550345282397299849029727923625496856306255847067835596084186700747266169137722597765674901318335723012405662441879088405015172497252922080063141667670452281231529938898626259575705244517464833472520052331019027636072021033215203941019364790967650484168045048777442702519413795127958377453363028021621652541078360243746743488960731555253337459416824575552236470663231641119884929088437412124929595410790288752223022296044073505174488032485934732406645843762361029412357868722612840417385481906360017138514556472866823796400145852153292815628293428437179094346273288157441230336595219389286262908089511636081762062578160282471755831151981837997625106891579563345749957168057041292379836778318309249088386697255252940659368733391072629495549082529706184285579544314073020359456966831286812443697373428798253196006968128330433798844529262549912402087187287558194146324608490433441939754486991478555284239971533737073513937816422804853850905806850656674601168767341957533815324063561643877625879453245265491753470519429692330798745134464155919652592269088449930605724452414580172986180127338930681504017407011040320754560666053930073853766806159672874421584476195126616858393632892301607319104371890650863107302316110119855412788675449219832762413778801427314842686283067587892448864843085810972315513061709178787754046589163268460907424547845615862812539437374346777038124889034260397250722794039607559487652008054693018939328420184592384029980875020728217603084430271718634108521737148923377207945155715086957166993824982547920887267057026344751397130760509956693961603718017968988500416760579850747179347873965511582996193233845317593497357896463272680617954243894704012880094531980684868190288893081722102822511407413699314914782582582385736182592533667393017540571194382471238165933171929034755741345022908135655701232293264902479053760454070139467952927028933698262171906640497414262253601834449363043082019767251733058452852492068397716528677797821805396758417025361944968344086212280164534215957489179321341668429703049372844232224411965333151708108455622281287817267659892799616690832661892774862648508615139318692691366626696608472145480761884986237340345189530293899600965778347195770272183217557579902457012868910876282812038316536593009373549312174823791521807000370899471522100503716245650483470073858804270124848065019052916682843559331550772133018522143240068151688723151314961608816324896128043558295975414419036989864190707477062069798404047404604066694285379892655858253466146543309250412323487448055585486013402813308131855833353140163335850522496502463716402782597761369502574115896769983100965689523931668474395256655274241686471683927577509898438316078035412930608627887882878511555357101879763402816498219932459150078252137575919017187679728302622698349392185811836463676201198652062543546925808211613269665753911144521408578288969679146362643764942673229425333029783456050475961316325992139655357579026652965319687052726199103405917488384432116891328894994736033536036233570757610741643079527918637654759488203581602951390160032596987887002279398501422260206339629948868383329619513181143520594761347147966836341299362078290881436643083075006163653542152381164324685983630100822106923203083786098019303067589635223248596753041349286958970326889244538611078814811196517985712257962272710754822408072239852571949254031036047704129082899693349106002095716008114719843578815954561470217818359553230697957854028086948238313650754636934893513023999953351652509299350846863931521204308086379691318173512074453160532779273453835529289526698343582908039057565798296823262216322016107340047697857010686935707333480675095902068342399358746860160229592795222345302482536012701449527029838933208233226464080679201829857644903841113769024528845590155274644276072555803863531635458040408656077832212008618748256877064030807766939793735853593852247279852531424438225598963996529939128138715519466226784270769622419790912873814464259303651249394038456961430254383525648696628876675817950520018122777379419406834568068102366065986414009586546045917272697536017732070987953585809632687834377330633818326317188553122396346496348687665784865068567512398943922114510469650560491785281634529061310141556347583336364956814838555660723511721040436869589712904758699736736613191321129799488507495095259493074188522946261725957144880882981024310199394103410749392222200113438548828430285104200509867701208256565632728952485113183617519908024375524647651472415294571210884658507653776642777741154678093923952123390703368858144043538602446296153063080352073053151952505918283009304221785670417621762136526284397701266574584592099205400604588332808176353041152800797148941871270930461978311899072087976750401842803343744407148039251516263362223711347816477255194214849339067854227296319361896914696762081654442657676414706571583035606864817732480043444871494130081310202062278526292965734302115659098831027541400952273899621575071772302705285075801538191445064751610361209233408633563835701443019180790458167897573083221145281180807279360280938760377001838489760238857834512693021561593579005398606578063257870308483871111088986211372175800332071520258895249640502954675827943670117140547578444568082541522500368948099606006759981133827598089133304750735837143153065233894951746795151889032422444832690574785414944901141717216540293736993368219909446819027340556986499797843056777650485156789371822831606642868752873037413570859518513572582328307079611493833929919373851367469316144047318005340883859567299893753539155345264600251507859045849556149354077334349368759071476313863282529086184688252436625736883743793956830360086588655667924691390094390997923997530741216549168949445046946246638008879355254262354764365516342187932635442806435668387468287791805705034763303687809202424373177699053537413925970827688654298255755843717928378193082114526250938292188087671772554114702708231540615533426331641235605518892480503653211151715795953989728626929040079174827165220823464458551647901971053469255221518984788269936229963461709691202125850272662040850079894827866534945920563986165284133613397104920459409060224028009897388717413268076540231413702109475866270100364008108732080448162196514800391677316396108403579619111439210235182990025407717839204590550780642204376327296174827812683563836486924232254723331478060390184619490980179795838183042880376488789691451280250664658633863440425459158628959214806668026061837648511972512327320365622999772902865482844809909486049136482546518174652020503843733016919417658545301511944214177283432973958736794317041935352696121762288041184409793824088376852918720916892368026791514897873320974363597566094234534204229095246086360073519480874286375165390867179056248137059506999201993307699372643408652979096874953601120143235476380624304848743562394239499968118177542980939608501863650839990585495441654929169461090089527573811532347759034613116078730544313865085843799457666186531570669987358888447561945166702522808772495964515915884017724690447893267925089968019781390902897872852125946778016023113739625927456763269332961404341785763803951074810190778607600888227294261188371871847723565141745436251725094402197252440279745710771072103694763869248665298266816909925386121509929020548337968222013679983701653136715380641454688134631394825161701284273667310163436101908799277372500917208779268053640774212231567223999237938314693230376137163736498140303435638227575114110728699249072371470886628396770971252330944734022440976174933147992983620600526278620680435244233632194687552979836286666763564538773502210679779775551996301079799729436457448458957789942179239711550956228708390106301218902018873081517806774452564713754927296040075011963188565629306412274944378166723550817370997256868586558054720690870205939079897226510320179117557158264745027835230051719082425394792446003046092283570100425994823615391784727777677587752203719441730356754383268391172267533677701431223693486269153132711955454216415961457670552170228635125461904918428174709774181773997896965373523411421275565172599342510257028059977403622302506491313977961269384065816639854547942390832723835918648112785757855108725433060414272956471413715574461724295031879321072686399116112272595312198556062771188662687692608290765661535035091725237911988408422456504485586982958718241052827494682032804541672875712641683237842617649378159491396364128115643686446897148085277333236868306281093124437380224262633518882554554866057091950131252405292487870107611911784248156292411381975311947932351309884025121184532415913229734971206510123460929581891699034405748277080952676811481707744248027129130925294526398758336325593228115604872761701492384690256680570739353868881347374773746550974590634453852661124949253570825187539601878214788503304766073315599018947797142591492833119254824976669149500573514157065426906676431688461676496615753187890042028602068194779478140392432487196056844319296766735647978035609621802323128862998419196730015906862585156840978133264964549805887018393013227982294777914732147212879814245016116046257433537350629674183296345126004059433667865643794357339685077368511564909363241171099772776722071480867838053846582358775212244480741406898557184339439651924031063777853380220736495458123678560260277673417371433421334540916778691104992077422310015679115386262799229668200292278261868827909048436008140232404174732179226459419180063532160764728257056295968745353857045505461662371934399305282251081926916448148663642208364215321707507050782711825804472872131254169254794695543966897019364726111602110353327574654041747152442280280157375074565649605046511160353280949984458332909954755717099448202996558246273417455920014596472664874674089931459521799450667810098629906205908798374800037063119507709594214534057333012576480455762222801461774633087065439588228403430281132505387057806219227970953772043770575942938956930813959123498885146807669047705649464870664364233656072908784005191109167649870028208932277058555671110843621575755110563724112489999888491130640255965263135485747686170680492970249667362233219703680067398544789008582759632497815687295475603444775901860647854542362253634874505860794561615883274946513339656747359713738362703419554941137408526964583019811722100173145349957912660041714474792521746482400176524330056991490076087473477432025057602192797188947602038711634551920317908139354581293875350757867953253583382596077691948794759879982431046037066678800069833676738052856058214540862908449298696384699221902745871467364416084642506644593115111267046342650073728984050046579629160476841614305248616082634457313026586738278203956664521054833309489020976925629740241702880617069725069019575894277527783286593694609750076513203323797461492021817250075569425410277427693306988549081577579641400627595979860229720812832883575313097210413642258116033766890951950097416976176763680265519556524929776050410563985365807684079456676232223800264035709801637046357784087739751651015000435898909903692867160595488171565899620508726228658644902893516188610915356569742869564295397830125102572822109747005092761535077421521763888000790359071984344697819223312303779447448815630884710017243575441626001177269194063849870554792506504168515525774995499605000678059172492644095626156669392253125596993556071048265718817052736146595382086913948337856617289062379604870859971341367479797321123975840895183954866608169023921875279138476132863914239054004208555483313919972499506117559513017214968140821523282705906487994676573627221709561325248612884129023731627564142586059759743299290175821945355191741699272265780545838810731248430562225900458797342859489679283484460305564681373713383264065910548179908932369342553860640674392018372758869386558554424445086126414774519304309651476809440638346871264291044110135434018048533415885508356243308104463785612827568315698832594384582188880484993759473185149968615464504413493213413991541409523189309228088794102202335867506319964569177586182806749269811343919673159058294053311380366562252343229931417728089562727359312653864872163620336614939621189975436397322160837623648645576053938518909780806759491097337385119654751095112008715557825109121462579322565695161617558633447296516177676743257449287187468822763925301999055892602089100698927625752919042351676122241808064665542912990386613336090221680307213809653777563851939294315978217974567929995055018767480468446429872346662122287281672786418748423887286865146372148001630986093983294550757345026486075820822576035480502268224754278978180865208110925682867536230995311682421334978570266899963446179707841535811172166116924470423035073815469625290125183081763964246757882367579308030787559218949275335736739834232515794781163490256384833171356345364758207164305742191019084449155640841626387526300363323875344455410618838148522309283047495022471795909992283394437846802381045232005707485713868565790978311404288961965785730460202784456408236257052613011550184082956370275474094754077196208043187942055045479329891333748395780172242634330029072519659049842913481657672897050233985232213998494485687122603856103321807002537869553492623272389014895945709111060509926795543331331140248520127279615343013471633808826960572789522260929885532182536839336889171633839060601851859694795305078862106948550041538343049189752353507310240169729914068996721840485988475295475247270061942181897568150303176020280020524116373952900298903102876610126340730098545309261449366402082141738135651682318087988672521552124494897116220866814618736544327647567991341688744347055301676658457329509919881926837098314891710883108363237853197449644300463992442649113902531145183668143111339458792349891237360950720890320301274490361744409707600644711946347346385702644893676195840235447695572993476413571297861409986305832145924061183180089537043738700642207592181504253996830211754780057351756952867915499910131818778987275053578900309667039449672614716736394570287160732312651890205810611161616337901010613502536480598276828346301272406772888137575259066820913105487178022695482766400397359541001973693692628956241139555287306138022136917205067924127607291127232045303655745966209667653257911064169377013211723243501710128574429045457224440821332507242032249151406008266981826218162094372395351281366455807213023282175756489726905179866683410935105836106462613308073144661524951834624394896864904593019826700868722660876170314522633836488268787133391766655079732813857665410116305155669365229179891115762577883165882409843225230433460458482077958114646765507967943601455788852509157283467350445351331548857975780328445434218087377098859298934334036652007119738270130171911593414150577990895881727627451419301152249376447663241184121054994642197579740477618971524919032917733040142696098737361490213812470113654005415368696531908682759991035399271489212422484742671436142252047204632802805592326780970362069003674221797163025854100305083528439708518014174962377006345713556311550988208338136129985470464520895508611179184852138419166868144673275349093617916855217780978350343423817269642535234174184700077675651283734183529583998463441137737269799560477613775851674944047932933251548848803681428549132202879699530129858877640307696450503028864031901077981474839648724806558652983402101107203504788450542981090053960612225753000952687479250200660049452792939083592463001521111721397436781240632705510043806708283745855635368407123291272483310064210014137357347208013444317298361034302543364059788630780319469233966215070161873764922994716965795553858918469870453292022406510747988972670442784840443596931165953670513352615069702657352460528535917611902910933753096604199945173751064207469740994834281340672909141973698542908610403938127894306818763116349740718977302340373567169935229121130212664032299377429989639097097368411072323974454603319247560313271566487362422303888615161872518345724475761374614409761191787087772744694131863524226431690523775644293464582066155975856897161288767971335059737769225545531281093315077086584828024758597026979364389415187144820020027579826808834522686025555989429827962071517886994767406966722083594898466974588723608002172755781539810865268870801517177422771147021144080525400890557359758285134023302982018013056835631672670363635505911794899840500787121428028498789947141679720350297070099118062769076306248256082637168615481386461408964837711472925784982131982505461940167672589019682851648078096043779059995218320734148795749021730161061035367303973686014512857381554440441319362233352028528024522871885725668533041970305397610745347054444411302945251863583806362726323277382664938781306179833294250487428661186620618985956068601564265887419720641862412539001893234311240011235968304179327760989995254593202049959159358206996472049645514260080141499331070314433333133779182592859558639045626743387201120522472576464487712533296825807527782624205974075287747312193928600807964530159027268990650418265285073656307280245048588661891141629921464614569100394194573569090163947809900678835683550340793418832168539286110863255292188463651105722131460733160738846454645324513333327808274723468975062012411882482598718897914752447994070336466182652132494365253176431333307940915922392670486064718179301861495133118543237497875621615001972921130663618867628495316974781344147719613986672073470981399607908452362988010149867755308263095996289962568709280424471663827841001668875663232307997249790129045217402025314190605796363427606863425000834204585010301699889498381200806006869576297703362037142938578315784799362383842592187704485460183461692649057685449885316522439035326640512208049967183364046289421665715681291630702915018356415145448530301042476008700820205372824389814925644850760500078674715875730673839038980920953392890057812027145518949658241745762798186263511942393172353889461306285065359196896248669446066041930948218317339665795116131314091318393348483911523344388431309158886911832505098906828975687646773413292660018372619847291304455110521870137451557822929998210348183233085773278472452962538068456694330881519306324973342603564320421346228114880459981304769933909821059953458322778570498505864312503358528556692287902084992314868106858735779774013513978413022200483324026900249556737056813166150480578947308266710941341265100882643009687397167673911046112606026091671143227978037618079256962311524447281411821057037676704971349583519906923119893630363147053438779450996517834459396615708344966902114394192056248695314209602504190319941725117855398869761327981391276829266597009174010387603556882573488873774595720256323182598216736188766892655109276861200940409143874596431810388896318187538216600156847623469387765336071666537828702558141898713294386164618056121717534799510868048790470578343720138308889620782390342320839352612121938196949498104546798625368952058021279110994992899296096532447099703988046592517044821955727542378011534282688627815969653308568712027275406468803452774208232944978881536065235424596927591348772575215999327081559876102587314039922073526101599702086852440763004878270607172348898390824779346036279600745572057824812856505781048837936298683193398551294450654837382173810068704574396981686968110949793278145713544719585786117315314233710536164628815831865261145052320200171715794070802554878522172038578722126710569434536354016066754889179413566861819751436753933385693118774011395156848861782214936061083919453301156891798825355366091962276759624326660019819773211309236074631862488439522117898004924352846413648475375377386871892069861469942885073514344173207050545423563015083346777821212871751690390881733024523660439913182812866339551559580660053057436742533496602341618178323348478868543087570396394384678676088505337074310779682312686259898213775264688427081574980217148826618358496777770814663839388225645774348975493987629058587680022495274537595888442245793230279134978636858792865794551661439855578473406437047874596257578244560376545440830913842446142037765426775237397597153269672338021507199965080542884813238769065037202871919521403624775965265144805345705047715747488756663812550409530636504602721958619702873549806430844122095194278686341876307607071549260417281862189641778896623163915538240837794394417444398649978724340814106933159671233167514259794936168432222601181685806047969011299403377558843490957872065170524683286631745063298955608550344607740766063527983109822457701162067660620663373865548404162496918900528929048746389777837527122356902383303166663894584294859427657217840453121343337591051419741601955342201774158925643016119631626245648852815997527497224374295678412989521905963799476929580726470560920624775287173244941364176866403480381846867942788736785610573411255634076755463036120534869372052176861831555906919653894205845067446163166156942758136393109658455983384831435145125730623760052853795221642057623684715558411264662170737749035924357696419344312929776467909835673155996001311859139089669602349643581572548840893749846833395093082699762865134441478243033278834264980543798457753650303488112249205167271849150415676002734828069673965029938333912044964615098389431644138457592171872163184110273561918037967224312698495277711418838522690686751781036910825642129574863449174531014857400861486894026577306912842943248198709404532801673909430491490686324763651649231030409019259104844108570450784846352745505837958136787256383075601532549050818407649385246455930605075794118296540915529427647682360510934777208014007543048213358439746685163834517710791004987839389466019750617996812321652579992163144114652333588359763055795433735360533730832078102400195712727864822676868311142580897062074723643366854526407454514618632829646307199304425229698588912469122416526859210088254228537717753551941714998735814578932061693682506637491510603708149243566728552503116807166929152169521270999698289902347354681251461199238241730955648349700245108197510761369373578536761541620165788089477354471252893230618131266795458455562636623679657306029049444212346221290948609369362831013783738329140926216708663318657281013160655533776143743855458905228213913784683659194241905015158164803064411737542587214554153665692832534149726880599380790310941734156789059036474214311269409017886941790568317093973039228493960293224132028061233867494275849877211890849273040057690183661103410519657698329557046132514535455467515942546579737373919810270075219335619764395297234665580213330713326779237762356074441735161117642750149113229651853311415302474214560349494843965272755264650763513173438436536227461953235916838152271694544588475155010507322968381902540835176453127840309193971433739624265965189484438524462528742709616844375217067114942887420969768438691810116667213442473810798325292847650494230502447196046200306721128460201266532716522110290377770906327325854936025813009309694233176869759268417678104917943191924447248819277006929367958568045172038805675205500775766739475586718836338453887118285669931780905952221991933155104708302092194054928462379217740825000476348012993588776204700735553476504014250490577082749756730629078552954633320200898100559630016830400922040755782724703472599800507122098070823393616416808627633768154297767618803923408987750571158851191429549029759906061910362444340481277452945229365597467310004792866536468562485642973720478166499159084823072163251114665354206335329437708431765880767383059836600144589669578002771579754483275240598817907455785329814675209618588326706952942095909706480784219826384932123156906131100382998840465920391291014944840559946038658652173056389636479137205842923278786664295853313285618046501916221507803316448293318875484472991893086482549237051593062300699428879793272645058471723763746791396708061465051804746036526006914722037283455336535155921822500306582556855484262369010651348761669468819306589593760399027264411034947619057225859200542823158487013738814667369788968277200701645317358401250112781708088417059959995237974102708211402816482668714073484691291505065711631484593855985309784576636853444310345188879538395446489642800170606096235767229455988887266602572044135430251084280274636060349733240530260503199342183970624055950757188865156995250460509610554622558470964887535286113114789629929633618826889048622347552387973356197999245796861149296283008748242986190753073446111090673484288410394839735736957793723299316546747991246573615394559177373929027151100411006526516713152154104644336134515120741344826460714880089869285343271707013146812552676095528200230160033915997226002761410153904498612248998662286429874154673486620728319587570370593447653304702087963662089188002464830551945817833560559870392042749113269110833715445634728699780472671141604707974763414017268381583050613314534456104520728303168050797656243484376077370747927431978822820916898885769048449094537213965800075754666207403888504501759782364671101043630755022949228007329280402211054404022304934243282850053814898661968116878139478180623555199418553102757719560383724696204364667453685151902360264949168635477040847149219478578569817892194142991543067932079814830072014340344215385294789615412702180339259113658776346656287313388965239838237822563019084086521303636475815343865494124169467388716909394594542480521095866052038076362299247982672061464589141392193477471812113365103345532855365773826471482692276059241808650496048933768786766861454148988019328963828209086293561656001029585741792555075635065878463263766766701495612898293169818136017266020116249468319502744414442973174339084491837504544128056229513552143445826792604287932984634992455546206131007893093231690738563665128381483227750364952704694988851784986565274489868308734244115838750975490935128605542182806683493627151630415337446001858604697866647117752557426210454622517577233233372294325302846430684966595579439437861055050448965749333949587755646417149598197323221055317974221845641006140856642890446302001324005149882090049981211808981739638707354724098270864633206839799058339828100904762047631742156611831068688247597596592641502123318626386817170015538007240987097857262454981999807863626606811151569215153194261331844793561518024033712902090170699499365681657629249833001059193147079892186338917206902747411662139577619474233347384630498960117107520133327386916948789475462937651460056226589134394705775287986553469536765981661335785836353300182696669646587028083956481724243736158959825606398955683691352605617991238097877863007497677787464699028951098635770262318053439835752237752956255827995119378964874587441037495669801000746859600293080444221812381901562823824403088600085660659729463358315584595816879162139127438948172812464189686563032048377432051572835900348059547298172063212332374529090038026937354720442617728568624758812211163232229749616622718065982625391640407347135098261402959605829868746668371475294859564853401037266241665283643409255078898319001497464021452861441838731887799286219803410401700402782844903965178015195038400089703103964917611947703599399032079191089121977629320181299468186048646286953783729570495541356787205689857132123384537643918673827812190882268142450921748867292254947218681350090688811491489048594398795459974189632995614934953439663191300198855462990970331886702822944948175635835729178812215015524149373617197763655238170504184908953083973974797893280559952187361591796419268019566442007175651874900519980119284556249548357762625052096969965476721313641872431854376013404852934894426050656721970864139698835129935264442119260781652764010433931369938385920310597288097554092847720137971438067443421654221178447983508655945466178068974146742142376779365741118172627261995170288903077879159278143886966216041129576909656630810855461348328528589072879510605110842821264158512170474238852865537659202798919470017088133195729906995912541344963996880470461822511603884313301722370986668673296901951756550631363839556550865624395607168699149100918818539984581454860982206962059237797759093098602050384327136951351105202464824681807325057833290135927248260635338486716321506081028166743564161789385886523240256276242305515046511985240196703419651419937447226958603098257877937027642982140980057461893170833486398786079601523208595777730586679494886938570976856532712730513357139893605740117973094053991619133424090638877659166289917051352134013370984139574916760761321912654982457793822707305206179442792098942531441682586182796653360280668081192531245013370605552627802078256907305441015738124028480709191721703966710486538475161237724400282502158593257589437660121437352654608940388240026882808501058608610286035034410452153569603946961001251543861777912953985269257515966991089625660726328969436136323609983446911698780847528107554337673943218339239034259613142553639754617936335955175941127610722075327252310372493355858389260669345951191720736074096026489495181902311323331771222633696469724448765352556615160865009346873069729112113826098224974893819236787385957397819546111845728498649648175989801524622349863833482463057405085190826742118180009667301983837592864222790021911042429311786047573480160442095858745315440514991082192319822342095117340748173231274509507300359791916849167548912203079687805841462452932953335054434243003674611228641475756555552380828066095810915653004924077508191685658200927604435131515328951680648230550000590405398650075341336640881054905774528780132953947791054226276077312857204609584187660189938185635581813845078844550508136743257973099355142056342092163970249505220067028160512481641943518088667839419135386740780543958506941506713312469316638433121326497237456860782059714793864576710771948462879753930058949967320389919667127290660762936547687914751997816769362144269906543619096182970820950502802453454432031001652630824844329438651795547152521101416489732427240854071863385803352246629893463965085297140304244476628860816205009810018196076606456068678693690692941612460317805296648149127604635113206884504288848091314250010009511889119317024438368945370260219462459048874861713865589602141776305717671256754746173323185749535620466991980041647937172330406118153978935907385730867228695820515378613215513545060290853626666815087581299446972194439400651534771425158827555014449235047457015335017765482914915030475948460093631871004465808878824789384753191548843566372069901515467494920834734879698677866140731232560461237580850828744992183521151009934919470565148711883357483434062213480951680858093515505416538519827960673454280204805089473254188292741649896560350761717434228967282951388351848417417443359240460419016110977847392403063461362829800199523555617705966178751557731125400935131060241153147871771453410230254200927758802596877516042282271958344341737712787407409006599952507780354851020903405978625328184762802045646484651546504667346401039232796004002365780565485686325926295309351569563926592296451043196692507939055521753192519764400013109537263170471216870925673155142593716957793313518756650246342298806214435389280215656571394173488722614157223473976277888218460347273218393907515369930148099822768126367437826812781907019001199112032021683220731278624003581063819919896387490451891817081136664081845547028076034291591652778070865784555983654024790059302057080804340204298319561273626542608599975553222359044007613385509958062996082853641439455405761965586557886277231449830846454154522624219934888290470317784629764339681648245508843052560223820941181450665694679191372087304934323298771038438487099122993444256333678136673176452489728235761650101420358311984903809521674720881221342165576549328792861592618715171683926148029776335949318343520538392230918730112207957010177102303566250909284700785044435693454776924555796376460006622241008528286283111157710185052167513020349134717593901318868422786368039513929116737998044647023906306240486019969515556421885965040850338408401557582097707517655929155854680005757407684738345157480849336155184643319998726701092884459740884194340752582971169748031501412647103308442763450160326114709660799188804813453222149286598048458368906171526189002291140094757037857761370128212565223479647257843993438154636911602412558220693310042080139544158994373914398609357453087705254471018587420848474840055621855572424446683646269168900270657262764380791219729697814048429488698243574660184102880534420939299666996517952801629057036542613479806338077939984621718666900544969233549003437542838944125861026011340440699752237580038721365546510177366202953594905056134980374644207576411799570501963343782763236676378281056746553465489057612263434456733004620343720805811350291636346771152676636853178226602684414736426460881166628742321237160746115345208680170011156361734891149438926778359182745668731130738620992955889653651591144025715245696901521629740906927709587923572638238596929230030862918574144562653822180781776520148622509712381117354197933538474925664439185117559010106356895934279532851431798566584977343146360162619130995963674185260475474088596292280968460184680130391914235847789461505124424789242055090972204724297978857048036677031542877700975221456825195125300104897909681681817154767199812171557629781573269314408099914010296894152961760397469785747386623953141190889311142299790582203576831339003989607644167917975455427947911350919090539180652158394463073039684420891114727807623870597432383298765502100770891594972937830022419167652498661673156808006158871738857603456143398834822832093780454201903878262162007642835306358891963072598761884191054628060505549611700037537225492098570176514511959036828852624350603506630535329621415557320950437907646649745238041075239613944727543019311207534340822514274892315373970867778435100518297271348318901200694536938444566105333213441233533639787907634424286800379731884564009366151118741942648778043520830043427748106944304345203408293670066552825905166293747408783527143682832942258389196744469644261429787279795276257214284509118265672554692407860706821135313574002858145744294425509369265961924886843920312241263047342679502463602214470450568714111657239245507288419469306355802768561694625297082494376430135778548611674605873203214838904974375934606188693637629065934014211010065988678685378679010790102381220049726520680838007735007795780964323132140884619639470453618946185853919381616567918680897348191171617658852507032425373055802322508798808066122299362715034251993899840541621476689519600915107201351571031912952815861358289629537609016299309576870434029583651136836389842310906644733071971284219362364498165491439564948070304758555389258745630167078462557279194857689387621719909349026690762759560979170273766058395581809890923578914875575706577648009629688929898476729824305947087732864591561778571123424481882030982624869542193902251720956666562512515041176584604971286405572223384972561294206590953409251289681218992890940556484966636378608720372655837169973823177575744338823887487590408754494073164172222205989957405506181597931065339419681649120466997849785868930934118428080142204596972829428987022983663793229718866942482101747605880640445978359980963153800426785762698490938520667200037153462280022179966891327527292636609985712075087868969805954388508744068118494363037074669444501986937323864707469684746986135236890517161876623289348092651502075942690635476461072272492456926071513296251266481527137389129602446416919984109943030301352569153556880435119336822456385010189682910356252801882830926901354154702442828256593746144757720338640395941001068097199496461836307025837477374972038483456672812163657069345199542762878636792040254701108003423419671575177860665470420361117749200679184097960608602298458787360533652959859205228598557350645759247020493210416384635791447855345943091068002950393813400435340631373185386701541395667437889203994578602522104103247326019665304281397644970165752151198477177039950802233081854024234837199216058500578818100118506907541943934952205307200822620493434534433396720541486454662519196787309912688924501080339199244760648120347552120955357888839540102026978819119102560075165155433979313995586261038005692961786253551936364254241883575025774652602352310742006420190761666779558983725073010809822827355608011765590500905423305027852098836428121492097636390939414116624828945747869285935550216510426611246464165672456873763101844488855240060391352712717244897293276974368891182448391673903824297153910544673276665356145935647869158839690677741302165485086601505936420787416213303197010728192848534508559475772092878656229617179144319116647091047104995448549976216819933193081411938963249948753729891050554633234245543174895102632238224116443304311200067977961466728477806170354890281010127141401078397744645533173462043833199818510994872944913632830090163524984882519575744396893904176088511268523809532051928709933426883795268651922899188372633339350547170405744047413159236600015955358149620197243188094274296327702357048133321149698718122547990458208049352632978891153674416519605562955338993064550368480760461208748100506171643608462974534899310736745990688915049698213939569284497851426962288136794776483676031516316477024843514189370835498275519603118449988980370513619074608735332871913575008930820010093359649516964394057443621064264777940106055600120036389739623089453690674512346882295649059106499852078566728430889667213020312720243081127666985829706529057313121146434545008645795530765581586092017367613765420278364506693165720523238393124372285242978561994732868734484944431711080905892671041456864407203485442455672103744553183819575829127229436930715606319259848501907626014167594356133773321874358433096084858432615977440425159863903472194329110894561153438494570800817300329065698834026452152687113681611402514857066995111415278701774502543029188865749912549889042778418780590965614222937550876163562067416782563130189969049163232812547968237829951457870668361349669898607220678388158883856617149788031979419518377536263258129835011389451516434311355563951294941816294238653725039566805882906760327267616529097794550267935048498698265019392642380153016792256503950627913034206710867107483964014667729012641408200420174616310731702753274342748023128156620108831677533975110506790721020933902689501040360836643517707824169924594816270129912479356039332602832863672896800505762485729158095299461095678919850474321348615095900288371562324245804508411618370549341692593278438324215885846699365621300172841202930584685026871988676021016069683524806355075133206978817533298203296716364803442253222417190363365521103331907089038154214446762657037133082206833859391265416202219757462632640116880113316640856266491474161865951556341446327174027399068343325582211145737741033900308892331791657813536387068976155881753284670390095533230109948475201074749803961577722584922848976269709935247543635059186648230041679417840686631090319436025426474566721750233600480378148923979126977178829862063336199821279131935376272242740930229979991187965334148052761636302834152270297544803920376970699689808927362719321617253146282815471176903208157959691725857904168917777082742840116709763372048579773847475337494776552638164896042311944516900014074084458299575487718870390657201414330585364446746423121798624671325310868200480623093797365486298655801286698455006567173666726305480521428223638165525978708790618711057273659922659500825770897936951683024154537453608763048337641268606967972503965566302087402354884117601458006617620947973695278514650590564705374331252348230935955296194558417841958530276208988243490107834233399093160994831275840010156015021228292771636123947993203912668567026121852597836650843639449548162397978328949797693964573568415065667721211443448855862151519456003412526670629837279687033127418872940951752537179351294235960988784726077794826933222598072541971258567165973643947589913843030294785950245676714074441223658834413128358664401984863572523471315447757480714611078170081257723918259471503352418059209997616061365757024674418467276362865127801505550630693483347205580518178296334798722972594881360225041633276655505544364768515035520656539005765337498421971013765771297842210206271254359618999771310405675509625069649297049689167521359792725239165969955360718725939061125615169394874937659150649438881157662542215426730659146588374136745641822700119836617456017278835805935464562143356506121952820380974800286862698404667887022304800560948917948304768837701158675532132868752885223145170235507648374078710072663476203745196100855671633779460271448160743399617931457430652185709153558058757620274184648476864982844414527509740884043005635607624658700714638921107612646792085206095117141248618399415159705332673717638728628547730707292379631676209269117682349451495006725856364786054235256039815702308344169699595251764189826766892355977730973531985487834622529691691114851235296072768864635385449109223283381920955664653413521213663156386397225452668428062960026783367423273299240039265194310748524749561898558627950051633281620470008913869730311043945934173008118872845911320509941057438370452479684600273828600192674695731415069365884074876994820274824241741000310547578494194715782937161545990667158868524975206375607433896093365191560927039751704700059003879162358892936511993907601159010714122511791232424909492737673116783211189700380555208845346275038099517614668117132499992383687995787991488649175600116330858799609686273543165633206065795671766742987703861554802748826265530469768145877292348657468481429950684990087744032076154192597895151149853835250840331352218073664180767236867388909149069417760885715787907016194821998461020341734396127425705890300821276517436368316240670186058868317537611141884342137700269046670135403714061762669512627858131951088524013874256130207039448209571440944331867212649176221364667380679102233523084271712394682165148018529918148115228506809820311999244893376045039533804266926292728802299801794032269521058759975151414588808177743658244531356710644203822477925227411247081265283118972171876578982036016839946962578852701984399247405418811843113395372924971737691637697923751757205218173480272281901653433065602489006908670045084838157810567330537571198935052492773832142368603794799586367479979297284765667460617743536038598971454121397568356232637706821989273590884476422593197477506956402029751320060399531385473035061614201935862570762312973139576505679794274617169028930715057471023575168394920212250508360650095735769356487205014505981642182965210728505190528857550452300424160987113033675615633697694331880669401991454038596265609994430557863021920994271322178262443932599128433195021001805754426481280993271871868898123081049447530227084930337838953480821151781343850587338788415614566314157661135009453330432634700199379744067575279636230064718091152026471567329489263200493932671680067981872900738862050137263809130019154506214975743493024273970907751033230383362491479860271940721755344918963366009027661319283406516443526776489533038955897450251253052666918734493322114455065456133390043822101427093554428315103684240291411034681210435491705157099878001942308631376917732763667490452253616030924784965464382037879737099687470635979083428113857871856521579134262422538108592554321567008234219780789038329119997561148101501991845380471185612431079544745393005626866555660023165473676573177944968613021700836931570321317796400817199940497056984991203396720133323428637102407817800381250527437302297396916440654538607986651347559838808425453700436829599681769841881577659807783346694093789377877129128332915198590369220924822775441791497241945213365016812307052448984146733560404464227702106271688675641718066259179007763313011707729866156317078264052855920420759994232011509265821188440201799333990695532458098453281378337192857999787228786311260389354931719630322756210621694991416906951457574736356491739996249543281259847658158705751137757419185800409810103450855735533970712606431040020251228216902033932922278098827823538872949869236107123883946636710337532550526925226603568539656773055080891438690281516926195670625157605958192510779461610319986090979171407036360927125683670465082803531134845619655506719143488568415948999941917922393776773814250178033405466943824486240655304906893931577760603106822787461063682343413063748228218236895581868380206626900120390149670524376730976504198579701821741491998112887817856386508472269534175923586053572147264225668756068840653497001478016304773768432064243582871918540830138393068065435157540224874472158656427414753592550893589524839973221670528457378351764606560369954066454812321306540996604707377833802776348279866044755388533732382187374152888434283327285111299624543857280877542370342805479754584752898235829537486435092138636073438746797786195918441746508437255770991027283473144755703976445141894526416576023626687794658300903155820425197081462829434792589894292526548977125051450079589320841245354599592487968175948705358464352746452039223205592901603978497732989487594226484786744274633540213680892800488068448755967494750861876404150641491505261084073301548775731974997357783200796509139600795032708608238634586823119500053683987581096871464404279597977561844444074285624944317539173681955135365051848912858345146568772730106207676690190346401271107568867328115517738633899056915352306581752718197179369374897371508806533239446911724047166254703619385403387574492804061880957600308471353325055505849442764040558893742863092075892500927675298876776988267751366693469030691658116067988577973955363583111758628280001888051445690357175342561187555485597580132484957326568620896226182291207242061115780441841270294424483918304763243394005556093000324679559357254818695590204589979353153580962574204519967260782503746487530104566647533118865187447623278235112475245668729250614211923914999639739288611178348390225818293903010636301209140151930995540930810682886683383278880038717723544675861761332130453920248681200697810132551438585806868314974630257061748923434426783198137529127590821806181325501318428160218031253386754926288444128560271121209086881890817341410981631158095997288806173167787654071810575938220572727954701710486432521042813198753409300221532772983709992140573927415675067850673076433436676164984085407504197879261755558112843536445842297913804901168080324117715469125539563518943876681204831457933485421006793714596250541025992740828596270338393157549455930271255615259862976297083640880723987589575874763145998220484085666085701990710361702291744218941810616887174683427302893486768014133832928149256770608666578047143930019188109217612162665917709932399923860232110353349354661640249645671791364748178188313076138232754354283417841421153258386489638309549024139107404888689764174699989860233595865136386881019836286491152578666702420766565474332805573752090708080462528860436685070236599510429711263330425907191509901110883423942767479958884562747024225359886106107476847780230176830191552351758046442737246971849635058970167533357326057970026089310877835939257513593948502606367900446696704730298990978008797319406721392801424436221091281461761515902384200242056596273566508600696018943967168960598919595303122511463225157942585120032855326962172584407492831696857965526621123672068494514515625081570737273877041696580544133078327474461403682125353649360444438920153163149627078950342273702806904737518082092309489095219213219221714567787959313483329441540592213631476324200296465568898275106124265871699846484331830778014915982329472682617376287964923852935137925270768254320728398581863403432526639898445453189576655016595732233223096381879032952533618871758228594487019665664259447780300137766765373361858900333124734589825204856466548482353644041776886305053238884837888574761201228520832182572361714744726954616698640362888082147096548567711562369558050023502231023455483928107622857156687393228815904788216380582697986011809497271156914913235994446163441093516936553518230893092766461946428134810369250644114451991911143376157294929614358773376639831075122265879210227512454645627930953455700599427712558902414986645089914447013160735419418902880088908287706243478429095339059927634047831801202067993808112284823240559462753518876315192979325533956926808335555564309481068401642126010436896223762400982362775299191358174244878147134551578368774657950465764903565308523942669260367349031308572725850182963813378407683213290415012311304772767337439683779901399158964904093758257010924722297044768401323326409533080908054067197109667132813598769844596022171671952026977228735531349921118512844005480496693135327867585797171837823777216104354367281052525207006720170150575475859645103623635076628450177503881235623061769351446951195516768276134835432826745342673210510692332493899730028396721688827397184187905562583140334000794226930940111035505284659170784486894783655830575576750208362210146578544232668520507831369748371801691822637681892656698629850847328748365971069768729274876505707773111774814653622263420109001061666861624301086484020719707019978682422819436204209649373559752042282754838853837433024622833575556374164857312611002826929639129714586486471732925232131360025666823235742908026893422997057647703553880626068611015753260925730933153394855130273903370793691803605707134754474750557305605512495404275673081444886759944835071515415223121090940963353741584334077812110300573661204886936301802787010786612488221437865838543107471882096188038297479061035406316080861381535602453839579703682671328071364165837914121019653424632667288659005916388127018407695118383879880194990802774145520199740934906590192597213104185891980412584573197261450587902295081034585052777114140752788116367803569794912451846406506863876803534273221422989013967712139369254772495645258517337181899790543119698817980444261589380770361487106234406066811963503016875459708866068571725241379356873908370891200656393099821526024337556820006681740369331882353200501248283596947933226995435138450468007993757158242732167421119450393599055110041046851053968788065264851547190345920164154176865663897131068399297896271666826073318149861326624014707157290010867780908813706352819676496738196290891429814893970066542425209089917352686964188881899476104663739929278710224654381767494416428202639533318598228262916727775935513259680645763802304209392948138316112344796550847620409914464018850264636214713185458872011608742740385620812822906759250619919156917679203943519372654550368654987327901373926932658046872254271504194613639048921391160901278813758792130523947891265956490562960857560828086547309269804949964666901432569927953478512257342443224502221516752555877208653858397181597270246872304195674509575411062400845614977939577899803091515872987563275584988949582071812504938250238143726741756748553983048239644879659257680060026294395343460155551861191774137878532174948567717208194285895358466958569983260807633721870361671471431525969702419098616083947638491518423926394520785255000437270517128943960503714074041088733678897375216082494196596412978260120166570875275855335110937341395547304706893429283564101854094823105071195667898304696028762925602115363500321083769719575954327411135654211155348540540467303297495035593805506698706444283967674610555891671621160281399311367349688682884612076294633455579050034365267644431381306143649717215680220195686552711015279999631054606097052011224101101466646689101308002887035530261310744327954079548572561969820775544638537682762900648980348223368780123756599925243991268505160785544751018080221062430082777299296269814847743814900630384820870137322288761290059975701582865118322443853656906788598053704004844927245071875130378250102797253316243356404517120834748039731402221073587577054551720189760700627373981937122543848257344135279561496145570195507671610223400573552143402229612691968862878461108385265255037590829247630251929415898619036848637820950983799358829596486657600365449408430433467381232949412939638602850742294318304077235926367403509471464833009530774930657974946740015694953053268446838248556343102687983728123077215730853651499265959109857956008156038758760682626424280297935028502958821623765719981531823009293180535068547916358794466344316214839104327375115361440173572347947251507947131273355285009348744927521125043219955404476821840485120515122110343542042742088224399472041612115409493468304658956263453190363081310948802473179271518864778463598681160012805833174354288872649593934310813106511655310811879666067887559185253047374598978080606393314926373388361780689026660879227539037047637393723108020194136484249706353619331070801601365682095831612647044298098880599065864860618947164970184292595587907808379720382403898210692244744247202480240107562575359682467491007167751160342926312555236327513797736665272054684354099884723119062675509948596767023845827074241820693190062361768891989585828445195114909742241475878712396927091090953952031986699906465168714999035650568724330719196294169992157965420241052348704158902854342981108558667183362892420069359269203944166458028639543770882727178845370967464715398882836413266264492251557867034099476797135119203919582183809399164891203563677991399169362518335864826456179220093005865515199760207495123416554700496126649836682159453808778017984462311034248875007838052822809714090976065582052292247529870795374794241792881932570149117066657715574908260324733382759188366957249916391947668738679383514730098580228079066177703763319965886542991853431083197006012994966976885648269096986388958144459153775617012644156856790261969520495264478701732529673735753748172897960281174142432402380567676015528262115233511954429040910060657532934024542422268881120573784808872196092917498362648834256652564421771241357601258394038034925664370375629146239114696103930253906425940933931131331182831145125227849188248646366983635255058161810451699121655807613456983667050282156324134254581865867010657346765943603071986235211362243700412083418055445538471367745584278452384900043722009273910593885802219087350357559893572620332110730062244361958460468856986899004622307248707009104071761474789934032955971724680605955733988411223268969131562907655520390066646882713632569048804871361759071478402135006990944498839051078563608745509095494221659034607037050945218651861045561909459045687275370775083375743167463039878967664001568411970909716029868493601587970355074702482320278130999444414470219469835181332553843237411771773766109505759784284814014013204673833286009006749385388562903139258641794515091101730799959326622393671291330753817977877108182686751442043680936102231469138152125229909643896407637178099230778140347444242531096518904479102717346540871264707299414948589975258166943522574404903511558519704995955694092345775933178559679256705616489564140799889505056548690919306590823928024657982898034203776314253660727874499929851456354610063371652557249242192885098821008061769255901738444246841127951728372498795337857746235001831744593412293349332045092197844610126147987614834381512638164399046595641277935449115282337646346783395771936915079167382011345936977422216174308165035120301483036239680391529241128272097446659290527637525856733387055922956014255857200394988939040547798687716425405547518799558043716680604408337481402178976101457124395882377590251954031223235838053484022518267882533312598362814515881124691404936648075120739916575148482638486509338070906549397793328676915259128381537703842632909602432675569494657768015908125184033663260008671686112578377054913622857544739248509382910649347853201645297247459374601827767958716807971971146614077251379482274556705985431561068376855548712147842517682269239959340236396795949869340389477568557714670568796013720305229388988573156122504624624571082392755766432249966424906637185180280271830360545958633707717413267343161272263092075757073111330905852659838645107066152159831436916461908298175591680550141038995296762639061940692138616759799885622774619348572455775666664677265195667333592122781385161150954069055333805137976123480975234005442838498889618153629545375450779560224741812531238302326288683985142523415282358368521123609778034390504576381748212432281580742211665250717264244760980615550563951959466993673551051680079735279099657547940957691771231637565950510685024712437257863920675921064638233914250903640630698348562932155686856920985217019317470617567501336831535064782710439628407867119631122618241643063204652109971236512350718903717818428968762495720750606248251002821863447863640321441174570439394996432547013183792849108986433553998663286149748644009027967814887626752573745441823691265761287211179934584511582619062202182995097421621910493811271681600385961002017945888454030575414416530563395370449706398969892811213208313119955925101063911580774460114393989944025207548392509846578698494715047723000411432996817685609584481516662983770182303351936031754899372822117889839350429781465330552619926727320327174788177011196756168788843220048374895732928549498656037778904570382320739502415796757493114865628161394762614175165030997139654817574311942503948535515694962855408453704070948017744696328512089089020172479759985036100317267494544519329567716123268570329061068926547793331306769234063742996620956966700522906115341663709849361507684714082503926373725838599215572913097258240481579297479065759298773829382805323161415723128879895817077883851946495119920978321681925939760070892110427675253296175936801382127480129337054385851627889150749172615958989563913526917531108806113562590287290116405314007253575637390814768405227527842900052867320130052459157497657447168869607400876353596997371249195769476102249134840746686414054434655758966040344324538884746956240391629264800584707689605201599258328960079287413722073566959550990437476241073855852169400623643948336688381698791369318876405740068354327793770286554560194629210592796850606489164686004753444934585025532861880975234333160390605475252782102197111939714197059876678642059739003536598656434498017887434051104856313945608607299966756847309020531796354022482006847937710924760077507352084011515308670432200291634600814125454114262377582491435053091317705850911227836427332796701799341532524910094113608862591837149032877129496211688251828110376422957759322869869587935958782338093869059919142867529129206124510974245582416290649802944569665086994728747284643771258977282077189840040745399789575648709664458490900032937640998649366528218705964808179907990739830808456825348947819581434543146865730550766490200297802804363732973852027041326985213971011305902205921723195541835039164917127314847513834578842907183704192141771410939508662333762975035667918664316061129220567688958266114898677822832108677620541864356233168341329221828328206728409490616169054627431830916640729606390723433403885037602232151738128457906972260172070524244771224023741654360366167163613421216847735479711697036398547523578689512193646209044286493380447045783232330676967377843458056977497788104079745134643567781598238535824689275781758496806879170247563076493625129976205062712525147096087245618658007763911481739830589524109331426927434740616159859498961943248124450236622248859362010036050268063790277999918034714271968119663298697297489594726068200824946261152354047765535023402626042018346599625691169364271462005209257866429486012296971506817713892255793589366804508381746275764558029843376109290803165334783825881007342762727191383143942371018679105235568877903265351631831766983490365889881510308938177021388754367858832079520583669826398052826120995289332812181980816415246400486389561152093539293825869012174242475659920959206889090965945235131630952953883134190251052322145864765454690186601773114715912445345401657378315092022741806170830330792640297394201922921372972969014337292431547931215964374641860127939336265342918040649090221744356114632915846987894299661324841251114894419470340678689459027165836973735271454642175819973837818388663771240308910346350905692573041218289511718883807224615692603726452705474115775545332958505499950264527117081476901944052904530489426386416117085346959872086723161364144438622894193584637116562019537658630770133175641784807341866476815594145869540180138989886633321570172737700359987504496320588412475592902162662912348981032997950210090929226108343970277945077215216745188914549290753607159257529569949181355515560746415394509724924291511080401022839845247423396473667384355214407614762442268206674029370009596095163687292904476266745184038002877572199630773116413840785794938431231408040396841760513558969392785903639305438959691825043711550961395941709392818678958861139156538712431843190020188036916872204918325712681736140026293732582966276169453317825365755437299561337710362070738823382075182608358667328802748777039078363572074525415118282073896113160756208083649001007145414721077202218596610067378929944871960081413085614037400080016705496413381024033193925177191829798318963914705469955372974567578662071061517554812953272191133963974285331159805515726570457499816168605405970429808719024307462294812763376512107352890695601920558760972270635666423294046724196107458898640536044280317101836885039872164177785908131400124540975949607363666088528671003928410032365385617529361850555760394398370596361935062683642083849745105244117710542023144384343551409015425368425091833933796302640899797040958337578876712587880852226007696229805562127547692891750949506556904271497775581978135289895019085779419384496916065411596687709156676342382532700535911558182399889897998051036932771459499613383670678851952707903979286077113218970598324207834493889812982376783340273499409121945263084533303455470399032758421709042953896062760775036911274069607228196887908403466225175777756463947205847048325843679046206182445573129004385238027383209104088462233487697965871434533682483840274514733707592167237078575232242734063052456488824041833778264617189218350713099081378710460066385881422853812440712955889476095467902488107085882908925442531571562092247337771723130027560944541312187147331798297710648687915534618761819154866209645233841138422051010777053520573374094944489479853081557430211578979063486548998277449893064576712562902275319218215156838208244967766124806117806665633531660004127510759961665733543615021223804857605520203018397027182539177631696846527307137156896130735644819412921956213537213388583506230358286373054945981341786450361685565525673237071613127515545754819055099484383252350568841501290336521123676356622367560684686250507484026941205173232291105233179678591104402632067094555658154628109385868854872909181765586233075815040026370688148107071596464424149968211599739198608561535270786526139643107490700010519741087692993648015299425254102628129268421746205473898969197889467611924185881176998897744614363837141407485892966059299340466625100156547583853248167679312945493012832051354025508757575658311385227912650462942293841318508035038599985468203934876342967852133428071846592623996045469321345181838328228637822513569622840348570722470056839148052713637622426840076706265497817345309213252471762860342902117658334471400857123311187742727335779877732600591727035379672455023198680657429791425635869720522775747331090529146980880565031548417853468195858573267428010067571138610665801442621363229333403478459591234902308651043673739178224759110818178553594180599921242579002007921334548731125999697265355963329403673798851979202029947859190338917562447986606652376046124768238025634576509459319298449833158306625493164346536991320513530399588355379710485899007035681281483023579234688489391842430884821345914095165036293725164747565412288081996812448699243892637166202544650340145636322905897057465218887825347036391902036565548869139267655133213373040051306773251387098340974126310227380420464154561861002067624437262836960929151408163425401992201100600780338752542578269521835893084910965367742561052174330160008555734093143793100463268817743520090441757831456119851706389915649349064868002275739981933986161873177868784899000265197031890249725504399068402295447195835512500697339816937979302490702490202398180651812374327472922619751047484834986616846081713720402916809251376344133345338745269575419189873756022769158703210901398324600361933956358980077289537496007542742226981558859844109124808421884991050511844283876572856109559587730453227636831643503117674250791402536224758109489191275517153902401459927738655251563453192160408435228333183323950151288269103870439090926111014547386155116112102424279032897912349237697494449098360931417412521696166356682224753983130247366250783375929966514453217571313871338445447404072920667126103356433488800618925696752301618432450357484824284663297076382176821351707171895082655409064509843325366881813867557070711271160975584675917812353838314986961556702080782902967157215126402394377243942218569886042411317548627420615563838664158214514719844571887850065818960424573651549588007234681959474862362795716388698452850167635421209680111229193254699076862042613737113378877421146652448013454628641093271422119939098618382842700765113686496419785895870523892213653544090484841951217160325275205828520687521306288333471978847341605816644937657211743798091537653115954302286708136473031613119766545188600823830231702448069798020192792003590843384646088206419985444298330117950990875664226243879575172841794500205730654794579288264519112489772293557111930023210910615532285652431439480272490532587462317675342169421945320182935086918220143943117776681739838093424480891688755065785579420500272349996154587455732561140575615425688121279774107666424735562164181349123829352471724893098843284565210742205483896779667562046975570566913099916246364838448665615130573345873680360342756672346476566777551679254811813081937129996394928412990380342476546465617382136327575415823760710795838388060714175386934862867761160096806711238942772498856540755972773621668304693140256618150516248959304649066709478009161769299908372866470260572485802568602389868774707456623965508816478304934222076762466281489762173562212232077089574172165242697358810242467739225182290585419041670176482689497942471296772332436887816872317222237034443176749854586889210619498899623630578675446614406646542535256613434805765919096461330160807287363521453057910558632455335376931333314050994392231922911796791390452869915270352053141156439729052261519239348001332975929418869580648352105235060060965812328512904832620764920725179882686737638534609132711151830899204428019352315436549017745003276260981779723796560843092009353061570867600718969958851527923372983976583785017789764763801418429996122777831919774193565103626808205083634879098529013641553952826654938486608007762853079686349516557924347341873527611249130308458520011919724282430660822521276730186664356804267670600107597081828084674395399797420931684378241155802959149975813891883452033266151676737006478946528171331128815385298938963528361348955345382164322545723262068855314422859817733005035233443165508390995106325203064666609079909860796208981460986270611931311967788351847660114203626557834145789208733846824425983728422342226047885440820333035765097202238740635033459534225180532215396788321044536047052925153153234816574727999596784830392026417954587353727955140088144185408566139719719245067982746113475293791610002180442359107326522707809326862031773401224323931770090863593998280287043587828416034065737285731314362603035905091466290204880040129687595771092475664571046835016611427742953179917711008716119606108512596246886789047673866639100859360846980043462268532645627822553226071132399805188116030908604002923593827511134183460849285509115284569731668881423937568100732931513678612711259921872391863782652802845251399514707900399520157298438758332906034868060173748078838057218509578145151111860301882679851890927854587277878984313072611426716243034901981333363521150572741770129897962580623080587967375938383987730004884565551520533338714297742195106538084410779515279630916522742734705661095747972558404510507693130862413723856889983037569242034632772097431374068868464655640478339370927949880392634862507686141804628053427509763685091473117597939554022597597393377707089656008457858393790847254183955637575460822146797966222789202182917406162499085763117301651183489448393278151727295412637506708021932064854658783056811327071335480679315674170045226453538037571665978650530195766557786569178884126286160586829632490002629281424631675353217285999860243791681755490341585327112868060519690351481122463752632730704024323338129620014291641800512837437353092956574913046997010180774780564324604433442988614627347178788948229555009512896677432448027195291995207962058179903746863406988579473182466893397684106792383691468438567143341966789580866735005421723812889188031909479239165625266085783853545051801552561108548073583068315077363433721367760513450926711279959533324928624118684120587545022949388287718622632249412092651073515692628246543801894749809405571991119619624413247521086632630891879926737888613014947488089749806443848908724249314367524958606707301028279403411862951391307894670031411733986235101440307990994476745323651903507649746478543319282021619429859577365314183252356886415662776056496655016322746182414600591034953845520358954117429888637968683720721612776422305424571325447090692734167057262707690530554084578367502243745725051956550611648247549534365992036794901840191218287476061473955957268267831459152997360800791825045980278375744566413006664500547103895100958463581025997381027385917159152785094468090907034996993535239360357351949517889783873665845153588150719953965943487202062085255961871762340413283372861760720873625367050590308755072124671962022672213282148464591432943322682033807901381497744453088217975047353473079648602140909380000247860926919170440040939496900730709382958304251982573090423714983916763756903370626149449828827038234100756957716727481949922036385771910105956338059343621936843197731377605141222446615860219262617555665781573502486827375820917769250904621351348622897058431370067037294264085474190940069801115678308515343431109976886711947309296459803495898253940712998553170870369734857808987405913052994854146111636419224715171075917814241508235255706768069379003935061304399374309084594599185653182393337456410822365067448816424003985867417956589966399700736170878727052728824660277673579371125869951001031776232713660134995861787386902785550544617927049665890921022687913223286530257617401846017606779324781369838063807333725735320280974259131677003205654825381218572726611064946958466255287391095286316824260704064928760693945679300062271117931364890722739170272914385322645174257821168143623952991994717514065314067783150149487105840720584970999087054204342726430438983727059186732810316699488423158891026333228354775702120963558045801884489015808716279229484717959358152405854269472389826775042927779375093991231166570206067354160399719457571414453156952047031187199451212763183869550726106451593667883310135374646421117350052170173186059853320178852011902718316043297136635468717079121570138447823925115963441322794180981934612478186473119199789758770367757524246504253102795364325098379166758105037468614719930267013028559942822056470171696832609170563931270426387521761856836681828831960278754188343300609449673495023669550116827964440460264001567735653986371111356706867549575379307994815120712441421415956589106773216955516443839955698426279188187175585900580118046512898622828300598872994948152548129154971339866728393936405771129259782053188084655175686942824807807782220394515586909032317162919405473315642778135743724641634039924804973561556956714646270966639236524742050933423686981222942018948329842882757919552985353416784780251742903670459914008749166489698819640980629332197204001926684205753932856297450370748660393483260683826168734446914991314427444807960790384107237632149286227678920966785643552510342175318537562959411314999999350352636839857400833355841654063260951762673515423515589520330582090397715876490440306833233997459961607919653784008099728841889177433799257113962426056735930098303338261265886173469882958016608127515891170350748666954808078829837899838205339377904547210390779650320387427698750653486796983635650613433119797887420427708504696017302460400203044441015259875000019836908227187402310279894202804069297977653244312842500400937007385319719838288909395622003348073426738236129443012750665655179069309105423192169378205246677554385177859604400246470054673423572435315309507066470388798903485712858652841136503214363397925851751780775796082320095046085165519378653093106401168753618174852695112981540116717152746433414868101564234900288249951254128272106507753321841838693719422578780124683531418123039641034991672361755919865477412757425910119380529619756580949401150595096783121203501243432336464774771575011006256031559989283545901201394135494500273934502412218466001827943958322330095557934226362192631459039490829258207860786206767027262062767657437281408003139240498163087169539080832791807799833694728744665907628151369462057789699949043053703210396189302561140075204082048560258658254896441991701107656223869718229502693729593924434137077465459282047042878982802773233550850292651448618336976603607312687097563614858331211223754750437969473632008869387826243219988922723045844862874476005598033871497423763366684298240378077461323742125886498172028824859849470911382758980635170028678340433954079817736920396595465270101577610098411244388024880684447484465450065448103678621555019011557890259719537644644705253309333700653166749505306979112770666636275699043567899266370734035898394054508041322849204795737313907277999628539068786128167579192442091975572557654256359173701649455784798783829465941218694690279454848028932303171955570529969168809563444641960223416618982976784340460248789059069452634191243262978182823703082190269092791918873077846652656863935545050411022326861009562642980759628627157604621099901978975213718383485414723086564445637179262270928458553829464168291736217767522719267643595556374825898493825019492308406187903927554686539122614657328865463705387468973325373705633978859107825241208795302869292491931704904586310120418991027994100801585178701926002516523925290937464729776849659564895002674290378102775659972929885171065705429682831645327541334768516568856234661553026725429939245464784788526304823982958353358375774528703922705033417329972104305356602392509967917759878367593098478148757169525767938838328476323066309792236985109712195644633686488318325675485262795301754415739814144566483599053896754866950727406770329241966405341489024048959755440132237152352705835687069407237140880700075234934418554815468067420350951983535125185247907044061074300431854429585916086482982541691043602582418272501635748496005881732693080544114397150450590151121664494798705245912713483372200391031254116875602309039226188182024062997249215887231224768659341965315925875265863794905279761538413999700771494488088384158195816559211837199185768913751606221348281873148765573202640690211366601679863588598999040528258331853191584782397316514380372996382928964915645248192272269073427537248370362440117789022963676386181473327881677969867888743781433539311811309590413037697227577000897506997455100373334487225888909265862389822955461601531247466306877720064276201512212653603220658372691519057650226299450244564904616520980528250681089267227087399992399309300846505257088024796970376350052299346261465331676839944276508872439579782691031209935702393268549924878547269509889532461065078557987857241809561574532588183159994987824291442977172517331654173934209091538726009417277219034870674510419509310762990409400935769924987051223294315362424394179017865300669833535480232353748135646425774907436458758146335192316276054916413421981918928590734347163577386787071844026349283113133390521134929885290881341474097335662927442641068838818722633923837406260899420406946168269791696715678078524766427206349705959665260606918337423343082441818927786492279684342585278275428918728698855024126457999213973595164106408839510408416725686085060948576852264359287292279143791854885353855240550481105343066260878087463341090917269810332412396920282177990235587582790471566140011978486335706260482210741089888104454443177610844202406976339789337911134990107552312966334037146416113333076340417163400452933548343206532923820586095734553728211042569109305710622165748555119653109401082186016473253432596214304547907314950340629846246032080230695228321135887797265369022758463329913164728728009217918485877837842406615431912593091242878489377476192299260292878357323503643083882437130601831455709964586776175391861368368559195187215040080551091138746708134154544711256568876638613742984602366315769604926098927634848106561470468401101134938431145771810661268738772894662251012396071832945079352666133756151266235503479071490561981819721384271243253704397903721901897176359909159164052365724394032223725770300894618919461356455677465652611888533376601199854748942245432254826987301968140197233199254953842604179524165300396916478285623575997877081993788857629188586739148715871153871208312184776097125644454370881165271043975178055550615373055107902224519459280266083598690586054112649363338155800571994514566499279581791430447438606254332448343483691091860629647888645573414150389325969659632924283026485829530113193168333478079158717305794067162666337644918296309659045344755266630263171371549558724615601140101803621648923988492062827791560098923222934160357477213439763961685653608074001008702410014434580500152265984490025312746529226388768545064533877680363612021558827061931556915161974149283773465155839336366333862599907777621875744509898983882853564704554149487637261629118134451869855425690427442524889185855018642169915091303970100607582882882804693347933258197100692413140106019666619372599439533191743549611483247630940146734180492049784441159586064098862395575695814728823666802167339202899659365784557588017062728366447963674354537304641209595679252075691003224013302871338539333559132522756911452443396106607120198017902270284117478465317194404674758616495385155250699839352535872966718080806473845992953416238666057579643064773805635299356026978114972263932977475399946168491685510423562826554984294876576157462488844718091959392121750125952999480143757168201541400159747118370786104447585442178279747472621810758282551079979864531655053162526546671709331712086144260303602849531991091872369517618487469248309256378605005790213742200065776877165197066333916673241620881707721399912673627217085150672914160961593708320731761780121084515156434444673925472581908809765454874452532428677963612115383803017380715524488131470703548711247380300144299912781197246795165186346388291138741970148808653233833915751392687775891637478367631517423996898397340921841876809746653587694235012988119567812698327960309722061465208080925268771526640975050777647935989511244578445489186534996728014769921977394520591403223112148256585063229318514619257063736941936609465803454628962399684120496405692974344114106534193837307586200545117517402159325096935845370798110063270182423301626837482012469788329164218260023306566228841287844863558774106952949250636544649117361936047298035319485687979586499084937938678500594590657329033165021531782799889345796159024285928253647946455000136440812672669413720834165635970961994268160116812487115429255072332714774832198031351435022366019793181534989121879829024320517903148328699472636543391486444667495343701032772296042000059617857702635668713249979706834163198694316294551378862143742601919885370145860439738658874242785969791819291243580645360843077817956774506129321893965198261768927294618320808047601825765165082432361902123841495050001000269485430588406182222841641004032097286403194310976501665575806215324687654498212062982363291063424037966576261828463624161529388821115945666901870038061287110640103025264792370946693095948825596020811904971611564310592657766434845485316431152974576524512364455863998880564704962764149683690655573342801113405504875180953469670558146241474823585083345550369912718728753022805110998678484182055341416806341063864943639203963538524006086295105557777366009265712907300295406862565543136728945111419421633897913970874177714586235229301945697530772509740490869168817452198992271561104877132369845118632324203769883756729871782284299009717004954607372480576465585854338122436099130781288181837945659737923093848395146796714122920701425693323603983752653225137824695841077457769419676540385795917094577728915386158634514819786063350632483358104503967429906090908148527758921665945340728807703425861007947925169368236358750061820121552602400308474322666872185716545147910962131284925393407369008826529047334142629593365600379282553089458438544446420218327279143646013128453987910826620324726755797038335245059240805401334965469107838639789954352309676352752803555383514465104073302835691713933240847234182271094799773592123603888014077683779016803589880659084674518367227973733116079341374712340756502507829017928144894931189844735139446439787543466876088564652788645785329268871125214682636212071874688669422568951812475237195839280797926335261731195882756850421950633223593212786015953930588679811260312697095128864275099644545892057868455275543425542968018570856421935206283149788847501230922762388646016049233678621232718142496933962617565018218095926822734291860613303839086559345550566172426323991428726017121167988645478351080950510252904421432999197477429961149842750277125539103944464420589809843346291090770662204361641573630579563257676125592178728203397498051243231554905252804575980138631126947387571311204990119617254393858368967915875846708103242030557929040968689618760927672135064178413543099004979554274685724212071476214790823418788757766452647141535560479596531066057164417385282202072214095083975848100072580531839849596934145603890300485127304172509846954255178738964243535746999506735975965026133149162404337859426625727190886924824438374349481833345921966436918794724594246919808561043367274902772475740846205427277708918385691479128015437606337576666776041799336951373085843932622309166197402401073682256982581564513140636881061858264238597479091090298080481707409411826937546262197424808613867526113194872883751386182225175062293707818941431658687101292830171891490844374207803999583731189651545574914642290274256520741647863514305742056267895036937024025508356660137602592924226244988796990244200957329845445760810778686032306876301116436927573084247212405173455328636204489818590866415398519873879753923479284365339137485839659436645058608855453763953569582151132385005404663035492409968570817173640876794288756624953661818494608110204381198408344011421653897042637280069549123094471164971010902516715275152631727155338473768600207416523770676272715599492968948429051517587266139045646537111383353494226776924729647520316870610685965546997495046263992475855439056303862531129028597431243288336649995970550448907811160397608397634821081353127408105312371637610994094669526522347795148971925319513322285265098579045227937525440908996652182425714377225705845541014067521935213905654362339782897528698417977858942964137538054385719902999476684735323127815813460486662920297020709341374577585219683189517647748280926181097737015598056848243958134265337542040631519727065770819364761088077334872684133645144427292158347457025713828807410676347463816040188556658339826835248843638216321309216578249824672354250236611238635976636913399116908693347385382478271623594281290729657792511844107160498456406806253024943525458603066153066455697303309570953988482003705877807297531336324083206917943498847996835795500406777146085689989394980836418954928030597933256164152491858704410445311512210053878984045296049055834015000042018776824046850242987184588660564041429625631984336004492900516311050350174109313117546221010091358332467884535656545927187357109615144913264632930574767781089232389414771966240789979891818827475712569035275995434847693832130821033224729294190554697781982827463974908010055101224954049129386652585232155754854431445356646449961708796782191801539376923057617962880892752763390011379663631605010667924318762952985841187129998084890586698142991400566383484302280642610080257697272795201660920959102300726013196555883343776610892100493334380001262252507896484850547492043555468737850519033894575747566718373857910220134473518344062104946166675122832025307676856332724051254261645315740491050696283221508126709691972390946412778884993946088008460420141924131359649828269733547028919702685788545631280569692543387435475018275437249485122167161638470332451761526343197947584312095869738062402585385794449099782188467444107304438523978820092508379113144665772865414741247271496895197110088955793887500824397104512414005962036109268736067260855599762594963245008446313642238038152555223331544189653859597386313500565197704231084583092869038775229194521346611733517711775562093021734194522648832900905664149221312090664439110744451904006770543083118796795253909948563377997270673844819103477852557002463181158857820328228042513635031421957120489825826313100527023264409531561498538870402122138493313020308076960616208679984004384475488186340116039202415881687854011379264487379510549442211734332192597777483361636609350375885758719198374932077520641436209558550966470775046088379381678780238031389665963865479893061899400116140312825352475229288656396458408261166613190683304634544614948436715370862257972874210534745077809091016904653210396294289760368753999664748154422877617238023764392696424923364123919422013835406973735610713416921927208809079015026388579116017465502762692580494109631981070499983112116025169359618565067704000136574725744797478518487597828346446043213660431573352064884570958355302571495200577407230822988365229130472236853525648598610447176381357811569487611553906162207973248809774998642076183392231739442678438777713519825616821657285352913713301818791614926021142860890631787958251205704712447351188799296736406092842692949617221423723184714015978689743683563664002434104626575686293532204348879782671258995627919121295844924560644079035855744616953748777404889225614038985801078156587053108751024299891200488607021570665866977479539818304162415736781676031927985077315527162717325494340958907102452040663152083110619515659733909955430365930836520558095727905850100806797947516243348361171983328226316225852055925281592522218656150692466038046191915934485733359044987028251794955931473660383538551175139733071327302103044682020000703601018111298586404101608263698967294780516351717204074952057914871024228077054637257591646581305485689856752873171139581792614427326549272486496060275679377905860220388524734066165040194702873223428385567311840640203062057567224372848305848324870941593917386659164940837199174061703276315984509875304255035570360545273321769543368872709593647379927814489538333551485312466114359526951354532201843605370901800314462854135695218899469395403821580452177185372744124568646003666707081790642471677302224889796468100009260918156803261338716046724088806693458706841403603649528923115064552607218940855470766935747548675195370395075226965401424470616126889276048228508156532634104019832492869809967989212965110711178591934990599433546611908761886252553120489892300881233272385314244672735912953011080411679540282911523296010035712429049902287838245734249668584047939364438669675880538839859891033384944240630279173206525315104752299595389969519851868519924879586803899865699616537159912609643615983713854281508433146388990269608367312849371879098583315868148115368049806683319918731702083784550618662121562178643752428412429839886928179825958773074615674115480427108976295409348735191573409937438047820052752548960140337252371043784487380582663815335736126761274453884861965984927521284808552840784279901552486378102358536537046888868857362750074297100995526137325581402396636760690328504599521781162799242599585631857735546537688640721967664777252826824775267367905131416917872981873442391773935849833259840562707166703201760783520880162280180465466583275417180063295902367931833000005977814397934958993989068673765399591570850840902078722096130132125133827082503644379718732627549864182043786710414144631772899172255605379731279052778810715629184541263645123334642744072905132911390169741945705512132046239034638354017319371499183804823883000986310691219322380757951581462670430452862036859754690522552944479054712530735947767086657177828430286527592231222866491345725239736394279828208607060971305350575409603056641108403728919558067297841316899729760415486955517610945681254599637098415000028977706085219447569079049127223330846236364692788412431285024217702340942203770897174704568906698001377366467757211913766111866598405924993137176226202880809428774170682167489531099524421566451062537336752320681293399196242465400123840741772982682631039609971623665812411601674103379316132891625187062833907671211078615829583705525408357982269606349957008390012069180723401125908869937291437808282799142356297539781952753502858770645956642513227072137854171799497558983752872103081200767148859582222703620214201904713394978636924001955412345916614031662519884484374322921041781333541479766700895479075015928156999315723528389369949312946645430953249804522077410329652043388884245674997660621675735438732915250685574902096845525633799798004663369738602926635859763427069786701883798718360334110875415078744209916947200160595197242081700427223090513278795196975379844577166037210148321759221525069798936142695955663481201423699604108550674410284458683945133318971271554800870103478344267701518384348506358203054441040715523863729035537936687920379049806426395598355859042595902098387143324830346382357915425708547528549272258460462689474939329412033402891493982484963320448445009515793708265317818914555297202998753301763292535580839260555254976109029362637768904451915226923211861036576564296021997316109495219978937736749422494560523924217631804270655474368938238336260205917666157771374021582851202496766443324148287713432136717043870096668398241629150737551872289570989048706166363320555993852392445513915137832698729580732505319311481680892677060532534621501423343502017220247187650025216578959875605007032309606868440319228097455414314664930219630211639377224973329049577221595200178164453424064498497644171268246910350962394806785360886637763894288543117349289644929598157551217085859702009888053636112436544556791449188788804702674437717673130053303815095423344891978417681245858413507095572516858477875659167068124435979573933053411355936028196720247851403731161147494425701200173358009789695476460815983807905319510267330783045378897508750037291592892883228184725804372916935456047396351491638696225049835333747769315250357049148544291719746615129734340833986484186288904983985930785142124291542879137747763325471043936222527609598438653411368525754135819693582346692957583170067315294971091549517759468806167804262335076581261485384993654245946329630558279131673370564849758534659074331614060977756901336162090886118103201981724669081487764612908870407994606356294754382610996521108664757641877863163191401490680552642016016403922763119668995793435771008735274229778328957049029299245497692647116273351414856064901756791649359233052323945964874503487774455516125716728698026041080256361562711471152527492920817614520678957984447321861748238947952614943513065055035902926780673136329119072502452745391762322755324084853542683163535141303325125565249140235254135637932442698427121258061403408407589312397315219145313099863146438247988678790941091515923808620428893994256759864394489412433520015437307774196693205932192317536584766918569775061712664011267277844165314849851239380440515969729639512289544512528262685955214417776503290159305127125523668203674171761498731909791838832122878923823042390872796725303540220475920173163039657314445717600336664460091137023441796119592821023243171327485412423936774519233993785461935676187635530272212568117201969386985104906859112681885394376910013856840330572137745607272913794185734761450046861160659842862597239770372906167893943931403347043326583212479145473800839106397744429066881458954808371750002433209285982111519139383090115293382868283887019275300314528292042904563907499288065071398119141798175782618659567483304116484219835245900555474884111445344153503858207200546955934053802308602723666653886842595560613412719430240046808130245136768239458562725563704556434801097581850836989854076248489916230031416031447730482630553042903007684672705248339517773806865578598167931418091732611767576060364862145372206776583429685295607734244723110045722189346440324105814340318923465272882634974444794124264114843574869833225413444374365265986893203296108384634033543461248764213406589793722499970990574824525924978792379510557513152295386355168590276991317648781783747459822427444411959277061151590643015109163811944730210002203106661244726612194252231475699726395068136549430770839084584448840647751470614462265609187676899850672112917305322946489303642328125664037399465976140345515871075362942111234781475401042862168708468370145646016081397336930379506430211502860940241730608119518897527756038738336067199206664804429510969574859639306953494523184271460540965177250240907002083211776654316174918936723702209867685528673578579402280824050213889334732901523112084599011719611418004782994047037762759016142345805559917438479962941911912084649049168496634856997510116590616421854053805909298096899612583921908064408130841746930305234413739092002598317260846584875238106257722469374620953982708089697514807717725879622069963059588789620633927654613174367826336658098446636505582828657050427692226099129279551047675171488994661183472222150218912411643479250348822173462348993326650233599154466842770236784502270401147255246924021945089822432558570713082501692763083086213592920159658009543778390931352387101488468154295779722767800043016898852793737698651409451312765091298929105970841592185310510755282993663982126755117284879369463251995097354852661505109821593099358053855193293618663867500273465802992378563541603118957176803906454863648983908023379788811015337520433576959426099147200340202208971173027549636451569810806653370485353132509678655182128600300794368035568637484020288222618215950945399614065215411545392285840208420909633575078611363230284312917972770621783641243698798047797191495674080717487952567811617183777858834105331500970759715277289348876999698430942210643011777836879579588137874671955382702728450571045007865644901786226815184258508608248514461993416438201473076024155264255834804693988324288267395626529295782761780829284557953289272994518003022967019409481338451828158087574423043788204323488702844603296219931358455881262466861412988286278154945910740461191697400990103046160072165026931790878428481601803267796855785659415789695862865324389907747518521419875701719394560339731692170652298032331111496513333689373463967980502431840276918701598495354916128041865002182898555121371888813675809744193122916068696098390256087689508044875727032276602173700139252503136597325490558916202470804045936938312361685401787212486873712866201364622809769961543902924018777253547570137707544724615737973410722099489055121594804598079646162782920470679251664581200098732861589024085836974353067990502950922340233551984381534533635460570857055436389972079387854291153493941364561650001189964621285440424470597209427482484904835366321271496600450822506051996572284430784417435174017323191129673776434803076607694915202487193632980002670726294616913625847035848119849184495299488248955504849865892966594399755519542044069933991815741993978415844438867817130505318252985559347899997956860009729656747152818606570337806361082215839419822954829038315270003600534238392816743045370325652132629378287364344866106454128482830520819616998781121006940105059657559960895247258605065630571925620844941424594290896298843270284959724773627530989045618009929491768481786609504895498767492349491638220517059524787658103832059682104531942771675392012100534929566054237985127980620879009509013698272992535385374542555901604085922535976909926292092422486253254522043338187888173148043997251853928209917417122594214204456072449525805572839327816307469047115579461274291278468520887579960752277187536882618983124574060671028874654768706841824236252593922618232936296755963978440103741877166655302215797813758998731986253075631712409989360339790513683299748962869532269982961262454515558520106906822490951814682700800982374452180658939803612697138414631085468729015880577547605779309973565862620184125078345352027329952518286490676213982010583201163664525052132756549978380221630820765046449376087948436630597682006819295761594589381672231077198763737569679450169264911546218160590340836392429676807349287434861692340381447074174262608850566779974196900318273143955452274445258501179434257186273480679412000880965866976908049457834958222170967474842099686643538386173939650124370929588314677186853158719692462457611130530561508336000474329020706080982214448496536423643199428208542762207108153524185343428426815065157520645313801042444056838095698000829916966574686475858122856972650919531998697218891564797360993230598783879274921957026298067256010673371253712265331718190058817076368007658933519160322310208084182542882129761331275415857402373227317925511886293776096435097692885202605932007284632639422091015016176062097927767452082594491046277114070241301575393997538049517955989941278802145469497105895121208295275880983057329653403623810182659822273510106453830857736776273989943164989930181333358632686765184294475158324200941375424660616700846916344671881302701642338945612454328899071647382841667828474944564244758541109268020037560819214750892269764386992121897314085731804777299085526636466946728691293350378078678832651861345930538193943623464735789213302628485776302416130612651840786919751993745859483256711586245732142157589968123357853953156209128392595614224120810328082909622477087675808946534747498471730689938653065834499578207010092319133075370099642266370878447270920581797793422756659865517711977250332954057322600434012705895956511790466531846425645328421940192808569926155162871687953312953631619906727406149650016370708917157023814630684755573119773651165931209946492453862878748879415266238342836082170882435848426770408741069013537355730089397354867369030851111388797719589149711582501016587336227215811615886209166864848011688715959967288265447891007510140993955510897200385639388200163859647285602317704374389356578262750537086871630210819534294510160103177785770660930217496636693259978105236619024019177751585400718239974588400521228435738964652745928986908330074992544150149073222308091838679414636122352748371646634890636077082139308811808848850904702342858693371700985536271442873212588969489138589119745479130989406482626147556873282833862786679414208873410112297483343272466616270421556396437687824273486967356111311674909083842736714216816995684502076177180278039420050955053901255903800078138156480387707544588524219257319229538056079981048741677359373860235422000961115692928958121017519328230182895439044281800553276303473798039563997523190629799261898660661520662335235715360565981983653727111791074655312822622551547055927528869303695055473491482326062182157869788559081918660161060665152475298643623929595421565948091369876142146462344579863262273398792799933130668174107393080435435809343325130799402464660378100378842662794042281240251234153289415176499051645890485193143740508853394333938650431041890729989721898815843766707086408149036868571613951964368707240421627927487407108133462200321996022238910589535791522380065731396185680166547673134815935699119315164869901823930026245161490120573498213381887977032855879766991278744658956506329502809918835839207857160439680115879718705820495454354658893130631992399045284833938931936271129275244484488796401701079714989009414076052430529458465682741829877154885749693864063988364052956187770448815274346705136514903288275330789728057828938275815329568295912269104403881675875344073245660626030668334795191582459551593476004539930238037827832647485480417747125824295517224278106740642173021120081855360079681754037452682296048104515483098781744864472224390825826944225203977199131481633893258456064635660960515767095754415001289503321015693099820289641565042167411242935383022410225494601792857912232779294875962778416156791587365609631203458561330838640667456578037907354227044317683352996371127005748526205950463184923455905640535565586932580027986233297425097778062880410828173819723057805915742342138228766159017547044099082595621980297703334254079749680827658004606233358667150598515982201459301411872954705898897688928978761474846756898713750584524484999058841939440057952769011310950350771855753686946896188231660005066460521700471829031001458695702273593396052983843877669261363518662460866940242777772344991790589135849026747967085692746609415244239492314107586659646630240060170488105922811614039701339414097331001974166806756370397428175795704395183908291980778824608028258888296083160550639024395909458912637368581023971912260394506366966941947374876869458077065713353357497431413717724659361716552200250514504443625035612204522248302516491830948608306627498504936713216975682570379450348799518654994398737842529058415385901007434909604586553177874584462263306042154701943427246269878415545106990106503821418699950437944751950368133792614776147678525154792222266536547592236940531922349816329014686591610353214319271679800642683297112198832484612191511588287597229062808438001751142761810195913799560801398415523538602391754080494043745905471180776355406255154151622514318518352946103675013723677054654273288572700383893088225273850800993089349402982102004542205465876611330052614300400666067000432185685018199829725632349734087839495246009284298303412016508456289201714812629216007458012621838314654070492285541213726225695279091544311328126477614160590837994097761351251359514190279815757214150457605375553750460971336058746485155088693878971645847638454500855919105440130500515053138332497503421431615722083648192219104124197478656208590086363137672379929062669011798410744512961139866304919240126355691374313430029671961776713828935056327722458284892628705187762926888798151090865443981327794235681134365451192825197552425990089560009798960191437606151235264047247824325352531031547325132789784583380922546730888323664911336371163994565249266502574643449042235901804338629291691775663709678428629097491836890811927008628506860682103354105619594808744384029807119336207554292780015413001193609236244186981478537840602971194366402054523017275996344692275858818070723296186923853444463183699192677363358408875299025296765952444743440743638046783076203230321960881510216583696413307733367751349913768373512444894601876164860783197477418236131567124714294473193535984814473643945695805934299440605399254028575923433145075995339764832847393378950419145013751376655248698922136511689701649031155735770809660988621510709281195960716561345774074524752572988534491480054994903425768265899703901020820208709643726664300010533550968001703840971355032950266834582038453040416246676232998919759926320413934988177617800615333858794325865236772942033823683187142028498297784804624795805891382632727908328442925595389228603728686318353360232300117206306996615479910043083354139500204837915691987815184645498247346448201020068671648677072913652949575848113804827741611988771972735223440445058488567359916732091906411022311965389831110559646241983335827639732602673554290415622857836171168748594618238798178961753612337216701629403024272464510346622417250310901588492451302738899578971279236907026862971359419090596830922334437314529553917088235392702427944241954569015463115929615117434023274314947392381795111414443171340745792709467381958276364299506197501195349982380767701095851581098127416257962434521900133740302891841131616808005490692329016406154953757238839228549224484712796877285652183305365687719379788315061498843152048732444630933668682972607727608165799678321658323171668062182736055267781579206099737988778404724100637971154273067434213431493625873746586073920900958535583634509966651907516952605561385018958304952602292203267140618832657673361569362986583890275601289847579245026903978698117844531914831919773389697873206550163462872143520021951442375800098062204107592054205374528707891270837049781309266040381136607919978910300200573523994755356759542168819653628845319026600145943532385764981827608192102191536836985673980326961609182851534163411221078440754264691073986131850931369014358452864779344622030952075829532683995046862129370834088784677301206713340056948940524691410227023464578871534349993942546979606190750987436451544865137811501900724851894222689201382056424337209591377681485298652729917089724315526766136776881465026645237182487972621307326871365743503961300104843891303050209052507961863195812287949145022410452843200098819544514666147957730927316570065497613520236176169409860596653875369553989104883199193727523431053041265835488621596990023261443553970044257677150160984854018082103977263985348417473276524787885065135802337357089648933947608035597849962788121070233654977986815636422561839040718184725120836338612068263468809343286358212167379572569329198128414601608982561415416582082703519853210811153066395303415282396508386211353114727747399501778026054185321226107520350954171981648869061374546329016280630585869203106459795649716533921110050658168716808601340416973067185422244473800997037778938932726426731239417137543347212955229737306128345007149177520431690678179601579649387158627790031312847164830385908407694811923429362792446767991864621583732545401854336991492051897485289655917278963349938907160514665939908992367503069105125786805675399451248486965069448254948580335483152022617467259339396660956959661753613752300032432744951793494164439636360070069883257971800418089688575622155572270499772210149306101883026698282063145882008108139600703054910406938220855560790178561065049172391011447132933362939212774884592420259602911764341270100021796320122337168118121516480026482349806541990833715557159083107216258896967547890545127698862107357580653023755488061571986095450328971193826433082423667677797622104585793719966862456278439942210217097743546392401644063301664373567420881915407974010923364338722714098360014450959366506489713623179404496865657467189043349099586925640484407441609431776554130976745491273357024016293603413579540936193688022502054905160191169080484765216873210939074801907674094243121796775736353553838512942605479525931406118082175887671217343886109794818850149984754942915564266217935988776262525257426960825287244369998817829362665865545244571689742311715267307741542108611851738131061607812194343340194421090667260644172720407786889378024077190565566703605996224155257163943752153093498119280573020671212489477910000335640386246926307983504670679215658222147099834599634719581658945374993074927699749494398020079108491676634815742264948063939270103691085851070140623422404144306911391245471341382849706497717643124349511832314747933181884535825452907055100634713235059730437607080695119629529259242276199567434574841671704406545821179021746069416931016532860014730314394836367437997619013565947658691556207100829729771469987238616234495889164736387772647972252643998355444909954288064931062435887576114499562273839551443841834960762264992899767867029094647086219571066600589236649391304858204093902275499454093069964718366505802034313480593874328337920667111949700017229831125568484088089210930971103154645462279643167405751698987834466459280239260321289007659404556761577125029249103051629328418466988175452962563339528589296775370270461999099790992738606722624231292743057338977799126504682581102882192655800427352308922338627756865114761610344044989433471194896607850588840182611521635980003350471491656419171045736834548449049973222982832638506648358113108052305226019223285196826495851748357201682863474981939893970379073768285602730950935290921048496152340323033511864899792958740990882181624382710910045377166535971829145152564756940069851178442898534053638462607324626402676685965828131148932755966264144290797223526408307183663221731032581788030862472891073230182697369085595354566408387906928555321839002878188354798413984489513329408024354659473858743907107520711948943623126729429112398037950483438642552670741242217698580756644339774699727343482327452709691132480502635297641114402117199603138447514399993268744902234988432432250850533171327036443223612364538863482474114275052345856083438691098577330725441884299927858373727601532197955212391507737534784649423886864999881233918639108735400125250992469931184620071106968332908235961468713775890292947023643392871470718999324117609210323895575857484238424619349626695254219707735280352977594812168734248230404524315389541844015449234536584913747882751082425012966917939591165179782056232956841289598341872446589076172032981308260934305464857755869625431531029541072182493819575977328138287230169238231409176978522296591254709147137347524756000013486223264668291772205599018584177994601302221737491816890888071582489928540187230625441870068177869813620344530028028214962321934844536058707188964939718304937422010358990039229459380927603000883821235297050320999469604882408830386212388447522748543802013888153035762884382908126618835295777671745322878500051585694448362573473236385360670722548662558727233458860923972835755958111442027936877763777965398551916248215056766429520195678124569923747129017426743855368137153017038767646302224057584032572533603118762881132878101220857500611015209931664333466397080750436835603261206676226621344711746648339989061268741138710303604941518891811890785372291566073089717090330193837968558469342171626042959266600876675028261563737524373898277110015045677900790619407269942322720946012703590303808030951388170304007065008809256175359194740546223988244473946775354678493708366798878284789691810268207917743562393185881863893714209407987212913020561888903163718476617171484609375356207304144276390028148240481814654639669836188269197102480551729414842121198048141019696895367914665202801932801784156542280510359289546960977992313216384390520305153406476723054253170073962080564741119468693881595908300858378437876824502051770372204151462057691734452826829147563257382904235696117121529606113181868435408695437717333934560333191910851244743801577531559422215951743320719977424223542747801863763574655803592228992663978269982083740642514610250575671930806720080746204400340670568104470464012772448151400856709658676223504698042005139071362245906277334599946599789334883714483527708839533846777500845878172976753033267072824538215984153480057545411762039520914783589900117636791509724633348340369263143241637336984429610346411764867914092644701913921038435450032105355266090728352307161128968894696367307326145565032299207279807401293321020426021070603992887468592352885426597048981760208244457500526150796341935973163891123924540736527159684917100038168855814212205147524694165578389703249420604447628125297976636429043256424525810325938088349918830189077716263512728216288743150552020736618832541384201529866009212472953417603908588795955488339953555620191140289773999276212424728773738579967363197869703652870453811008648222396885951820328190376785432773960356404603981249369662708696333987170556216328172220505527113637633390514559222514811765667100734027651547725527766296914051399089880939603396297611647134667309933761735779938022151801081908537007050484320755084965783442507639148435740399634424150477211500917231760451121843963850153922346486510724142850323553640013240467753094752025649213539566505459691587132794077934074617996433426505846946203593413012773598037489829628814911197598401886099941517059743949885210252628982478552137003140952612462609712719548991024945488513472557764630288111409431599824679966051829773884267715722872912714525104316211863117003218589002162308546422880038182942573840788212838475023134043414308034393654941936074067423511611704998234187122882277461492193545649226746304578425210797565076087877584429128241534399237029808337171873172632385153587412802556986163275613735432332491700242409011292375396732730854971195347997336227570575996849810055533941734099353339417364079207893248897680606822832252645857188102064416176894039229399219170370703513356797592671807567883990104126120165124133557075192799244209263628024159071897365700481701064797578119051245029692101097633798779171583791601181655401094393130461398102755832634708364017393527870853108213130554218438022246715908245105791656720536916819276116644350281995861739300618012111611816327340743733650996990299438701946345974595087975932618617625232870482023121723512466288822440279653798421092538068905328136167957150352814703282096137072795917927651783800260968726061732061339478376368967186337974012283181855274623865227325613524402674888850329638786078690533216829464812972110939012798081233663011687910274228766997643120543767692324403985413428982840547091318495362829701092814780499013187402667834754338594755921080437432256958017222233912733472387187552465050689766689785970670329329771507647774086408571116834732659027065410493819761216082442839853508189708148947305839824503931587057581458562645339668789096539542929134492167101979728797294757141289027352023092562727252180818878358903921191619553765274241616128685175280509781071994749090945587529287725493863641115678560341490123470231352395982023734131142322113962566663867815750668512702569836038371415475605829975481951375563648641981509203376667670063123065099574224116525620253972035745841455628875465011560338364353629359789362626539073663509919221212828764031606948217548465085941327622055844657783855742411990600245410576049752691093484964468527013702638047043869234294307612692033254927577755937842931301177272417014443332524197526148122202726445856960346893218539582023842050035313967935626239252008674317240160427285284435132415850578179064509668242857575012255050297499698437588705861630777635573961101761617534220331771775982393371097203857721769203882211793277777333574974800273145560346210446137439317731851059460612646374370331637291488595001688275508307647081138117915513432547195864479252771167063165909109616324137019347530361136600694413135611586341789450583704498183808369732587573848390307428929801356143517521722019898134269361205374684502990099886514103835370737460029982850141880659483042521068250292813962565383279195323211119769102862052553353935434443539559261189136197881360208426565968779476058755821027167428762085229043822406877293014041262284881197659673217154931367847785240597504167074153469292592712734411714444361171505112693434500094965149737705909605208731019654075942965453572116265924123162643704605129153876331892958892341445272620209327052543449377454297560036707245543524764405101140173039909351608182945265897558204765739135680216794039611576507803628690452950735027088321122302932903254855379375094261248112146114415504780056556118823615047089561156339862206464962091168510216338896055328067774348865465659518132111457851639794113582861544313595202554022300211389596453870289869160446555052061766488067649441072712147006448723373846812350322236003741987856525866935928815751846403755472756620867729509021962776791469719333841493483498302949358201549438212392103693380511526285717687358698190438216129455232651737165457278873504817279005334165309416982151389136948092560764848998022512988456625165278766325163154972635186470131652160791658213141493706910402165352811558543123111308378561966315939766383295459724110696661538237856855100192879110001874782497672086967845648795327172382530572567785373234941586080273867366998387073633163572779118852897192127981200099796264103929818801935164039926050344838476771260164432452309387398170807893694139849608867109441362841459617217245972685857308636309713537200647012314952146668746597946027054134080282695048514042799972605594155749537328198471889745027213880101304394549360424873768867380096396751651850905564460351304579101147408327174899334229843522007054435677470434100121288381507721156817811109093469766919648820407112765206100333304261502101416093271754110761823833235465352573575901427916100429632256267275788850104615791919847590187508746707399127349111035051215988509177840203662622895233336629284608143721605884211679366519847981738196051202304550399305093013154413530955285289905209436422850598618557615836225727381119702681593375790276149524271132298174185001631922233808954356649328788741860843091360276050013009819716067658080504770069309333133065436929045931345157032565437334672855414201278506530397728444125394382321734424083574789947465060539598257501660837335670015440339209528291211316304369057370336814585672754627538941763713851525001769595509504666176310431195150188147056241566199292758205442501167466635875531183243873754352896820159824372150665562354720390470298139620905298016109820179826173583968533800015509647634205897456510105478743566118199127393726652084259923548234628932004626045930515555908036138287148555149869438600097345095140893257354237199715109811202357305173354581727768415317723879264253664604325631856053097080050671336305064260816153783674422507086920245737158925204076685627735173897719011451305334966392388665497630895462972861153414524089876087512515644134410930031318443928372629937110487087201325149344180359493982066942277661193971736644348605597400469215411352139287407394492004094298189105765314852286797548034632766490035076406954035861239947284327554958206676979490222467488449332114300986426441834776748032580040417541418353152735293473395621406332549273468310688575132254114023350884112378954981174952396817354463172349543807702304190752131322697554687954989619861043042671041879088493099382115865696317710832900643839768540392281914817931029621533628074275481872796082478554096958084109364956322900687215519362887820204376781647248886521122325049462835852752748281246169110316035366551233583095201535527638394953201755675218292011216628277320316625224962585159043826671654091686151844830047631749380251817479600001747444024594352919389514068645094401538451266101018859445414735467338380123904850869883983433799642300482153597431833750211324843378163325138760737467419321295156091690414125436063413297624440169274777684348415347612540678028146602989326098583210503404963472799314599863320373117613727269417680211334662227512806021583484365652643794639368123050826127029459671036140869746910756260086210609147966038016819498324364665675637710830550556189061167659868391807512614709318899917381166584631835788999418114680584365307861460343904725421914866835328750040458593919682659495648283843431266361241052576174570874219357358906057221373155937748123620807187437695041068996662663447012966508814741454992049917076923590548499723043631628601983010513356046687529216923632274394327879286430801626331220880880093229975248237297720571415960626493149202906544129692195498760969487699675878020095259493390715884196332905271951449591405487755931838920156621568451642207652911432221447503102994349159013583790212661958904515859012843316695941145741232586347963345201489183526407269007462471568831799144665707425747657590575680018473111011218983576885285044275205035048921772832878214630458664389415941779456908891290415188339164654875562654843232589925563971465207437646672036985314111684375945281155509947842512763212489642628882307748111448141056908904544265664125753461505658440951488778857883183821635765249612926466795051123948172268972427008026183345261423752142703225689282951269710286865535168336813011101682340829602587216405441951721067153552173319529192261406339874789643737621994759342251251093980990753425273936176227390287550256849815363480500225921818942700962571303035727543212135572144931172743740372634799870246413277631602912064828907069464569360407139417660198898036081804949810292598231558054321135559652912578001679165884424430622803739960607312457371519963604971516223267484054250781331040656971207847552269070357025316122195206319182269072620564947915657050524248044521125241455403073059844425685562290740825930552202552088042995016925105181413981675600453472557405415313589225409601492068765909911971766424657227179462555811681437392937272851492477996203504419524490049349181751478978205517965163543860918329034913246522255162204191355771428360155804587982846774912336088705609264892620459152693843152689622503283502227889439787318814117643942343270834675349568839551649442999095374570085022772624769351876103712431195938696335684291273918100297923976600600540835609060941193309904595984282236294987239669702778553597195517944670998583767736541147929184780271576269628357784688778079526355418210734025213919471077912460745573857805586459372211699309759802135542494432742693053621204733162887799675874163936952597069400456745267387925996586043010403262005008590748509783934362732048949407126616144398208048969670775942535044634228856868559322553742685328268174665058100360306432322907265346406507578597132250929760856242012151751460055514107755424028618820641649110780439723849807098645599929203079662751840532128816353710397778025826235500122865883239264145219058394826443712093134562625486494395227967063332138107339064645847790961498793650373214620639544850140242838558685164184934704812090969884797696459262952177639613037329710481914163671942939360260299596297888918109973033981122190243523613767878405499174084175987170314023602130638983708563111529904837499462213289166738703190836302075287397753383267906137898426689103589470385474652465957023298193613063695658719154284854171227168685699150661931403613597936358725545146734523001962322469719960918488275786654286380512058920042644541780750806034191572881042299251952797465026324381348782759919741106526971797858885736383545232571172336240764388522164953790292650008405647695163835858932899772842011541917319581164420081831727253526871223560276599459871594423238311837596392427363129584358018999574033740877464848418715538254884828809680899936608467476029890907108283953144904775256059120687961819611062425294635022927582985115131115021801815728761710696194873366231191168831559774353401788637057940526447486605156064372856769306556332317320305004771408952060337496779236380937482105099630235143194665528673110256361003611073402265267532148715379076853074746051449482192305429043064585879806428962380167352961017672403117986377459618240723330146722968062585550447160515536811658924320068595376583618333530519563105073592529099995632643591883302819296409488095905848270877108307375182556985407347698764500630451801076894653388311954888220810016503315266402865337572016475297586369881242725384422790090451809752914729362799178789597460286023705503949324002745003045014962670281504229581177690437581742704439286917501592807767797599962540881638304637079550398573133936978775317187511958060691194794411756462010330462373482689900071455961423905339537226827399730615109518476534492923141303790274155160242936207075267523240257567494132583249977389480130173123963090488764153525173632355455748493243388987125885699781427178768263548150950041584663720152738783354977414234723728367839767508641351146311295909732070741006040166503392613907806036387046512065115202953455323760044725733312090263305651645302556414859352409440047189803908716897012328172937323476591718291848099700342040719988697101101631677147405900472628052383727865323929126523033957564181544865449561656365898999595466447648575734969449258677341564081434002797264349692585256426591156240520877679083187025831042787970290713936106654039563379432654852297053421223501431883025205313285583012343844035830356044654154273996369316111017749254007806234354685424132818470604772803192743792346451793569869412866308256708895576644286601477935407604108563613337280188186082798159376315656244337413848910809913138646488090095601349790541137274411146617894003347269652466218984018523491273669356267290302846185260999727152953089114868907849298655046753663361985292999761705213455336957103391811693048862727284356201987750685278169061589363588524273912815174961697520780364518605236314154717863640289024872886925894204865032488798028167019596194371208385483071772972624723775548657160295718545980662539864519206103310647820134061666751232842073028001468425118519627488078966332875811641396687976848240282022637750996494311806986500163744718010935215080167209372789319477348402931738251581090827383133125344205882843293896481835453601741251802479504893178657063935030285142029416387186493637430518069860251365105655515082431554806144159806858776651889940976512176014709306189214250039628965579607560124028761836810639602539907232802726507495144723846487648095990351192569518660034004587318164264242468328511972852114462972665540433019130002725963510986499265055550195750722546616016016796893911847213899430015126276260851462446851917054157988297216238389190955741025071408352573147176548476555162058232902287022644419549130614265876889934074465961302697673059120560016617775472695593359879362940135751405771335206545591274013386618296549385035806658462794345976059819202610923677755672409040329822465789380317269943589378904041064183426163554166187294003108790169641891492394617079728229306340512283627941662671892790524716551097920067591438822722571001278863091475804190550647682723822737076476594046833503967735435728443386691045253165285933892475431112040142918264301816811624267985866020939887755688695952257356256030201884470722341339511357602603462376918947324073729431510923496642454741945572084907184443114006338403936135869119675399486465685513011656836636159555348590724173916811887654937351012922090760158791000912543776979309622043029651101310937268641719055180617460746361783495359963433410397756857360354347497787646651566991667560802101088627053758844213570651695608490831268928259115528421408033656943932489500992686385634296418128017873797341175482495560662263005338016909094074370574616757970725813443274648379445540698662067941671434479018662656400382228997246093280482171435830366759252068903291014533044595851735574692778528730401729376588519731041141539086389569804335405277890432382699443020137402360869637443960881064846520404958243654876874677703750013813372490438533659644508200167960020792222642057805249378755611853380188846100593066909222041247701758758884993092741724300683180107379283952778554831906645650740803748426010141194131707658536211548900014410358396838404107596491016990422958434195423763146705005802587256872486694029353671955350293109399332894547904451121522870155488111357410555016752947206013673744802758121340109988158215367323612903752167417434535177537360657262222372816801877628864427942175379539171952302015446457454684833478047531683371974798990290041199596965136381924366881238329992540350145171118359821788133840128719734912246081788244674780497718945870273748207891514300160834811767283821786466270955598960243908363538328627263943237716813936554677761620935161120698980808147437927830878509708548108622097900374062218944710035678677826754387250410377308530516091520082043289652997437898458150002291030970496611327896308761408974014730496950977012124938582895968143992685888782422539550765342654799140731959436935080111263106262592518059642734211701884049496597488170867792147348780369069535872759997905751105036515095074442080648309836127881033718919949948174701793891678216717023298247722179539296049484466924105842165171527366737746412432415444514144264562718111526808994505231573256177885269707589069165546253163035438576771049080876082206198849132159287554826178742639337571727168382265974073082806539482983580503752694030664503018108857178609683174961343223566730362396883995853094214290896532177647208032189385752465630639913120408385220611597781987900424359892899462084212778994756708662146301918755738907899898903601056720952099894274247845131919143526909384047216056219690988755284299005287525500689019316352507099586506840304613595301912474356387050025109198305223547812541901618755719029900245166288832564757347178812986892477804796334068444685922215783768299595817812160222645108185935072477167968027885658533739008342490845016099672891907609666471573265359529359740012126572838437368329140639263338300593444067356734582971798657691897459528083423612203333470004706020953862632465478542742664934799464488606089248772489571743240196194961767558258909692818809510447820681932709807179947183465765404737056544104327802952007944401247936156484704451797764917433590952331336233302921026307472326350345456082422164181099571922553075309808245657554143164122881380304432710027846817408756224805295649632935554411897914920283870908345931623870249781567203514652908871291664134419779568308785429328384818366187884779068901162006116514824165329971177900699874880123181528366539661912021804276611581350071192025238688066038434195523816312746289086973122326723811586284278828784120555613079247278132278811497821660372610914997023071049024778421916632250673563247005369954511708182803797120138738932128674753956444907876251583810153759415933271453805964614547225862584126502075325762627724940375430205191095042766034672910879079564575528564670869283362418428993357716255774818865192673163972515172426585817896723092797422463419880222117426876386916088625292767998387170717023448521688138967118394363452872838523985553548836956414966248457962711524142694580432080707275647776856852868519363614808028855335062172333340879588394131819498185453217998062387331969483786643322537100233747119002712215250940605614331356639855989609588270975952609409059547460238804538499077189372288226383955568528528351354603598173254138928884178403257126737829285092792505694432406639923079908664738380803224192241137175817004430736306532729507107453044988984488316070086158955803431789781522484765188649247161543934809005435587482475001151728147955868339915044936989986736994505551985980032237107188837899939822433750984213059209174601748253538235173697527802099349826477290957665640292892801457263464418425984747210189655819678793780721266591099560673174343246560718862265761043321673619174663045929061345023585828516207548283988466500656527070453115705916155048982184665495962779624463345051677944337366209337040328906757709856679084782245336622459248242048512515426123113549821557603074152930037950561838124297719800207884057088088772471590617051284618616188013531292089784366899140863066037663339253712833820258121215490149162425911208625498770385580768480032335427459003027561694898497276571816923118269688936409366941890315280222527081707092506175455707682836190385165422679232901386660764464229164293619750961552309975578775923213136931032199763616011510771745729365867385963133818247196832058360098970330997113969250553803003042407771808910520529562472870763488841862645201246051251657260153977813322214881837733938591259249746458599668770406133922031192302198321880045079848276606766917453333503813290897453100792077817191956545256094983937110783775638532261203554033118810202154740238691527763752426297977543379718301686312353323249244360804226503339099552154296094739588100868054836621940790512118980525840776849366214151462782342270824305958366692747301243966965432134812620843073854934713598566704276180275751487760173885096243011624084173362614848892257887165164459459568250835618214677778142224764464486647254272908632562338340919739587578309577353375354798726873708560260332688968067634700872000190299961777217556591095578822985084752224124736109800146824170736046566703818740654282018751031513526884422019099777684263878112371165677478384603721970680725529319188123842708933409261499326510868538083929078522276986457033896745784817368471572687764093386827309814422711681366713923515917513291204122074872036792456492119757442614660054250788054947014294201459998357981101079349651501666838673414474704823993853159672009262762108039751461839094445625108414534901893825305206493389051866693984666488099543290816767611581685388119600221164801724767371778502835486542642834703450573029641331510756014057256146644978472383032702266116255652264779059100346836880739368251978530350758910977595641970275720842435830394687158388916171579462353220555197376225131882846327641290984552342371264424628848653606003966054801317931436022272902388785465143650342860520518965863803033815539250999504945089501562636155450172919516514949599825027375476922137421511195332428182796962790986547027093909730198499387076697437473628441514927901599695994270313630913227884356654990609122966837317563156863934066927375717872467637450114538868455920221687108852474292730205770598419257785100790767773621790545277008230324936323192215198176670083035437447532509739087664319780146990489865058216457716699638102888615118555689968919370295185241985723455756444268936099613274769029940587830986668871657559195408466870597646512613457253881029279534502968554277461502587301930724560946870892924918167634053834439115791790884952326831729918137986132722181058710217261594197325544537141670192091520115482240720536697196984167423675846395581301512836389368892116320169143916988301853994951597556482619111906898659764716822090480579984115041509929544486712527826144432855818499065645134631931473436316381051693938540404089600054147849331542340747127911622033028229696953532352148733026429314872246907761940244195850631944684691666745236399138285692605124470990709957589918813182152676842768988347357657716429263571910548050510220391185079773704786170555949370026220933886859765511269786500609525621234753363853527646554096465644155182782385021379696918969061662237009448989437454800506806510157516178324750212710115292953893659522287902188198417230704189944498964017609016766472395512248480102219986779830208780213513532598137443563812136594736788260685461365029327446375522755443587700129116408569612607363656442817748972632741155556682333379462323131579747489320398897734319536090392510110654401866416207613187718988002306330696219522146075038119798521949371610197021726195459984280332056099343312687592292490250938409115473366389314150243042166789898279591650036611776676292390171426242606289513579008137474480544331107303435942677913270976028050642651715073218136953379103265072555281006451553810069956469353067125852432248824419710654589806331890852318016006760874815946540502865485751183356749603832277392202156473441503750467263464547314621446167122893913948743003705597106625093574700023484044090445960115997674418293624611960556034297415401054325606325598929594252591223011804957489989374073404784516268380374038989074207292443035696140027180302364137789882370007786378301959737155247987753724946199053546865387711473726334952787041067365799572747087525688179351711858455711922612566057674649840582992383277795544272097361812731606271577540994384363665747902115988641220221937493720750532462136963406081701840424540121003582330828652948562334995727862694368084013219346641989833455481797887277029817826123577882045059940951899208140398281632904795652388402173052065967956779437007716976002762318854525982261324210044827670020575131766091811402214961059751756418693912035748649890592268705497375953072024040440752891514880189969971896853564285358744525770357725145980803268625176787750134137340307839918517794508072271073233303764521329723841951200676964702689453819059451675721132839440744454555643025750251558712721438559067448375551379477450915699553168475047455858488922055252324732907942085111723340066154894709127161243416601406861396686905522096158842975235523301721123032479724355161927137243609665412344167791557624921920371170656082725923669998695832570013139244161262218298756267668225753997493727608380072607120622127745904989661863805490941803268448052348462732806982711826428832032978800865135922487485466278245543293875473068050347272508551986617437690659983755323459367842533491781190739885588632849685515189596046913166248489835744301090449331580621150566960122887824240067228769878177580308232008014365936650597852006960804911458889322849930435171578099575415230753486177228779902726267898016250254097727692196769761153811539327622770512613064403224829768955659213114834016412466353172185382315341027332237530220180469835667844426114349841936893802992242661005710429792393736256941459025598245880024127595982904804968465825035614795202228268202347400892156485121113032549934476144143808770076133472276457514710698926345160982297625973908473444959903141016168507561641373059402935621933136867144963734014624089429306510996756378307528351136655933181883681199979519158300557319564150845985076892271175095247602225258312528532387438759261404685114427649027799834508042833994898144202208215746345883763351311529985146678077975354467529151764469068229122698210080643102662884401829425937567861091227437866784477868056796647931937832220620104699883903566703259830983501111959138186241524784734148803042869249211324464790941550774780183884994046756629743569163801177511990904564939124727540134286413688497515448140524118570917554188601606721389858840505076867727160000052465725100946931996667085174263829592942888184316142294202633615516997840978243419294180745060837761771314287859011571728434265556560180898683339834182313319471856037188728174649731689033733396518306513808382905843927196407723508710896119243722350312173201456196511152914616695480158054424319790851742604357422168093280257551562816346529501160170232930211849310599971920636241352423360617829508215028740366196064538917220374770511902408904752418685634405477559303031374154726720149204309364786551350731831397375041165088697262906341889015107238244725631971421618327546968056808087336024173604356103759765889286557987357905734935022886719938299185371682130844825269419631890061327248424108375899096395338286435865867861468480281804610844564101396170560155102763373343339851450296842366439221008533725725632106572286789066862412451484668238340435818875020181984310999040489009042999367538854960009560448271914691198774255501841961639651568193717044901214827906924248032959727283392953647354058851766713309965589924920660621804221776305006676951618475175850757021612823862799321471554951715905139813648128892649266275214387355101119068852210684257184414174700348579288631929832037714309780049426854074758409488706974109352852451455829308567972953533379011677534966187156712847083190760932983435254272313167823138780904761214817892624951281965263278425402335474804084646174862692036074360402304911662011563233020012247194525488115705301163037327631126239472113125646525287165765512682884409471141336194330263262565529194864367620838584731041623958854710685088523216400910163260511181897498634909583140941451371254697771287791901885211906307796516023446250667177532993466181578519278699082381759729992742569155012265588161141666362266793437716139761265401054979318311411854661947234348342174843481312512545534205238430494572396318764458082360486208182344779780383170528842007633114486751633802188578857945183687105823371622609238450376348029433217801941308166009750941463665281777278514279342086084015849426385779106830922739778066319549378336405504958440598726818585269168742647621950271498988339419929412306428095295059048336502126000922467227058537695299903901951156653715907798084224854844207389597193185801503145314149600589150770658809391202560185872593266223609834331169144286088966626502378324896669663061377655513330203455886321448657272901202776637958979795909671333781232051385374562084308831747100729050257180976394759112706201301294026213217769822863158834411143228291167594517762664472521980753981972016449137359675666689431336094414748583650834626513563125937076209502377517227917270707074326445072270218669694911974830165447986735207598671228795496184214123687717651386166537176960129879570342020927605648304246500648750584461893675016581681252415856466852571741509649487223893954643752617944801954725114826535633958774219507051695781607299802923382312577875548668009772939421134866529199316517249094296160934328041545107096842170078867758632939106485647303261501426488116982222149274038569388903116450347310406631985603611879343803798747845448820785653229754368431664225547183167028515948304467594534547941660148527627925052573687876531884294094815735011647713751369693137742566599970621761692364821942450146550180744194174240602189056167981024744088926872663839287972263801362517643612190539053966052713954144514049018446587967247256582609272681082483598707956223516853716638710090534924858936831421079389953584997293427068950020178362156456239950965610535515400983258769787198569768644833970123299358016123651169280449392362753052933262960214855602512856670047306130384663958941447326176374957704841627173303828459072857686551432707278977132177209781552283009365547739555300146335834595684942647313242562184637851386259025245875400064934377643589606434645713004801933713694378186627426849432952619570647142489398205746697607562623723573086570851886979653513089008106768669874779224387146039068192848543530221302329822688566236150639138964544344938747857631480945504975648660152577215877667378976237895240367742807420000102491000611261497195939612479847793193938339506125790444168960699385741108323557964804483919691046660162827986528214969551763534895892051265920106176971625745918412649492244528160340714537182431115820218133862263460474334550903746444708141954876821252374116885139493061446228403639622505893600819007261557392151447819918278075486202852425079562929847185500465622671004794879483387968736704844667288822672022721074997008738871977770365271154054926210317601545345351942631733916768896274982807463632555621245738349880604339393616861168585345453880867324203963108799992472895815395496757352819204125086433011755307321284090987010616352606161503181613455846305188184552484577040739022903066208541441285535321404885308917903006329086529911222195147305767401598405303084132013217912612503033581483048404449542389723131002062498827126101047344129677643188789134513546496976048480218780756355744342710023245844994686606734872139668845227193326415980465757847791892089425221273535946414753720214336133633617482093220752288387670865763548029747415674383253647050253465983166778333394736226469976853052045059492560679942145224481233397044082871213275545490779860844977373647936240424880326464223767773679795618839327096796128426023550032220770766442558359467530997742177479661739330581007091851145809376384003623012176862358737707159098442790070294979645504150185656511914432097452036160504708454912785433926119992880637237175806830045604776056970566373811076369740665676839210070822223759941123032833725490266067490342266258692629413856278520246438037384762466665952976679933398204362291009597901957374878335917035334435883318384738900972965398142429363818345722261860287170974159404432686487084387426886388334514753200302406490883210081552834173912828672154241541113379156010364777772007247087202758169215584507061755995833411799793955502353706655762807612734217223073007189839742170849389070347847208787940367557967445776290983993529098228232988585462061014774613650360676055453207871512993886770693832990699513836162462238606177480198757628316298166755647655428504183938616262375678261578867708046980793160621526752578818360877276861925103466181804861845600828856584601633947322542592409602348413944552063694470217717602484653313459140913806499689927128369942129635172424750841354967640892295845224442246034931280451729913617370323984416025825524214518947872812823350669727607241567655092961961593459971419646617007965166714436104912573200464990433991317612649424955617155537216378013542596486776475865826946281777412448131670056093942297834537695889698133889840560176035242552508851188390268075485540894944191685667017407094919661941095914021616392580273332526914070040977349377621291972723117044412118840752123810124611132086514682547192419910431421789568109203401773766594391407394502676108000020409868687017027573754096146434978562739498232476216297746895758399118857954713046004389982809488665483550965055974356107991457754120792980057493954974010717466034190792462282660376772268392386326723039729632529378672429896845335172506096559045383082081323843605945180263345281509484115657494253898513861066155831843979483930385872019498547398243454776154492040305653140970786997992701184483864073105567072374960103115199301966309017413143803255556836851189491096948648481100904407896017348240946456306669215915112640490036912509865800292856569284334081007759704529713963597469800525371799935188542741079091016339876558601935870072210490754060260064478523134472122164821541098590355891447276153235825441539144324340137215487766131133356945559351161154320404797004475937889836681545342793607341056279296369336631579638003277444028810076117322824976648163176125382072693324470546879642562172720441264171990118319932766814795065585770828773538919078365146696957536187976887213253632095302168003960964297975092450756066474220722671959566864284042774756345082948982321847377989826993599313153738212302302691569199367558191660310450518568872802403042709906793687021186083497646643481374191667165413276850618404717617371393263438105957645882021174979172756784090899136986877183464849679882359400881574406311470963020270376782796730721527483666952323254957755393168172626628018364046036350993805062752610384257215883079171255833620769473644489302088237593179574751991071314950191753489315435865953878886371957589833373879643477998207849812534226862164930457523129668769744118298134459592949606094041551331554382485403462135307230145341196177568627324754666962027361843597794355230097630418678409516941523620826002946333233596486048639332176784143401004721705827381719672165405911599104905048493343591692708314261836401388802657693764178741088968400502620952940293058255982405284806480670829047756397157119871459598794784032068577050003125882041733175259413130356408576231458032686459895908833558090876352815601031611978336874686615775048514143803107084890580014649144573059543014474459669840134229367287878810858916784559964879267241056588770239919735921532125372455990684551903014732929314278355764829824087951927967762782258956008726541741316350532307906448303133675791347031409448374536431751030597000257624444067031596411051813012642405492305698974102930819479346006399261020355952251750048807241832179910343008702983830270520112400074979811400478299339703311753342209610717745617207403467924057910474828694037997479178076643788081092133368907029529685652493447123891209446911184579690467732490702229727498598191121665648306651914708978702286186628875345372330719850094993372501944135544214474623948493863929247780047980874350972115416244843012763185979854412591902881626719149931277212574093510462743775317256393468717130681516529014471216722464928978930378013901459581269991325758826621261249259614148215581955267733296860255748736562631758737160718740244663948106007515156971786908828085341359697579279134659858839101844138026086083589024688222426290302222137497106934802845184834650902178484119055527511104970284631852448234120377367897195644435809784598873112628619172454897986517024620569261785704319484146586051379560670989363423239541804070809298580018295915999778582216169311853107845627954204252393954194061429373630596947220853597131248373153804868151379867924320343287380671095707070886796766378519626014038905195995768901897438307813032649565435438561896690787366922291475207128630291954782798974095516241914418331474167040244944188913672581358745967885976839886647654200319152930035248996340991471074152005308991722679831855532544883523494045619916250254918371648958732670448974455201294990823759431966504627185966317803189961481816083901077180429893823398039841615109430662312234324785026307751107887630143436303726560005856022711331007392218875619466436261344286513280864134034074047510675569302189452518411201627218056330563579761297278240645667285917820547841917626563099541461108653573619748387741489279732313816774805436376450772768732621811710508793764262016959067938835128504045356587653378610367875322789105785087494755134264419929614910594088780867923224570871870268442464136283663730204858392452080523757628679992030746249143878474445100537427167017159577602350464318003090479753915393582129559369270177215845077014033108178835091348653027327903146746740922404532849511420306915901825210538380305493416132564567403886753166217346057151084135578994000724602723872469982622570115044161404515314246394190202592108399172615846097230284103245437933732741667677319830167413715171235213802795413878275583086132864462259175993248795844900481185439674697432175837356123645901733125569266063246845105728930443088132468937273881058296899257936268773361147010867093322817379254364150983976047600326623155066778908765482989858543335863702373872726391826562451067111556830362820505582867615320699864421514616858429402590969396134652557749824312001994350025156416862485423471884436916401185549564537425119919039452092998715208502658952889695871937277648337547231534062458604896735482374578210417293468722351086814716903278087026402898863172794128506237522637618349314867211387886028852688690453704568472207701918324128656821561444956615341292020365709717069711789201919469590982606888164944333043734493055249745234596334774114767586101276892079556288356079020696623374695506136564585351889014286102760035688330400684214372921088609084178790623594752224314466318067150035919390590772575515899686098161402524648910074752859691332890543670479408624680621367145593405283615153105760918231185557006233368340250083039137329278317253603946974019747580800424047418139664427439286452273913559495395634077916347392291647758766237108594375733042219355971075734251588084070497411224004101045816609007177586828746706109473191960292987320829132127475058995279089497669472461932856140485317429808280373745711055460874932763971228437935244372911016473689589657100670581615165680643762642290360531312290615647612502823589928258091119898549107019588284518488636630876524506164923973914725766248926778260055605044210200721260594432288328972713388954107919205092974396225371408213330070837101067124098075926146244046867139869123823224897156199199408049990158732497562666413833066400447928819028668619780926475550043916271585956426038973921591866877102729383845148197257549014470209801443515070181340155809148390857247332797078443288718958259786392305653026753381324921198551044259694246744826742024805238334184042301646405605303532456597053011441328657803236532978133037582895024561739953369050994838133496587895688341353723477140040677686681557057514279796040525474881288673351997164849973966384010341330434339632558572331387974582413835553622710287744602920477937744623007869905777659595529033468675688582003834710663526883928165095714458669601537200823150509025425220077548973427629511546284032956726982625861207437542252159345536594776206295782271635450639532274562027387630624130480245075746613169740020368179779274563103196726660419099322981105718732899982482602626258642878933598529634275338071069728595257612633297810217014352309963632655183919875490343323591831584687828168919003920131199485669175121792275227508503869038198245378840532514463516504309701159781562377037356279193196716003167825599707641141671225917960662705693289861964212528577598795291616575673254940152569031729479536220867951561113165892740458825411384283624438335146388136467197167742601681462285628136393216844162111992477316145391628590522951396100200984708259009506749452277066959291317226283568166515822775996696458859183087394910376150115427594139509296184706616050111393374865408726765507882595319432557994320269529899652360527518187976580395229188331704551074685873389059685802005743757112341310223225759353302750825768077369281396880727345428260199694733981525740490408022480854409705951405267194451710589119450644341512444392669667889138174785440305703531275627265382905629924866868654026248573558549217319718475383600568582978092399259808908497063499252868525867469007583967438709586004731195628277876526165050972791904115790039242666655756025920836743417348595271486928137136906319798512740031709894819574625841593605575546829652393337800392761498824377199657703147550869847442133559491453359200110840316474078329082348819280145981013089770245089713266928071113524189316113113381251637765434156513519993492717331769894040016365899900578777682502600008841991122826936118163479218716760438520119688922531925346318776711657361782565728646118546717457379912536881334833484192496966250797271456080389378744689220992566911108819831242031478101840864893237178086380856104436564653120558953456686920582323605912459502340843431385802392933211839405269685056692823205322079641536641070187629025667033504306247145984990858935058166848897067573849726842206080626515293907972401261817619099871817870706209665506680444158238812166272139579072054585498977988374820332691895168929875133808143573557896555357377339415079969308125859139200822861222414549204057858767436945716757839873903784375094693309472054990296472676074457120816922429496783463542977932133786308412465692376052041893527393779093248636887783560106146288815617437245774636421217672413154955808222374276736461054832936327461932013671800945069542004623220607695709763582491303813252198827981595837579093374088929288812049250195769095927531804991878078979246750208275154535565767998771246898825304568839855055952864447078030279451567732672131626991873029902107231420889210852490223380504608558784930615866914856524636939382533617269181635670047035230380198712164785377000102561212889353824037516066571094791238252860926457483862997667635228287305283037004087090618517444166295646987558699352904939173765284575570317141514404234884024542092117990461798799708866229926785368728554415409441419496120837782829156693605496065205589905354080916750499308193099459263887779538211696705230872266344412205232541994495808969098056690752629851156903448889105211916694454023284328135466056066709800453604150898588631985082253425025981444469528071416592555804481205465616102479832872959252225719887317628803880840262656164692816658190889874470187510437800251120444530974626507033594459525619834239083435488984787241638926789585676438456058154644095857595484016967269548584962316490019008300870538394300791251486977606832926400414998664996722264903470874330514011625035445249355622474583479104653050730096113394962837878035399126344055558652675307468724165711944696986097523045616157014493716249689126609065555920577651483567479703374653701820975350838932111707005055190467489931381019603980563406943415102439264845829718672097196411141830948601588404355979913185183488555307568128257877136753882981077714811015500640947508976934181279841921503634971123303692820648262382177612079225604770628676749334889871708220698502285497450900862750970897667285019257781549983621483497497637790904986405257555885530337444306083144735929547156868583123163885003380115198706618361583287012610270935902244343982359470684158864244904571590314713917153702005774864169775332242775977078580486040108654896592529158759229174307413739129166897859143403287242298733462519092517781800041667197922883579000149433549436252896898229607418194974177660742387626320538354537399943566731404426679383170785509696795460398108465445171913946492046994363304136243924671985423055955359456150937725208066447047912823423540787906714251929897902879734726583844077207169836413798116015901474299120389000202616261227876535219372750111774980114579783814092003494451185881855334239186373152456381677875970556102798033054908553532553639028847519475933505181074676171939480280677968055170647021317006693705691592079646226522749138663508090692513348586184445439332720127054250489053793951421073354280301132090040794499803728495888337557413228658065312384499495601546104667734274917357128274426187116942413698339623842763425429858644324908113545180817237177542300574961153238526506913107998671402008999983522212560135622272524769718120114247957278698121052930203190369678578092947244587125035669247453858622104183474463443901117217252710203554173004279886267187052000617152460929291621987381529944183400065541971223064723228939019806498242696754304448423664135555265650816901537558134376533383580836446814781933575318084222661387243420302162285355712652432105841560123144413506291318210257979941583525432520269761525123793732001231945836158807540364947168499806063193403077003379095153771225466943742699114709182866073822878992858450154340456692936532252887943902991204370839788495722426436608872652101686660203762712508790693710982897049385153887529803502303364299157892064584077949911734619804023110382011662810808825793109882318915218245829127612364091064755886015656552385325925835030769978176104716059571970664652898994603789108055143936762307175250870545741826240462094811463774536234468686495649657966036509255066200498160555962141087505616594201453515378154093822822059996786591163142813305171399057725685072642456503760743778911100876390911375739494961832198711255772290387783887200670304103599840691268834413228021701168932435952779872632672570770930337300523793093070267176452692356540859541429673072836193256768725281181828528799169019543201347766145427134211660365876676259800640421110456520150029784227895722891215076778150080608919960322573992453086417864775729485203726776331557074514957240040114969255799561510546896106260196427124013247769597824628296732923838649690366872840537918318104961199924440374096328701151742677149424121791626476705224275542355194067907196525434761620528195859022008966907856918260659782414526559029735987203514567208672635653254348536276338416488113741436542480347707165578645921773821588063769102288711536565016845045351892096710611122449683963202306543144791045180706564630070443315522728881630961087950618469054484371510826462831720283101551405245219157582997865013574463102869411254862384683557966173055236211106200573598539199990709683277441075587573561690626957105454796567795503449153297842055225511555027444518705702002258607131257632298207493760060161327899920122594992541676905255615931550566570556441750186751206714615647557325059555238536984190715008502279697324836611955122525807337035220018937342718147651253300532284667084263177052741139158164766745727216786984165332903040336979939448243356527536952313152085884568735978732514452184070027144226556963438854034152573770786567184972890746598290874515635686500917713475605919057626602492445685378447249254589329908782613201618771275008332446079303046861651558002578214305955886424366954455744572529031697141137766399691600268373986599310362572811051507408273315679822644541273239728114747086691432130403628664060515714721271137774064028019127292824620345329953761578544283855517226005208019448021809390181405161877742435621047180442865384218872498309677516447880850330272073994946069980553387860308111003699808535283266264577242475218062409411478454452414025522839046568491351004988612578661010882258787202578904778322334140943595692838159558770040839984799337211543251657781856584012648044832950653714145043291407597337034912701490350866399706079677113027444942379022693343829147687635330978762293687202825376964328675381501743133137667543091694046243696516009527577995117634531772668318736672779498862253785398123891291275244873055926048181912882505180079753275938786524039492748609057828832682317243630730076498351522398304454096039917257396108779180644328271658274509321723480869783494734812489923835655750568888699880452003455215875966748141479665688627168816487310649769290277770570273836738048789190558125922185119329763279463281668043453046826217126934800294585263736958788291903728423403658766476211625948817511093345889016900591294515903119442148267310375100489716027104229134226407863272812119410718848435183744633673742400195148041088755205203583922430081136373018041134680408270946181176262076076571517844606006924134248082235774094231156531757787217248142765560811504773630151535853777866468797071914251048792826076893829289996634264378677745716554448965071764616646376885120765364194038392042282513395960632151945896920872424978639228384334818659766762766704280143759585343540398803051525959032602647510204191545243602071638013804981283376914707409189768616388305691029699674674915890292095001589103279329631714843629216753389065034731738782073573509005814349664313952097745655420157334662552355044233987819687196557160255966781850178630799772578834557826644624238911652589643014679733961861348547639868018805489493231875064577965067555515345165609022262234268868821469902467100527395257076688300016967423038924609882985144440240925047071759326554540537983937192480462404306725071304734274192094706685959247640510935467026755493618720250182306387919667941766708854744924721965276081319963279702443138893557949053848771508717598343270982389503226366046400385170010814373667751469215531565136362512045252894310447059944182472455681288385827407306361562401658620753798650505958048829495770686454674006115678263720902481744843554997778124792409653376788949527575208854768391339997001107733402139817311197374472969575656644353461080829150563341610492140352330952709001653576704838214520699897034263394216864733677952230387373455876806704721061557356379872999305495166687638901631594910759321249227739312339542494373872575995394435273210892961466465689367121990946439639618813516803223270612629022728676192602680984095251346681878706688502506395847300953249894577103838069672975922917089428727792619680478347322566162815377108589684717879035236994001968179905758119308465992448461539034774151812576805150814262951617954647704028595698091043889028282701858242002221350923379377973948366811542524232229972229883103907193584458315385416752931836612898629813065768751222749047549531819297933932678649908601622973103851942312668489352846177612970562884423938729381682461066930275848824502177327107407429859686705942197703146869030724029849787471095669207939888055658100204995312017826029630107265342510771960938119306787380892216575480041764504339094880386995585486533900326706665950757588332634056414450667149125986474194862408445463138428097927295433143293766832223982465493398722291488317077194446358934075401836952456671526876905609277001194860736191862199857698855619161097513836124589257234154654777816666773181729479672799568996416171395038562669950362963065116362799996596658827341781142400317475097647731952129362580835087826026925397389100837093969397471959196592900232886976816469599692582774408000521147828519500669629095095622341902426244263847463762640364828951041489506433980213478225980364789076853039656560098943549717334745205651670448100029603649526509056111487158015898868422414462201934586603510467205753834747113504811346430701394363238393422796602009881227313822732339538121117837400130981806609877490820367526699558322936986220506201287155675533664303872306629428819658093116404181239012337837382967497117371904871593642613394510830147018666659073702561162974719801450263440399805039047251563618136719589974893326570491365119406354903748029143462131859319740965858544758032789873139759233147469968383918334214603759662191429276482470251602728682079933411674484033298581069364514987370275830857451087849372398339083877127880650069671939001362341062649557208108191565888629772589459947503150837606697948010490145410333769801405738758285231348700904784581510614977612389203022449753912626653795704343126969240576913951996946530153575622663958852902792561673370791831748456821133947913137831748239229233516340574297084515613515725384824824112192576860334232274491265040409394245267338113701263774185997714332935413959361337756232144633019936315006169894104133855094026296621572046816061245804479686513837239312986032194321525909724493843477909973708107090714108316883018016538113469343968899464339564299816250438396635350358623213199312250005982853901468569946974822059588450818220805812577187481836664415376682275190762681306994370591241276334565505272332111884169786702427308552101350116748510481270235888580027521425277647288651365561037942597803396816039006279439206073267800231428647716996121997486790722623644918253756480590298321920197217121831320333421107885247247792741912236622754265971593074419079329642786096906923597091699766816055032462599771576164813148385644332121365115668893533148876467404220600212985466794412907077677704851840849990631215517280023556004986470086426366121811678150867165633511515196338362853442791967128932164472637917523734831691289700741489381981920994688364760653810559497222738331128654238080502081941874999949564910539765079651422191537204511075911664152911055105239920457519706947583567234244816998274394802138183932653946436729420265111132479280638872637083075019517400728829191529097797615160155937865529948352257788806794778154199954782478594996098990209760710445359386633984705878961924783635857488541999021847716210099822483051416011309447447364284790436897707599370158698379905556667580296037720091692833808550826009941587594112398146141119606951172497149183238289038559052390168339647026340318137507343008137164811315164851247204636639571251517942564391271130095920094456182280187563627681388312974928401640675479026514974611833925571577165835205768121570232854653840387190443026163653062809731642847293479256752173807160699422035078840000107288281202881135444029404371823191984920534837704029057608052206376733160446228566691984024404485765701819699159593744052756976239828815006009194752867261127778336445798077857158195061199463787707848056121264408408758945618023010752417889184791327693947115147458557106546905558461721853165876256344101707440780270902449893421395194129409648893571359700727423919987642634596074651366690292147331289881349583873108254903588422399399112586850455214292224306992109562228326669748306296582886228098772706664368672094523968171371388948123151690129475766441184110943563277145116098227388638384952184607437003556004881687630860382059486280248155737592754588652393092440834290525035297149966518512135717503683607277044251909889214703449867498469260816485724034155064491046894150624832473266492339209708474986737792039014974031095581715839959102000872660463898286255069019010307848693139884182799394391832047665945056443287428886897704129175123933810020443969963696215625134730024043830599377506169665714528960439889089829481268696830244645527446918673508907378947382382488659330453600597865036196930670154804689469510255091808277125203857392137461523052181291006666330694639365107181947370149352571292766669543473344859257107595068623467921379147532472513629859934672522441394789429882529953826526760865419496364875226281399029304960296317207046083624959307028932490857650988437320816611670377645168700692256143609247124020772016023061381228344407960029141683809851714061011133857170052620613672193611755315032815453654820728595176671267046705380563278015858837196343159613807876964314937568823610388811845903505193139423038319998581293547059319724705852349412020614631842781440615047138982267692025085816905838060492688218890005963199482295093939139864297538434877123289293364989206845502628702221157489511179561724336522759315212470485214707685149422062485268303904573783153690019023496661152847896790077291807582958978063433434590901516643071345669756137064012680873520144894503254073700564362519868192242322127344135662238966479479541589673380907064738584778462463851207744823930697568708202258167686482029839213120321904968079665716387285144364940482373655395864774926749455728324673543500729583519262663307092779892050590643800394591730035608366416768873180635881651590911237479553109106068689294663623359809582011027207749262739980000356179838126724653955314271830808068487891822362776686513174346562307236366074683358327744233751731317171363644849753308388713598691144919795506656385582963680774097588314309261583237077041825610153003406501345568387600702272589847542275783697759817297987843212931645237281253765917327778260053334333018105850490403350017228708979420800052067888318059095507932829643318815660555065807854728315650265327200888903058657365919869189879861313288479825112268079217522438672369141491471290089169157485910822435032716404796037846449430190460107211605423128317083703585215266035992434458025884613080055922441684839400654453308190281859083495834207815675409844726774231297947832216038523829472400336405326722045917175197415993525927538455575121729108131784538423231681948471668465731514572110496681699746143518069586053517884779346669725428324217332713623212122035207483301349760567754631788905498314540398055545459894438272184138752221750106101253539910414160703559570493180533592740552488830175690906243134354251826234844152064395171806612713016172568318896490398145516479621389017384797641485271010372059098739221106622602132850613662042182301410840694742709919116424061250044396165212462066573466897201164285124161939222736059178894408682005112818550135482131604273332895070312273706433903377627432283555618263834595072599432894370454722263818998624882133260878122438834226386170399320611011630195727147546163596738990174959980914254100485231404087520378368524011784070029777923276533162544267948073058539322089972567995012097307900769479634644813925710448841283293262661719392191304099451154425766457264029827619870419168464378638812831309475302998074624918744681812404352519608993921865512884760677400734330592210707464167994722191735538613310599488566895185736611082700524020280993511858879182924172654276877691650571381145183902891201356214297967334915331319601579684636808013157676667939989333815724172468628219526814633987197135771894607194498931364909491022494154115969187041696963675021739721720357242610974531128237936783884820184906881537607974562584494912488451266868579926586177934398702565044186340463517240202246025602635669085862460488765518208877969443230279520880073739291363726311920457235452603975730132452908601299656518286201689956854036281626243601833916538758789168839778967670590717171674897005040684525178522340348032430842897666052922751275342099738808678472013405056580400042600468788902658625021833968628668363652669547944327769390608598736451226451158407177331349042319069445769906310301792642375401622222162121257773388512289581678974661479964919358492269225626825141657998856511649190757377401119772480356918511597189063144639766921593273039318242855015572865017767674640342244328656778367037043081125574294928091681924640992765819130156586672012090285967361268968339520860012145521095484486060367880924772720129346051096691668267561816111775718065621699313331542727416741946708294883266533202413732865912306415741212192677685956284245814553727844189631984603070806156155832573388964401608009930616341512144637970219528063675335043359690808163113059778610379530363866690684503674524020475720191978595468858327038271517199613126475536534097374595729097015949185431147919483258475113781082237373048528121454608149232427695972860824610597551070528054997150907527564624716783166977854178550278612877831283317116766592116952249304267492838949744338588272271863057567543312750147111534178788982101340572333960435881128476337762024385129374219990394989409615712122222409524833639272855539838585755830662081969472766900406280799559948277262867575552527568947823480584350805546120142411460684473953643595304835720397820404119017859632505882878618104994183909358704837340101171661725443699565273416789771126372764323306594329296261087847792272338937194568553670878170749232524701136173033700713718904538101267562692644344251476130668837749589269474420326290737317242026103987041621342658692886882473901106713533079037643280209597089025227435538823006147576318182996658322106779769858929550701630848409081000931924419620176030032507940501101256991916814907335730224789673861047047972524922514351436832871582219698709171200176378369058258639235860070980959235197311079950725143058190026653458373890586686538811682175726008802380486498164951860804684545976447430166131011986580820764290575827925945119014984376528715207539380997373514177825563745781861364507809888698489084326694973903281500821468786713500396324489583690544171067525767925492782383489722647964350295655589941846194028482378195639916534620857833241237962013543094958063875632553435403803467117449443151013810041748178769785937001243987163102598939421240591873380317661584118910548303925197122498405124278987732076324011689209522090983864166202519129509459678540957164566502548204576011527899554189097489399416066828218543650111465038344837926316734466216182457510371560045375371771979445642945042102719462719799607856762846329458608758183348692584967747613761670860059025175616342728340775255061539928892504463953290376573787035212723157231526212751425440148317719376423054567995369863272330410834164087865567982698020789902532085428420412083127517239545522701727470822806500372116190154431355118417534362511544528791080404509984340963749960683228981865732278566548351577034631794593807850412893956660799047568476365928010979258064807056768913512194641839977288375646755547197242243606177004949645145598275736901307728225652735338080987245419155905015562130651613271931156260042817252219733517992876886493074457856809991912923098955868693749305918619780688077232422262212199813197254124035329002972112355193939655093406429673210531416569683048805382031016226927287978064622286796064458187740599590942555009810797358184335628093657197914826606251230575471469337472538859409973647267967901998733014683980653629227360460725619000250077506396612029549282047398544884811320422376600363271369848885398833994798212153142718080879391342043814681913308727260269945178333213160522488090691093827758451080383905037188219738038118057286396090120171448229578523508724511228529241550610224889798308239593084216215177381951453432665410928153200408301214044800793671037423732284270107974918316239706466079200417413983079621308450699963305217400024709744765109351603712999410830910153702635123236252296875147783953785767647833380336234267202450921316747765219550847549421756249704684871195079446202915705504050132163999812798190098149151552336033917391404979833820065580142061602018015637806860933686721297996345835138359577243268438200516437424374954643543162642353052123161889197533974006998529866889169136631884655379395308583678439922833912706319443092727150853593940454178112755736871088639441595935486531543000824938242712143253776633628727436694296924191404126702663917592422791744290490713515393509188978953089103506616317337885562720867402794287435408948667280504787556604095688023325698584963168575590270420904741157134801511717677257807651373903985442406836178979089577178999148028478945606096173760349182356746352828677949821867386078506080741685739050622544061474307856651245924029341397809143345670341368673493540612367987838396606918851043352428344806755721781551239026933876876486665134698788076493788533421745693812026986211186191386691966689763184415205438952948750228452796035460336940291524819884475884779691186826362204533721513262340696438478442203531601760318422581517602529397933514848453330168337613768474533189060616468429410769806444948103771128399959952891064767590578124589552288913251952204386839508036473839671033551416988868417003472481950724563683563535261347190166623291028413136850836648806140543612621286018982795783150284227662667671809146729795914992687887132304963210888349429573250749974277469638492418741961678069977929653638612559822300557253801186029872436120854585869223090032917277839986829279104922752955931587228294669701345925433840448042356535189513308768187182645267797601628902095216082696902321275990985828517404688374220237656836176935972956426244789361317730323080969674190439331747374039064916004710729582254852290984925710015652446112626839275913272298054838013695053693760901251926854766848726521925380091963773556299100207208583613935048194567793611945480218218690997024794133187695413075866145429065546750876916552861065314801457431854164157231787534869446171483975365569823607518209823622240270207608519233742379176507272304923104777176376735611071454281008685078422783424252804954963321195025615459659142550482014379847101155707169824782242675486347005201577199453896630081592441670403114933223327712159918494159001927750970742713940325547768210576354111823027298271742709114823201640604730724408190351675801337030933333958133130191165822494798003134510192850655145475220121438335861498969538066619896210722170488280839269234915451128740456813608419732568515614689153236102696402129300287710239781987061426437839047958432447561319760471651126657366064125406821122443255884469612700527048992150839165177364251588766161255127748689719113043666017886445616716718101182525431327345271258054595169031085061145938559333847463356551827690017526172196904576010273241302758707451833618322253671466250529491294642392349064227361062194860250484042553876822942729423339221193701333485516124122466115903375776463383013330353376737329823211799574055585024802069921468847424430319908811881387661324756468816424255674075389388267402455058981532892413680027849081993701508509703818663011353203204543017418483549662618633501081242460428777480484223222107526252974837188708606169983331728445338299554777704084973433403250912101029322082467266168108381649648089330273054715541404797479287883361844784441351293864728147683643566506717081323477709151608421478948079747905088183923889427626373332856074714627784870884540933092704522686559295056957915236158037708220349125686343196250463010336391183208016295028069735906305921105691981951106644038275357334249494818564856826876833785728872036361444074695563736044781957126863044912893233581350605251942862146171001736345106506896902375586441871341660168460425880525921541389261640442101254349803002410236327347031379279350066794851088875824595055037860731105226072305017677317167177075768497846399713436869839884321771667235667696485011343043277059851578138424979828184646565468891907240311319238083136972769398765111188190164241054091206785612653500841518850390105873951993450208416200171031578958097804417808629177916459180836489673103236682767707054806593832241429964259399918139355822204493848084744597325161264382220932728366075265981058058391059393745913025697516731805480663244846649259726440825025840688219237440632521276638411438136590868720572357503727883559405892137029166681136774492700499126432410053436546482656009826280998223161551547424977229167512322418858176167792882142854666149709919332427146301377180151146083540428955516711502595564272259090924985122610212641697050836199507769715450504311925537287750826368883195156227847851561948194080079105191259558787192096324087359399307191935171600103042863664592896114014770647839535370700769906948968561185335157713354896612524651737900092925196679584997045826358249199593684179820285509686150689471580309774826068793283449287372145543164545764394434413677983250329903133511077941031849108234524948503232596816708588835969341829504283348895151178759979972817012743081349266270219592575178920731262033687453400612867642704242698041316789004101690091921139563007168106108443793803650356437146326103632128484539884694759745110773749280621438018020054467437896956750841417515854906091498304969281108691884570302212380451609468470200727646072491722811628243197948995172881224765909084144967930049798472995624378603890564385893634558234776196356709760837276710986747322804287036602905734001218399643854811806636312286036065821942633919856050153840475449713552335242052583696654116292363084827110318369773270022524684392663705583095980403048572134482893872540133675425872933708193240351521312768531167471128059207643101792872913048488961533867153150818554453051948424491518760444762777772717133939766594458116609761044772771790093780235255392390216653978179184556858129776303948845815163509330249547059337050388132706684709101800990546836328852495275522755569779656232006967874631144561431590651096099911780241626742633030778468742866027760072861129718377123797929233641127528874212286944991653468029318672257250246228593011505792090857185848537364900249029690504147244796155298052727086580228996001444769190946246216636386226723006616469042442095635633126876216545487028026460429397830754103784237469583369295605982382857618209596492924593604729746537197934110102314266180343573036527540274430495727538402238831124018805660763358283782462584673158980103322758120413251151312912375980162299378925357170815295624168804107121906800999176847138615438392132348467201850482820140664131584818325563064011127755420386263911251981345635569074314964796442339283412710579562143745483005097135126376763802225288728096791610139631204502775516186722153979378194542295181413412202018720560346468762674914976853882687805058667236027061039311160577701565290662739492537605209078449704557825349134165383391693514113704156880062985128287737797408336888400603491444646429625164203939221382820397746050912999444966762019289954461098967458774810803115446389875160187563965472891535579880117543383209452454620325685849246373618677909030856029831655943614848109350059090401797841315754225301533533700871312869933791963712525194433972435476030502344483961945840645885606021891160946005965662552883207208123175453335770990146635361799915110187242075576476339316551400693090359036062689587029513241729072784151626719711577306882577149798911573093347382718635651673589907471181099281203085390029939206316051524114117546783584707518652400379228905515223384449139226114108153693378330977462625455133936785366990684418095921006797549485944058904866012617246121230121500817638553241010846410076552425338014939258316742003136142124118010797696710840520395177122586649206488578654197215340980913251785069664285039199020442306323925081102530682418543879102698007927738028611370982785224167433819022407999710010280930592702451739154368390077849580455503004798006794895615063559464803247214020131154976241118847313124835827328033377821346663588247857874457229198903061777707155069016328295469222524690025407164583438009729605897051794939404452700775044702845038136903291826821795113086478478667031608289969705097665125876173965828690863653583519450495552195185693167586695266521641612188118067922014642550508100987494891598810785145450661267851780130443676107096494599809305676589103081372651149681710571018370552852015188368858144780275451547740065411917422523864348096442792442371839207957566655629231802037677225423959389679068552706845471024408083227789737463131202706363418637366521291997143582841453035804479389029116327828386299225209117372819960598126889342360257896906803071613019993546219824668357793330828850166382416942798414170239458309751443878351574032444513648128660049415385378279212695026728039112246555954894541644806772249560579221076888870803558754955615010683433336669598372893030544198319025963484245432984186927447015464129075674876800699098348208710659733982215770865245952892834250398031843809750774209137973517283235351324497872307178379055984977563977943396504999357153924091975779366421487577173496511631352345612881147842143366521428881834118851564887819472976240958323432437188865016366526845462180969261505268373098506755464009211497265420074144073073738511789148058154841546962029013905001914861822118688397534854723725936184517758316768706650920250844370172802967766334149190819883988455924215942385078953922354406171785348988238352677935163186138502848324684077020034337023181021150654324608383206143095065965669936252415289153346852158767376909147470401054942590407369460013922493611862639384390605167109880733237776174983073848911525521720784062816423003420659767970172785811893179957707998549809161115195320501721319526787002115854538128607262420162500406804492129003228303508487164178397450947230709957409424051051039446644107433405949303578266833824897366134627225127537480077540283706573374175142047702019078929296251607173831257462825073278205399305825949610640415094634317467000981106349906807351066979749895975623357420952473721108220770185004142054221393730314972292273722280216824038388905575712507754414686200300879951445800113783818554646454691860636875823509912424576304963499687964590300615431199586055413117201385060211275885829573504463520127041264577581624894629494460544205573242811208403659805996741856934583593745923855707541408474625110387453077681425546250035849568631234378121150028338392020622945248567903631016442368543087899850387875298087301144853687263995205659563158867581188350482964887318583681212560321109779682741099923483099031179973919331560380224273847709785867785772180749614669585259273506028095053418074079062050845719422807017653761617465845662712573386825962695736254137187809572027954017197672799804628746718375548524857664669648734073846241399733173571709067506172198690381544904520423630229867140229035749097163069590150173889788787887516757508639346086057264928269047655884990528894573104481881442701152264581829132545517962804637565470523707073032135133548068076272587370436227161452534488064485239146636967411354109660737829604243794286230109196307832494560537581884001573335106164486190959978240848665763961432908896076169357472774814973018714607845244140471907066004399760457589907055441923895590412846701873339401100644345075585238260123107495448147867707658279307699823165671397688957663206112575431650280935963631829222392812014148086118253706118491757355564476221331732592584395371815972197418691165155105638296751734152404772242865016745227776111797246137111691109581089633110699865414775146113793093374902883648561745112154391415691454126466590201477715935247677607995796128565493962563111294079068826507211737139441425021465935894747994039343975859106826699991387127921469202123120521215399830963116866144542115454210567116668917145868907329287569668259501838346111135839206952339424846430548580833348153567875253907119626009659834693177152068172503537848500428226338754557818907795941225267212057683679089680140845056178646143377938036270275797707707715052276365433306232492863275663585958787250578363759004225426384537703388521456546409139358773438676237516196703381508839781580530594216368179054804353114284748428171303375030845948479908799934474838504994298334790628769368311491635160173956546484537759174536671329742259764219082527585664415873539701707595380141653090795546393912868429166529150017483900998088131855063996489453579928161695434158609025555371262665631226924508408284438493393384639583215519191121468517850791696564322054390227936098106026023994354475722745316709071819060676994709591490938205524834836262789379825770103485007556196143610855388038299223396988687383384198506083145532127737868824703235563962270558829458834086375856496666293668392053285186293286653665226514361310897540807837490222255042674989935533626585545740377780208088025026504692297245601903445059240860957050492425738584366610114998492735221250874291106691296339098879057042314891907353797664783638502628075030922317505931251419129960342550046899461013713374268916762046445243862059958072511325266419190420171169339177874605656309853714065927047614416837647422296637663092229023105555807604172090114354827399264825849530226201044571217361559081042357757949510471780561106033456708265380239856899317339544955494685483084214763037613101224789450757318284656287263893193751412083712241408656474611388436513554725272256895112671995712401264266829649598243177966196626890146677888626133347477470934825985296871614689369906998226676132583674287802962504387671856539807426932906401865492924283057660531422514390163884131003847815898456646090298029446276317720550358703474599209949345128639134881960112066156261165913669108489111206574166682233759494074754975615718751609838085665068930083954312392346173183287843901089650816896409193030687641760070855598771790298360113720530639310247696299265144000675759016242662616945579610655002868415408871993030208722251030573025831477227867586724464716478889753474486360469864831632880090140476801999429795900769490498540369529458998258466013472018703494133785486200604113377549246758250470628641156025586699257106359822604870489478938773955016582350476388256015290941790508905430335134068028434249373990103272808212351309997343725567859779100278041862550138937142946214916604227778981026454127116969870242613375851496171957499836543822744221808044355114599027266598173925720887963199127705703298274958536022820500846340241221563857295979441041264564140794400721891831943370666017478547664658226087168555638317260205779753574327620089808871013220180661581817374802141456093563299781848567003563647650743108767955803856459926064034332929976059107017172595129332553325350491002956426141651644250592244283441763162179554277911797684705587877118701437998168449285949640068257544266812428657052196178975765718635925290008025817034525219620738033268907074927844587019937469997378771879682940411766987400219457611666710864061402723763817776708649170122278755481672386467838058082964626386633811013748164490786007508602420090227981637210520501574929432011185885951347386505385254164875188696730400613792241324759380376159209018341260061178725747711032504057746145264836639758132050099215369531541888128732567461984780498167311181610098924776730599329391365402315500987131833382276950649743108639222087680139453861999333786687488497694441718637951040564904704654767367135453443571780683501281779523562540524176020699920575503165619794414220427851602191915909105993799253067762365302877612013488526852365207308779679705582711618790951028066724378839575530967954196929719150778228291676149766108847864639349276388928079285073091560404782472489570506631102441602317070621338569035064092663728462435609345411658963048567579537741815382003728843187143866375986851570836357510888430834407068507435199348827885844156825198606725737541382955996241383275934886134574862833093147221792604033718874534807640170147653017672983331560342182373485903950141828922786537444450261557506973603959802264291706940289173503866149002511568185519139966307327017874606495913816926588199231527487515488376881870800611745402833973208518094366435373829157575551132234170180024442747090822473135542124632560281453772898130328401885632249241806552587242673776773611079952706298521311819984160638068594615062593518059298729119203186668877827063062953199359809705488913524922747614603119666073214228924978227976312888851674435757977586056866529689905540212578769501713925292989944680560379228940659936762457723968563683923216608585783667975645582283330170602940267703944145956296067785829939308856555397327273787900625961006212187766285172786320603975203313808760070886131934817458523611875645151974715224915953151085027845118651545209995382201342021234733723188918552574495427107323133594922720630947853638129100293328802349759750356426621963617377721258972239824918991636731481415143061575108133202351814781094547845467658772655169995299039411734968151568815714638763692339330072703672712933882468878223141078539614008887461730142762362305669862597697822825182899107358422651579330967234558062993025166987077072337549030509061678548652187068887044231343922979731261923124249053996394275061203796914916957325882208950738218607493993514832189264782496941739517809571220978140415966665386553073360459164596486639346012583084074482640016577999955584145633150810691748339566052827673247586293704240382118435326704796882921413456636938639075063336699113033689567394438812864805207508880027134321083701488221687342801052505814867862313452639771117662057212917965435624511331107756241464502763855815575919588989146994485032568872790741770570033932282981083891168149699598946574365866971964361319073367652371163373546685811780352216129274178900681268109052998830231026812032221559237808934972966917211003020033768763313194295269235017973047572335129193563567183311014954040125637240716681511663353955858838207856642377439893144069031594357640076572215720772546628018794295216268100216317271214212234428387791289023901494278937042345566110435460171764492981486673850423056582792358555798734613026384606295249275599548061474804938568088432059212196655365614305733938953603798957875326743841709640258768881407959681857442206827763636946504821044472512362038252471874368092132988564951267874248794432591511313239080976425533300595995558342313786634728884028100901574685936257408160092509029953940060833422473129435587141114213965750477115105560195211368623595341611360978550170902059365307172290292429990175703234829525214655719110157308938470265298655073805085083813186461676005375421644241074776652478782473114558397207764908859905139586391192964919554355287936108415156330290328130208436210986042477278430553841599464845063948683348460924692637638262212412686102197058534310339413447447529404683798758664464806092147772979274153965633490540751713669329398286946046439640560640159831366639632924349161126421809222261659979981173967135125317313243668071901886917200460710832522111483548403695112957394740615682123759032248580969288601986934932186006213898303882882646656067664010799265699812358240760081986048735334367513052796930356421190111317549896478036970639441735926070673734511933973106198753090607619877378886058896385872064273749420790351201845591024209750984065547790373017197842538153342839195521283170087522954001620171074301390854429453738589935860376195215051156724985177168453450947808223404025958453549247157543848244436346576098715883203909747541910227093344593384910122882066605035893940009716334535637409873673366074264074192754813884396748398571298899450526729957058963209190186549558051759811216274811946536455118608521538741057609894209827110710376790863945012098379425185497451748053266241185963187767010242113710963510608097312504852739947844211892282684355517131156156289867582879620366209555405860242966578378533718232265340151424175251581965462188096625647751460410800541695259944531489134330835561708353716713176993006243786446795052679225671821665119206294110642568930942753283202646773375615956173584416666785444729280812074341061973550844473428729552878589949724913094258679494835524804531432354430234282502815670424945011316881971786095011861592725399770713958136333764963013487663151985332483506953225918872639904760316214236691913052929119916726685185756463081496553519372671488241534007602161697058982250212470187379224220037484620383498764307002431349006797615626804011084965209289805447672016314788502734879187483580803182425323397557261994448764421663707057984603395714794803144126822906874905043605118166854000993937410484150975930187327893898833795079198207111970768388043898372057043605936788183410007168928592917556368923829748377339308048375469483113259403491077791350406004317034240024531398887595709178049586464649711226312042915534068735516624452993453796313674966110051564593804223169857158940583175029382078380426225720746116294090900464662951592306831562419082933308265783760335519012899988391997747257302606878797089578938295477671990678257377814054160813323807907038214608261920153129890164567394722816495426825633690916689386748101825340257171882113186951963102963640165741900017148832066490513216539220079561059483158129802329890586485308941454156133979048759243591788813021071060049759737876588637593140659338684377857881705315786010046557154832378057097429497239948733784982625994051710199508614861439629565426537470551910814916711807244893145063756004484775365509581061024822357116909216732069620461345894417884762237656644442328551900914362188368151190506032537381570241700203218007468875792432989869915949537949703772416067347722779633742186848005035213145573916458796926537440857905624602109604869388504339219582522419727572629275356436428701204369952779609624002682402264313244542219609553116958568566164869120012732034018627124725856929981079048380972542693059756832857821816197829471393436831444147644916103964972043673438600990462728391985465337930736992106751453481780135665831277814345440469432751143364180423314410128707000849202914698293640758757898691728693299636263424059176891769683236914368363863669445878334097320516901117781799701337507057357084118532079795420202307926527652223827817600337179280076967971877845394164939334210997474489159776614523500478084086358121448458455541966753878375054025632370297582313113451383138931277504801182725361844410841990432044901505534200498567277618365356145919627551522593043729541391250515517564898655864839273761836424885312759648303584807380865880939590150699353697942767550766339428801999630643611004732555053867983236962077798251743303651576682023107959646561245877052825545047513501461610560636301228399983534645178722330315225749752302635880886886295958606376415584363996499258574474219189772101225725727059946836299202904214029200484619830193457865052561290229168883273729478447779509432782156839311193280352243248555345360958561201828058411122839121203652154411237417344881447621988107739286062863174526262140044627270846902882725397420706172424981204259787450519903928249860010847404625190127142017500683161013270204437209280564126476394424164761283126072032703629802768410261628976145177908086107549252484166498114057638901079241593342726708336927450861076689529393634125520427859593035840456660860369414553667600058342929468741898397361460216288062937154812497634158578338607944609936200867106292857042958636916218210630172635732628206258133890683547438760089177950693178276431666214108639909488558266445806026840260894952246179695406497664726295876820533178216521408697959530385251846524066296424913600538218256791714383319725709795216395030386881552686194643888065560236493379645738730874050892616371300927101095929412479041306999018638305782786514572492531056874781393019158719779049565288148128309054695082664311886774364955161386370509842821355813439683207218411034099007858244540896078770271077669010929338381987450520677143316141582621193821885777873414587865002757509516929208983331828924860160213538583710703035823290807197751753855351098145214830181327871293269185542152059894816636403282865358559646231956724253282431580397609009246728058942466804075041768654810186810519757652944577884636844941838813450648628643497530064307520275144241476612761095074862082308481822384522157294007409935463379679589870312687646794656221978047938546979573423068059555728938612463672830056854184536560539477173706262548026421672601248435326241363745778335474414334829902430394970512349190895186641292839956129645718746242475940935662549690996376336816778228618355235247406326660667465882162370154249463584660962099534348442612720101751413422775678126277061825521947647014642617658554974989874807163190381814078487641701588652372878075987755388126144331420313664385053773767886045674541965408446118009412353714704858524393526583783752895030372677535990082873674003391085904719700009699414119470079421700720021350710450229534572518538935681738312097931115797047255399357106242021308211062672168864582146812885649755614187260073453845708256783671089662653771353320157068951037882979874183051257516695530840114426671294662939896200809736429156843675279034400670213333131871387852203429138234783351151097258153748923703386338449511781398741798533164714452003039402190887004776298199688591885637222117671345413940595531397948384313774249897395290611428784885092358332772399648420537935500677040144180653079934606058208879684142804961340803138325451225370553836670378961699313025623585141520611273799849243832613863365820896955509442252205041927813269840043102445518057335025873823608846237071680399406425494465417848575833895175248057604499733881360529080264056873223478814138666525674852770655149996322278805909999250324473176710538467737939854764841034786295320866690588376550203164386675661306197759325385541204451542081852466534823574174920259888733123655647596413441448698983731791237083409801836179224702984560828993793317911850594503941732730898518567384060422985759732396815101491410630135362747221739360045589169946136466686645337323028168009818905849516854055633672984702481864157101122170014138078561081068725504233608476561912915661764529394135667517879704062867169955247160772566927780481835130523068459112332329087896655020334670737746160314815236958727938459073725096589679583986187074485679042485102477829933903461178946398595929724201176559501290368060065263559972582268331906148350818225365282654228523011072165816965491205741963446049463491075998758120051533412748044806344802910771811644800413363886497362724227199751006725369141517686582055308875520678541702947005673196779736749620452173965935439476231833529313180772712816743042632094893490300792689891115981522445503582980275459332148546628120633158803378493503752276453655928392550510966586701408008304910008713787338787012324845396295181383884570387062762030427105205316994993571393833879017182468064929027395592978766481502753325617618091463410032803936614226874246669070305337245063668242477575459210087353586525137420377405617039690287387055982234889779413214986133563644392599638842971468890606824550295099719324171673148432470896374236871656294659426626862443950193959904133602872325178788689206163728980423706082768048560125606352789779697791419370702471362336966238511611926593905227918284919224356008545012042972388610100669132743623471616709957125181319087864417087629307447261336000822900799369841776922537918439618119375415604763445186075390381422426300180222897583363656631987796554586754069119268365147607682759202457208692804261862758544090802227386922759243071477145734707326604256664024552366356911220801031096431133566020846580949188082045832538459189358596672721748879130409364117384816595964526219713757683529049193662172460917804858232198792561623500098446086501835200678971810429463657735397989788934940113380863902768311214231954616468663334782786079683470008731185022760369065205222163331292147819232724063308689363933339328471118310752218578820825566694093914863082335503441807164308462007022906457109887391569136017922579467215779312943712101523534007920445006290728722029550533951455783740464693843047898999674513971122715294297423262317201133219598379188062209279078088280452712847583045506552001266554213407203718321942843827718136766950049425635005834008271677609852603630193621406133106724197769289755975586685049243860505908144771440920990995497845825297558977992535255474309469156917554092701759002774976546691370230527010717677352263390923923515119788368527864606785317392895076282987571782014780687487937132538401519419625425626741606581197648566578871685323458591566353150720744422977146459456228154131715883197692990875252539945098001069283811156733394086659458373135776113011547884659489519364481051952045857847596606643349934519894244010952896439811794154219703614418874092090944825841292236063173265384932769150316980979479147255988417352482292453802674364430438206226966862073842835954608527757814543739238394938933055451396179943395059921045829950079758203384665826760158607043506748667164922746921812416301538432620614666192146026741836889315066046742209437983920824177897409318928981296945516186087247284801220319102428465978239412282742850749714618782254524569837970165311346994668641334894461500982920805505113136169956295140335769836766089872784081763145611912551886867707668195446105330828900577716895792955855323795457823845238593804523681252706754293171809864283481275092923268626749313113147658024007855088466302458841890070431344096558587712070880951850174709990206053867641513147629145672260441347465785868291523901852509777977927765350873888581850359601653762019346097079629682740423848765768145100936308286591229766741522505981983762512028806482687803824893602343857124714555427589650245175876500611794135157421093666044866155516199405148840548244376970903432344095553938699721189776739833529533543990286527485529335122385168718401436748514272723895782521032004593163442209712385183194177982607555774547300233131209331933279134225058649892026703272887210680185518164967530924700585362664671204618974465920539815952759166562522620861601546975703127226232488084309969736511233319250411576341699225858405139490653046889534595215954121944854515022798020623129234842589220499527783687909268804469134277481647790143324656319162373238144859697685745876221302433380225269937998187615766859734655030122112169852093107899226252314250748153232998367820137237789517610532115795703688268926828141161448887135562666476888947273160760339789379352296393631141999195748377893864707875127031236069909466137350711102995810434615426091558752518120210853745668020854708924795295192610820065472413521518161586761396953872791712656467450288061035856406471736497751667996192690335614509797263148149816641402757676548027270285867143223795769105129186456506469231831851470641344142805199191537290701655717552819571846374430433850832045399788200116087234165013094312888737057322519602448069072391443896644622579676602499432046314455361285381183758177454937789814354885968473651454754551466843895757099805681102985499220688005689819159783367508585454703952719496872301612720905808235633657001172160978740190779061609465217515040583034585123067017532050598116457768536829255424051045846279554068059743780085137062180235659237451867523898886713541750238052200449476937893043771126394577975622373738183860831304902249437617905405077808966956514073654730860740314030413786560656247393484507297724794070703874967136297892120282968273233090978750285060041354640216404192183403442980463884183788269611784270589435472769051278288269574177031538300434382787122686476547538148825138098435649139091689521552818798499990270946735941113453459786757394413531205262376536842344853594923497585658568055731112088722418513334106070279369387125326787854568308033942635660881973408592585753586839244103630227555425405252243926261925109998707267610197933519795181904576663051944824621487062323394524073335880129817843318867910649322509536920208666464134469292479481192551976192546935861635935147511468384940393107000344905804131307994071690793345864804448701849077208662257840464456816636683940046325079123297964542858413158984521132367000652397268431841835068296994033898731971746488265379233878344250404489137690127507300794515360785167458332928790794057957636021223884373201360678133322925869104026963770848295749176433957195951933609032939673805549233422520846284150377644151834146575783130897455826555316813134409857214414237610271524760341246208257661224767749950701066974376389074878757980941425415317584955737858166951625768181510178639009239674495826505553308592009483365363506891253839213781395362475721230860434056262341016573861904395543784229634568361403538554459764624923949590822349205639009156321864317156311477562796292564867325582998624227582336025267286932330684645149892412521125768105296968842822690951045865720766149612428311173716986518382058252828865427523662911705565783534735094827043079878089205065197506076728147868952508890447958184769000861632393386543403478002405028155010894737367900997548439631943257349308147106944713178922531787200225214718711398101118033550286659506452306434716195923611136950625784129977463172424418834380103606101086100573062306156912657400424258146693262404589395889020722754122875245756736846629935140597999680269857495584292746771858911115299497593023738754746283006444764851613572564882153304555735374611818204841230115053948856241895200991814892002483824398698880168303671296646317114604811154147395159627048852917246767064885166120281584991817120465822443861027732385384672473729494163579955348627794817158076700476662568374280496961558798367390375776275987811872784635541682789664142170795195801593598561035729068935433237327932033294537699881468970443123240883741567170329408600953702101144150036784218579236966790973806444731248714579488518966628126307351303964816328695249947076930268422979905046014335522596710948908671735849937798116985340770346644280070366693119410045501285535569640656860890003518553304496068126423697534865783738696666061372834005332377988805484127906748947002870012074117710598354665593531197521972491829389977913607146502209768464795385932294583988008358772234448400254740932626825651543159402801761042324769687022179899424031496272653731527938975690813608028236708328595873099079835954772855048173368885513392367755493707704907150388465443185482251470041092380513011531418280763928485751845439486362354398738983576059491598336479673594297875470989281613988642577846220189447238680860287078225619491070509967574030288775035290531280052921183584169497710138433711570999524877734787458365065496528988676784326380907795666634990909289869300040707229587471139852750528821886026444073434435542538830163121841232133908814730800661189614073166787513242263225040695881190133026292722364373764228387587158330215044473132311036460180752414845598555180667018508303376404424743643784089762263237320318135457047185547079862672483158745085946003990957816307708237146838154011516617617717134565234702525021026433513226945353638548724706524559430876393599962794456480529269437745546327512783838955906512893693704821125338881379964229858138305679841599789592427622117946003866948391968366307857543855198348282331599450564934660408106417968030417548664901146699595155159763959237572401616411996427148138662054336426991780035299270324048394900377502093892206541781243402988642321031411111167156836581783299619249653013365736962687827457396440939143183134927489656376847147784963998825880445372431194924919542012657183085949416644495201733724054767829881290502656519348818962565998655660521285297018889429303943661865398198245908696913316358569682939969291853639222936314291337136891499645450272185142615953346972838072190031049267508788096887468187856086720779781813426208376148458692792294526258587858176869542931501043708149543254269248194518840103490927399576083039363209917218748242521475454879997011199970428068418590779528621888987014234846126480120665826089255987246991096635742549536268854551591650742372153190148023877929558469435215737472657256006854535748601482295937148358205779427100887137441603215875196049512122307350095685567202806235392190852279717136477195608762898393943999981914840387413273055493710589132260685852661905451418582299437864001145427680996862702688593141475302574125782757992110433286485002306328886583712839028038920113278959866708951191450201047320834276518798267756148808614319613710160001129764408210507494582694504610043446602469476814347704536899168709373358828834658471807948585469815276767822060462118360916466903297523653999601090440478902371778305553255259406511948336757866611369263456746537956488284346204022316392352610186672162248108999959861136091480397672839800654982093442145949636041333981127806586275853834528062815526155896928069849710156569781483062868741881074470772599678947364546488858092754116458298518036298243469002958390558187810250852447028816370944116638447543808009906754151383671154449777550515237279000632378159541391263955298663220555412558736706531550671821147141159916407404502012029801745742589815197105793603885763062055318177388205331894610336703638032023510075929378939941031751596344079027541043645828382961809052724349734843792781785531859041689219411058684169321824827322033577052060820717962070092575354217961355579564451631031414664198269751367059264083558958392348387360454484114805891302215922421396234925991176303196391583985172587449236326347229040326683944587881957809646446572438186403442470655579525487204614033813959702866914620847351464500617322790357517532149026523239753618463473488219363341260522520855468589270901576276326069476918428313900208641292444257772681465524806602875500801212853973655679967657995132620770883160459490195174017849534931608183526778253223011084172660701382692340779426994557130871805508529122082669386994294847107673898670669888728770492403699306528156188954943133714187252892977166236983990426901395626155039338723677065760197103552180906179482376778420598225162155363986613230889318292119261600673843426422498324309952870183112528584690011854153834139633367438541791985772679569989789427832612108845423143920535242462772103361528697564825252866602490885270181565565226327169363315142440429717662346511813935323412153932042317488231684843791997899467469558648308587000093782131510477961543960257040788909614852823960870254052327232068838235985338800224218918509369703961415788823248951168196079279498382345520765708990318650785035983684420552199478797382527193711419666393367019898684198854270938927942969711821607885917492944603794066505504435662599965132412812767545654849577408998601628912226001978928713367432287824537626893352804021647593051386805182537367915195252862783357374121333227082438924328511908795738402577249089352886851759923551656470346753067845639625192648115337192938792982029495310400607940767558133855372073657807779861000412475452772812730839398937501984649571428900815646148687313630785735661749785779424797664072629379354787792162319632147167559714119406800253610738976095474223480207102365619213649610639871932988970205481064496702771938067162723102849487435144696735162705073391854870152219460205371023977372513103028187914460675590136389308772439970593117837046361023716770585219250147780563069723416963855268758636466285412145062602974237961515046835072124352171504572124045993417106368779486758629232645364216132848176072927437543695040449001058315803454654813641557271484131772553862904212223355380627727228511230978287572219872428706714594568035276934877602461549019339426061077270618444224206078043310963296024129210629045859392075816255799624400204915398425982275980978030400919716924029327469084784322131352065582043182946906297782292651035756885149662944880076427279508761750357545010101414192341828535549212149911479169271421220637710357597310053526748561492375288313120625807262020523054789734560226365841910825069474515861646851844927491566680957575117802847348917974704168196366227471790047383721941092902705609634611395071570349894354805455027383793516029710056416213747170182995827431891975266845585581794097815460073183013975465485177683155002444435171767623819432754452793581051808291233456511702563758851735301837519156913451864619688566457536007495244304487238056612127837907656482237048082141768234520188492801893441775762841366251223937879069511917448430803383389882108818249988096204498119072903373272222558320699942084690595611722109255249248731746348247717971959733316634528175494436437068185079245344858023214684691250367258335743044992577687764304673154917904476962165686481047332042878324020383394726217238264492177011839277575372775661208696916042005499619998266480005622002361353485468507295062405951696116997297431994060366341852845339989562221494457178131961689087647191742465702738777865382778851476418950612380175598667101617625306862438095934891562866610668254210117224974352256799926598851406839131781812812359365052704684823889380045888584416799678000115973810642856782988349372998185276100264591393862323571388949819818982698990287976453125587586392921642812371533875914204888632757934668847879870528090469050638589076290792539141308977077849231038971619213904283421212692658620171146272572286703057374025830108388324819079246469897959466225400115765857081437609766938265115005867310791599169619391748683914756809741432425175064247463058369514595271365360288288418251974426874919627658972936241509193063932972398089687190105828065658964845733713917595269282847501923548694405414713116780640110556368914570342631500245538563391617184236064041989113943184691392401393069121684991665112375113127239507660679271288755935557194506682282236389082734253041225457807775849543832143136529106691362825700993863560054280101156190051658986722898609213428085243733670084079072388408162883547172894820293350458328176796948038860874123731600094776744543378280714637242000782988417813135621962962936033122012856967385114753858767472877675658468624723931242664975422095339171142372607477607542266038338493735196550470034206048069937347034000342487495626009731451012018392225545713334322357656814942804174802220811265722058509685346167830851225755842575258621002056447726515095244168647591778131168167698837969839712969899744053548144486459964287356919289310247783707575847389302621103520505500749168940765967963331383508843062158450452375026078662901034112643746499994554171059585389678241961298297699651514799585298120599419190323695994646288408247017390634502120997836740532687139741327583975141470751261941188805505540275808036006296423819699273859853593738565570024631465186597852983010830020374403019852404230225660204350493516506399420423343769891497721287846905557150007146799973393125080984929004043200109726262317181809742271932752390539323092220086068657406532848028244267400094870047823533778154284463283490121502799682816509638251010997292381532800242941461464968009523594578374347418233863079100248355897093724065960283199546941060131346092806449559275944884446526232850569856252760221943932584453566437169015371507423952502758032844374691246972416604124366980689818919809190701010831010717174326556488598125119979528785174222964426067136043113405875049506707045773401394397314924043793325194708171733215395220969754790410818425337396544603870387359178837664781433158647121981438245322753648711995425846943021045964510754485650465913993071104253453638256721422739203303442829078061988803935087744834482264633197663952986846029382043240728883148139924694164707104965405024228029638059058631605700549744459218130070861184683180177912162635043502294056523822402187356078583160418500082760942774852290921214701179521441863564338786243780777843782419856554412933257654251624019683889811657980611998547755165521443235465944299921936234875971023161426820741546041514945208328710000400740046983947684203163448331455299671515148467056665508184027939667520671250895513115349831279157958200654768479421449781583618104073619984032318271399007233627459209890035966353352098747417290247879120062572622093116653924267190319369249519173343790625360629603498372816335382441998391899719909904416259103348658293474246178838763311334451983980605090083834905023855629436342606319467314425053480116403331651850765923954322888738414288946133849255938350307800814511463705607726941265071095530026534676829185700549884220751596147796105205738377877578942863517550381901529319788366019287280912883115899126558070395884254654153805043050441565296589917298818795176993650993357378754179971440882091095922197098189076358607524326177800111530147907341443101326707286185485408957246203060961634881790165210703056002745341449440760440440424135494642134647669079511855714608992640814046432841716262439082272769674493118869005657682476554800419458787076484791808321910660752506834159383075770120528117462670281409739371393260050536502357903032454483721710790641350173278228173047345849946424589597810906434424278931817578968779685402437892508298324237192973997210204924893619076140773736578412082795095426678722006691931567837008712183020042093987090508777705119950944856926805718344225920057158672553712749825325571922571882960164018591695107512692692102386906022276999222557022125162345512887738030702217429548178899093257599213062414565102598549870614252291372625567195754208617825641330570011201966749646860752253865846718914232029177921513363743638714851221362438530927155940005084781662905083631794737766855749563627149311247318061160489316405430912612680762849318460120080230934525794226558253391295483515453196552884991712794663995968442473278098762046559040780563689980264672794662509221371057147440022089117617790917269252247283401927808196605061948761174180106590192593738909573584190912160232163729146700608276321077630458905432692900649009213626592742453565609263274467418466136878503459248510710639105083454973344085575029836482542032816671528933622795791688293455771565797850328254127013104314360345662014320302295165154063567012579108722873590586598215945771874403232332215599027390571475125187911255136369025882493049589705854053275679662706500470993527968837211847381331772274059130085344227054378682115787094088189483259900711784567361233252264608658981949352245073140960797616980673234725933220721380861990790056954267604333254082434123468153651326673663642835955769490208185422155444878310005437702656812645365235420100230197597528570153781114532841499310111106852514608826078072505704591052440035560111918671768880240141073173377463549519584255403660143124210539644197722479320931567492473383076437746325361757317170801737772103539814147188403741205417647501499033479534319092578386454580870220251457739258190008723236208862931147131146409986623911087309566205382003835050512553300414048998825485076552050098482715010772186650863514994700226742317182458241799401412242895797954655482880476582730025633460199452029456054068284566710146667514842635948385261860699572049655266718395730142182267924527114474429551088101079355634494884425200569992798805041754959732549760125919777028762086546633058744456737167249589735137537710909635728764387933557881240600786096516486244584425377788873911134425034106280629064292679099263983277164399523848204971910792766161221907904242267904715187808646044237331733613541354238915787012876981697233550330413267652890193609030662023877155752870878072887618545498654916999692182281670323175557315434190916366371031663030011974140794482223630730775047702532146535811416321890053120413535425949688924102753363837325489418616770541798863180463113780901477879720013597373979741973937651953195340687826235515741307284230936181353639415605218533577779958448559141223899157406634061145169270210998284476222241258157614417777681480336182631102823462583148008267898904177446373452366194955750430853855709125711938689725058989399952533409347072261169746090380592120795515361844587050287702836775731978331498703350446003326633936079543454274405386924387572840781902345730276936176557187536195882883384617656775532797757662475497683953921184608703405901312207410187705899549079900176763532715447394508764256927805872768596985123570677636874932326110343636346894183055271041794943359363942455007989750409655117538053052925483687789943824287728134454449502657631829194094905263188582976464829192152676443056257273238290492503316640834388132955402532776616274553282134690004096052452948773110169479890293563974624685407629205197519719908697014317141223921626189588764790281420468204158735903736796612200359723882754463616707849264485279183726536978603862143166669846439837728831082356845476689876885049675950966800803908111727103730290746859704424515805420381649626552376886248983297310694401362496220140804398815573511228824628842364345041624866728185466395683845983309433953535938108058357039174210156727467637995394840110691105253711984005992722453342843345998170979236440577523686160055429411635330384167912899896557841077782949789373438098881305617838072323317536109336951624538196208634123507300804465655098254143104486697758891846847188297632981027262413848286176821602224354638040867521714448663370513864720081449252832472007131456067030912819408187817678310458962489301226099400894809338972197809591349448122793938369118448935405731996399216480894105557128656838902832577643905116941550586771704445278777619814947490798458745774205222115592604332132464727115445420095730758214478977725195907641297731837708815765685437963813727101970592239469662983944423672648655941321482603028126092723994709013923923889645970419687469201629941159979536854507655892449374530970642645068865641765922991783102149007231391604601358751547304621119389289280590472853275250908123868967321941628880126766407621108060203529871463107708682445139256919211583732869018753039332452000056973940421324410584356477035269480333646979920152109816173521854248540521511667305773736068501472787618750555113628930947771051936294390730970122346118140807038719766629243495492020034823695243612986698727893767672849995781745530928304875676561029299287531163702305233686347457492540973715740252149527068232578921174608063481619782545894366934751484299987550831935058069041860521260061071977427241804448434075174358262668351812694753957431804845471892981796987783556638301637715912065784512472208596917451023540695412673996167367439678173897175318974138734158155268854559372854610108579581189595717330086568970588790239345746134827745184526672144649617199288563863718056732367161982983610672909107890141544562694265478244485505280809146291722141533433495899519802160699967898293604728305191281474124737730859323089830971578431663621081239823292346121046329806721845822510965719019711492374951342248683204659095270024450356959135058165932544999511199666105823843434528067052350978102506176320697813966292214170060547531892175695970635032667840793534438939737226311170218857954797217098347610813566698233553602265106809637882198100380831542801148896382488431642176729848816765200168122633462836587405679738819088676122303594791748445333339215860251566489527343427173754064108222712517849019362941326595463036345406407555928040288580094775719924059064489424478563002716738094848075273471655922674203070888407758794008886292865966377714503163330277652289151568783732823632741195038356172308668906734121483469588400209390523103322827402404118285290607213337499093013867183411498134589854242774631408302454135681797530589813211648977568187046061495288090007799153320842757030131523358038817189260747980788955145452787453130342186914098200932286890236663476180102357459299621287098667557038461229672863258471170780170667744807313149877478534242047738066144563405985803303567561821079924846609695343394277075151090998664663410662774790616696472401392492326630504806730886929977102665780805719382550396903236613597375684087947638291498746323890048360783656923270837606875253497064775088431998262217339364110539311805055765861309608969854289928936776395730011217142018027209015467465494340084510048960182822015258437793296167375625512939776037402118120582967592232658623100909791630810622668947068220412954704767107614396246420655216667227672036904491291710506812087331944505045604945711378462153622267409547559824875127488130741624695578202721486496652589793342888377675268823661902264431677703437649047559311026418628444900587961562418044349961988795288969714706624624943696528527657133158822940022758006288813943950465449577401781521311655116544276755874159965547519476484200853402685189306198146955343880655658671425802195212745588178514522309393636691472027802425087874538292341555274148149584454735155486211008454559361995862409238133159922300583861108791218038843842234008561074990578982564838277513780228606985049582462807503186418054743793227530567457600388704652795743075060944858453812446003222458722577571887804027896358203061776039421569773002163145260640480690305995298440398590443827367498198308936194513340726160352748429276315356121628052848685742616001297355800612066826644193830743082176496716949510528296078829597159571952516118679059869807741634068806160193265526408029768506744955526867055653379968867256277020572377874317929721059262835870667998733220841988156995322534329502884249033395311495204976427232600196214623344149141899405389840472365928419147704998284626092079484302809021806611799537024546959514636593884156353837321553863996598248458850016245909043790895649516093616662627513720257767390654367416833282170468486271264198085253179219496112766855414049618449647439450124261549421204120944603099888559181149342243873457337733890518222636117397946229457019559775707624408373716005130886584527487523618800045344317121183607117662557013961170274346447807280915825275627855540597545967078400639968994219689709690600664363599400024846962588308023152437670475504458815265641011966901362357831173702535912273248219566752206832549085448759540039190225681898440556352587442473482337197579926668957219146787064749523730347182800849041197226739217933591869812210626130061715700928439788923205772333928886447157671162743995653147385104221890588436769665214955592322384415116272337516060671000010241371094148701857371053752036623455518596292107107853256391342353256706745976872187668160070774494493979493846083909231329269624404398403301614924401902724319257984100298873288185617273754518131593743389500391581509541095495722041308886842845218722821497273404264104944285782287156739978305200185114693555962151733155134281810874640995712036930193291460130639398103628572378072551704631978784998171653194144318723870118446722597737523735173229526491258285535199835551074572594414589210168738236406959858797439547918287823038527105853211858087986901341265250347443717600246099225961848650575457487293404674375104395936601603681554332565119201441211938366700283155703854889969275016172133299253675772470413477614390913845702824591355683139132800898671886303595010264383170791566833931567230176512111354077921873360312455023549823885691550764254221810174110407746877950986613574457936347000420195962023585579633246453444206768984097626085661868424162733935561107920576740407476072939646261702081125711175420129282190285896878290403195976551454707376004408241398353990644724996946532850983094493439969260760510387561415899906478378849725189312044840637336655971602603325902984239331108329569146596691660245747542081149280723274316886288885293726964410609502656438282495941210179365945806849747811392088287616685088399273167505140822319757243479132948502607362324986574443878107439094873437387570848702488883987674631313412839278714704368115096693063233586994556023688699258277078744973039824257678997805361904297664118886295993900333416135531390917787918813574446891994223228218910974761633287805438812333572345681739077397273673865224801648284477763824867975415411634221102278719636744272782569160455971259596708546910750298467982680240455131783173926964737468784421477046710567036336051842347309699969162591740413082921437185888646352402727251461933668117375451052409791529842735304839201463156506792436046943109931851255966629925605064537221154108775637516130432944001728502568099251712089036794710873208489433775198882266413175425560041588295110721799583610389926775017539667858056358411580315770698478515891830574536670482280021731211841121806634383766383846193991716397396913720895180709573300593397375693357484445182965356031092873644079453341394626904775122447485665453008202789181827836860276409902111726364304204906400798043757251734641462183149800652992694605363021799455301130283436679838901994224639413648662792055366591773631931526938958336870610205362852173920554197143631875485413690678340620593320239018936303108452847101282278305212769972143310843872838222456148688674507225099345289006458909384627702910005838619335354320350277296727719954527257744030528654512252091629652485153805509427926065320840960983181795234371176621087832939285563229710759512605012525193545637949588817381574350869223803766172559156519077589536163704719283628044425966078928835575183603794799230375988325892208474438759221547697631651573839218186636256137655770160023056328407127540692259014440079302806576234863160040091024897239598435915179578067643077202499162086666066765163921712875131629581752127702416745843644852695397220882908856841238451690704059190697639299025829115067457092309431767185684953573250311691806044843064074977255609989279850198014105474033941466088093732177356399934355627260687095028396265752238079487835374504043853819080936191221381389193607748219140725551695172874962735305862934979429039509916307669533543422638945954538527213765466228427228787937875819923103786381052886502782287199217789993393238144862835955809564949745400013881089973148925055553320613417818417491570516637762603187980618086963349156929567519402864167495848910893323411311384104633716183504791690821209011400586675004129088834408809364762238833672502332154856459522582170777862259497954717500391137386897827830403394089683640134208167190665068769919528895831840115824161834303880088065050436158077052977056877456693547091618144146859313758945762647693267449197079742370152049498156910733523613553016164512257031713000365471445284590864430614717381758497796387589204197084730622725306993758682009609121399050381585667077176299410309325121744226659478720442096837275064466294032074487349608440424815746085192139605696725381864569166114079049669803036679934755646363030763423091790215129627904538346608890270992916601889360662673807022771601431583258941615944999421414360042795689874987570579365401549931037269957175693501930035862787719253123374662370130301010780200088240177901071602291491164253188730360226562957880289306056879727670051211282979654050721064171521911527269569008306524024882707150245334567875923487572392368235783725404679625162469501090990608788028818045223345509521467383701631827687081269301744755097289487129361229419297094520830719775425138714934846829283293591001558536028787343752691085874724828756868513435225217928969105546138884887000464616456236968482571002440553908032132841970895762076576678715546424907580473807991791238969488496667470927996908390020298735273619111682950826460438189875414467258366430314096966986930624389588713508535186371205665157796552816268714756554499099118149549252987179658488847208277173768831362915058388812889643898991496561483000586436152107292175535555246638598108937900074085003448914671099724520236861924517656407423805861509114067710946135384725000179040930716756361233278475430697377769093945413281822849240735606421529620098911976168638235887116297871849264328319570966805328347399319237843021376182727577885822770032413922348619158543624198934452405369633668161050480776096733997751735340278513123956900709471309070850673322458814697257399168813544253452528886046263190124261101635206377644559639429356613397721235729456820748842863982902087451772122631650219879042906587235975794540399440884854006342156444435450437174287981163997670709604963335135768144463787304267963335412868790900158637123585178123165659663991653465991624518242225850848236013513882262161506865939599442657140562959994970600226909136307117531515196791902932080952056786140967216542942115683761162273186126810069304008086041559701084295837581723593755525324160133501316874131659192142305135833197785186597805873387263157809600750134348912079493306457244837622845589017192976172091142329657976857189567455731219469316100211574062734278364035099231663392726804461418241748353159322289061332895877647087764471850191603080875175722330495917867443621406553555041735936405651421967832568981323144003059585523874941419304369844495640015553409304833931316434527555377394959411974625743770320488041922170854075946991585261336750125724250964402591590304190720685853422602207921056432367888262063548928090376143168656793158494938635362774904067753465721791219178526587280568981396086508384763174691929442258998439602074172107870187532451809510911479820166359383395706316295374882351158445895271538431751246099199030595036001824841610247608228691137151365810936929076252809654628565953545673536700569569292600030897160348971775902600252583410479879664741045478357096154979427399501476916018448574335742903831548757027843060671849608270376970479636111331659693855001122668021580325270016997323415343589108643877280570826535263120223276562237044094370548294424717280373625279209635982540622366512979146248778859003641111788521346560307240373143045186530643728279537852613474752101734761779257227253230510953652684396066663457936079245234480243939219737823659643207958997784585441297636514844754804833147469280718165899729036574028324286729041267938655563363906066405330616432388676313413197204930308841884031504776843429063357683645517615502521543834127125622015780918565540177319635047543548806922155592424007864358865725817754864728462692642892115512619138618553596568876034315925389693827581242511661116244686570606119384878369527510858598002559711085110495404531197932032866354927659702041954675191527209372629118910661109826238770295238422751826349854463300965773399835111843774116119029275418083664452128315487686321596371030535690270490458659524630714709982299863223971060436969175662753468686463617208205425775373434697369217198300085543946669516060723196976882118576528777353458469301355831321395222752017864625850587462501684398601079129239928827756630969454213985672383264856568948660611513206272206002720791656613930653835954846795811042743088170333539469698507372938864234660558047684813173112712629791630355770994905018258465189811315882826150274554410185326247136745255699159704906748991121783102899515000785927199678714806283080123945578850838071687580819401137287248848864241882703979161993054545673094941445620538855728995653968343515240888021740360162411990651373169261661531254146285317852440186948150752891770968935858682425776899905315003714558041230729988733407860907732893609121443864055976764054177560752900680494126011110060598748566949286553831427488618724761256741437427343746913311714607522192795089794032977428083450787716005499437123988259875093404102274875075985745715798777239579315660083760077668276087931098107272003621050616446680187732313078870311627139174413334272352532276806597618699731928471462038594733011391502943067502855423275792553345261973947893261810703931945610558892093263978324368189142489997559547171402640559042795931204216333551098276982138180962957524891395710473686847039070612858818720001786860676459558729077430863431639679078984759721184243742760740341671221999324338050391150618674819589133510278593955781392469157244834501975678986094990344532954049938171292314923449061453327147960915874697231215781901949133498918296153534271312236304649805690278985318830270712754967620763927387984504318467946835505819866230877405141339039117644206692774353007612552911399450427908993139760364214512629414295840703605745375600622503974089576658321512421497107949881964479085719743504880892773893705448142361888665188663960556565330216557656046180650922031593739486017779772430596496862206660269708836602880338400881816779937745624548362700258917542179969538672423838880005791257715971448393695722824827670620084429602791665666612420996173959598277758341563608932915930511899836103916786559909554318779197079751279874502689507095779019733661321010041105833548202824907834136092605284136717939769027345348567805376064798336735448350586997009844453700761204807992370620059988665745909595333562670213231480806376152281982248451747705552757686498411685356956117788887995228704430133967479961097217257935998559205122062082075370955488781759976922114447644200672713275666525460321520616803352323429801335495039072460066362272793111835008076777333383443064687881656403293078017654210793047055152547542271970544320445966899450260822658605556757523987482646119171040284953900294225627901716410918017923611048100140776353995288650041601994643738296828833288073061607679219487769978110443852602318968016892592403622159255610025534035681969428628246052509550817112393114915362418611756620388932806217224769841559010710111228339331411290909324623909140792711411776895520226971724801423792818625246097948695066355058417190453575708045555111233733391311674490688775477531635219630460207510888205331020095970149262710020749636178675256215293949415538805645317506378461624720103371163036939036983126223691791946883052778280369456149781767005866604524728233141808778161062774530987073557434451184042741069074811420642321507894598706893567583817761978501220612930010598461328374912925256117039620507783997821174973452601057383436381816158137562280626577789196173726328250499267958431779101332456223494697031642140375624790875447210041820867112314994282244575353937919087484080805477350698976594390226701905309011538206135668756237800459348646913383015521308260498999697936062364590073025723141837444961865658609393303684317276180059106168974669836998040040080079880688424572752551501216585521402312177471435336400818552050383884025052698609959307487623191412002359506845562486176162563651802945392065000228899342166024201622754275848291150857048555899029664498083904325451651343906588684368474234706604118181813549248238079222766748736568925221904532432627805472336488600241130594902545071658462463860446013556265611068206783133384063254833698387643825638568077571962615434310079279905161842538214269759952763011025986461657951612795421677253294936476536855645554903684492545752313529491766356928274574743328614692472543309325124286344590689777534270971781587734844212865658271587089610174414956027331268716757718190523836693932769994112598835063617467519414989632300377108936969371659179369757273433560006698913646892014227206496415770956804051567750668654101369272492817004922985082312445993872636120788685905184208957746715547486181297858257506484024258893507552938781291500907849736939531823944452226043518769647714844244319632064544480434073038658500245462120366510424491729590704591006775446982555878943542091096260835924142760143158950250075051602320438267102829523721810895507596886092218070746477329899285877153600876561704929608585550522631086301108757733353600158359036097508749556982952708479406265627207596050794516438974729054987304050531514193887599474380944358941992190054822695260696181558943335958260754787929646144677656935472949139031894841814321001171347382567390721787981024891207654806788639203219418067989900914796721227876852745593134625306105378693232573092131585895515650276191524499068446256628269829982984913036878932845205553509146280066326209480647181900100039046618265564003015862110856818763037388033876218172553828836757598358569561643912103976668189193735389226296887718057266928178623294707564452129266457395100097980147485727131182141652016879587623609134772965511783388361079211712362656456176741007410614422646990480152538735898020608858503435226810877404651451864989190701398333050080908809357917675805887721922732295375836664333968531067012290432061105421426882148128621902388583998880708991959293169685895576290355734819299361096181309511480450796158440929571738519876790961249906625746474570904231006196699000795502596080560628642021581959715221216497983017769048083581244228557663718625745942828451650663208489514560395227369570547370999149949013967327525319248553274502660682203461326735604054958483858545958778027718072995481186539649457889385304880042372592174315435395313686159125307016769155352848436670052379112826746095573957218241255579296573964138053593664248035274311787761514004562199333651001826556642179664660034855603750045829570949933928417059183410157057648488978377989850006690653166649289148108677615110616889607652470252720996022437864733578991744934692792838820021297408360443911263854037408067438929262439755012459386903123442754521753669507208206938248836608469294205788582612757249613041321506827792353263456789038313080734522857166807193346519158312453774670348612062968656489168208610963318888700448938367368243831120288662879878621605772821401720369164560302130863666765983125634819057788287129679051645148023955117259251659000660230250295005000849035844141363777045620136188706171023690467346615488854125656591871856416387527340634826697007729247270916169730270404370881076067470840418689075634209462525354950595514811741090302608938586791521843647958193536113239163159318393922086223286739512188114404233655498352439119460040621460836401776338577693599441085811802361106485856961250470961192161343484188187774106520300763913479613528037949322177934523127476513113449460672513634893839033115639657416848901913847626377268897959629809297089238543007356968502375351163841856852951910325001557931357168417021166068759393122639766571111912966244395998886746905143251507910260763548154299602601087046166911225622576451073333333329412874251135596785984587033412268019091619318704766903930121155765326192389754901920981641032136913823324177233169678648400531160494102024693962334553511245235040345897457274453393970610176172303549750318874741350227131654425973255583043197231387247676953679872814170525024927895545737635314794635619273324222855470600716610671578738523304593244577999239915191604808121727386443432347836612467787357705884060690523159841860660604520710337853255562141903248374630268917482610042733446575844715620643049454546845374805830033385598564305583862918689267950926457797626828116628569690303691458436178625106816589451308418439374987783877194012265732069414569587676425567153544593333337898884396004094362252917226823894658810828874813836366331204883722775101234930854472224499482124229598656184305392826424144901161619702693412546471921035081290295401954132972678712516358995109824780336879045946035077472879163783212513472498594325470675571571317402047922478579235319742792238318191419543880142686072587088706301838593349745975818365895840041026828466183726708069229982664590278603917864053258624709405564347624700979914659781694087975642529874262739372864518137225430845003902609625619334180448557518158909935374057423376633927571873077916965405222705826876342404419904045265604097402088616588386157414844327348728577965278906706232861050556524065697460445049147842694047179717857189598626233136707409995668143693867291493330583705828458435498688599208379071011438879006641564916444594303714357319671672742074014324018289006760416175853654750793771680368599024511997543064196738284668872515644043874323951250520305596962075017755062940461958270418498616692649032091247483634706602458248111391104710876139085529321175015046143153012449045365096579299164012856137955598414235931613677186435172007103710473565044465422901228401521891652204688042376912327025198274945051652714557019921656490762603388322961298734098887869165791129470007378085905361333050969066820676414061367922189099348059239889588028011121458834991795471615010299636395921222565305062863324739685680078136434648489312077533137954454586382713987134844689822291275126896000592684279574001636427619023856999469690866070886815649317479916997561985857094568623723844540601808537102495131962174563388923810937124155047055333864176287728258461009899986700673042517914773332317385586815960933428617918512920830571368110733786736097485839110415013313786160818841898849202273260198966366287104554189128179827585234296117949164902140612037152989983842366206366942845148602589776756046004733182290762279234798172809476998379697447204381059396387220810184332599262305985736623492143179956184310824425500394169217332127611523074214106880837583710092148753697339268202928522295512100948505273781011632693920546402842756718698151314922016380562283455730171290738355249708090197200531074955831427653767985066994778620447374650118866859579390643523293371081132096805466798364159959550845350970026326980572705117531165930673412916410275978686319784278729007348862764447166719897052698645162341784251894101044911956960601668310326008202887538282101201984929066623838799965253455751110572266695732453620734351750644060616272921823336818005180866611227609161342256328572280663270606819422596273578315979332160037785788983926808501176905371362856380527650957179321355654839576235108480834647700412783886191831324956058644113315849844286566921069866894432249327299029268779658086302091577007664768672652750831504397708560792001275110160851026080903299695892709705551319412817717665285342039151655637418895954396999375267201896767238985743949791522773964948193599765647784801448721258483897184658384614857094797494837298887084222048357116327003485388198920054354387368428790686398603282355985536324713110532975859720232331049166186948735380840776001664413590662940760853649647060750542786812848830411507489799680046404796082919652231014108207994976051751359176709481160319712881818736214892725917206762766430641972108608675544201985817262267971632689449695882343000986935926418593855006353726608538624304499361866328891700239625639599048935038616499976227323417508098207498769335500963993653923627800833500312315131629177854595276427392021878295837509929584130926291734807876869943420182789556284532407921041649368663902901424086155486938909687832900930459206722858349872171588401216928158982332863656225179980683078510047003497646318698095499100785222173178536226030155903756825712760205065897840789841613168718347994575235799114515733430443141133774837188602133625910339779703242753463855914801920547997578237340047383038573386938259317510151820030933764143183806682831300205121254447372303528847571983123345855810821623475244244645054474594685610995682022765336926867619147593101855772062993687729276795442796518949462484790715704829093691442905741959344752382956436315911194887981906226438575516597942901161835997710672832855160488815481585804526296474514053270423051744989445167096501401061100399772886928788211719254458829339545004860754972865824075877301322403153939123693444188450032110842791973771162769076726911647885739407590178130284846810741490754645476157274948616836298893192009999587141525933595490194861424917070407087525284798431962852612970007789876800460449137732428634895253062500015418971756509935284359761093531017219867253069751525012199432958976547397184662178710620465540267463982025112247986811493272639012935379750637988675920761159945458801048498775679500855974028720163966350178801223424093247884613352925441424752219925455270282218461372660458133898070421437410389261494369453580237795082918590618217645288722458450144599937065572427186803614423599230791323519550908005686548443725762549438343333831146019752556071656970072979043799636736583290745201684952201310317972946376459038986238204339293236395733509197476057772802414964409670157666415551307004928015712721177128216009063475695050806379597951833019669733061841619929501060029843570809349118302623117750163803233608190627090576824978945519899499091251458841061714735804896381455125867645928233948669020956609628056532068774941776955991171939452116880790075396903513592706924396218624390526637674383975503066858645015298072358275848700894158202060219786968984340370120108047350065636391171549865262115885098921547041726392756300288670660899833511189559912818563760976716813092275239383844022630318582146530522278725271032254774949052132908379141105282247375655855130689399751106639831724018034301292541178572745029511495776678892764024856968133824628526898016694325271647319098480175925692807996557664196208134432401731936950125031113923426155088644399919302498623698376925188360085713640678555522682599443476507196430980006065904735226147587499637410156085244300473155494609846132351060093495869102575110352905855338016735446819442826499860623648223945623584274074718003817443038022248665820844922650350655788988143559332606029528795365948858925755022271252667848117055591476597121971645670717659489760876042378421211147424359074855473601911579612504690823219195344759921598457766583848862067159778085188081810417389580226651170803832827265358602814763773143862509696242005735440640523603148241635772872943358170679514508321955904815456838297625490306460557964272106477353987414562235864687681349331260310452825242837270831009765146960289551664077143686935487973051508504705155323177892101447692979263338995854415660328467262330818966247419224588678044744580397836905418711598568409216360214182824906741247199218712752727059223863561234134332303166815835962129902810456561420026478049925875458717769880682603631391865454813663725857048089365242807683053889186743231392071403363853352946022708895980248025558372755740136805345195271277924653210306233413225515052343490751235519821205977713666537105897935757650287274888534094428230572312273557642131670111821136582595170555685532725076134501744327978894398604480869090578582449635879553563766243064267257694983700082172014313715902502007573001940118804656304626870804894962695097767603443417437645937434935739571838918815862715527153669416831574525429662103251857164796871868060496790503731834244614151021035473510432578574182648491821573284501381270727684034819629048952893632445846246031932388742914528561134797199674211036501108724146970825228363398224577997806258236039951471415972636269006376226932215524485253649908955746719792614805865556912326117675474909100341922418231884939804255345177179215970914242625270386804108144433545535884757259914723362647474653932492614940982876515637981514458359860575511286043371795004521575709808526304457493338039532557960878481723860972076781761582262500797211337834623160903905206579594227221597322515540286359576579321349207406553628275885648433953362244883166002430284592340166546913707627464857378900791849993873912525916596278963562100744690425720420938234705337797256131015976092373387013550391869274891143309600624085342747640674373533738774101729601657581398340898550683638244054821693983257423527645021601934411245716584807811843948451401488899187145874716095626958305624175865787828541684191861635616708013489593067389973952619883558585792138948747783698201010046091944403909103413633955995100613974908293223041683128779921838269783391813227982546729884023199765424406340789053467739209573576152347958010005026800914575616085320024627804855221976162945320241508652759703082280949967582279706178223484179736494946596388213144980701675898444517766844702284223247698090919038199771538385537765977227119853633314562114426760795810469518068299615943350255163871048004727625833483808316157417940670748262337858067673315590102097387390041032414060376556533277012963737702895940203666277614918303033614433844555389201383398702332710072629162834556808437615054556447587642261284106105965383355029829220841977781236835004602258772009390201281197738947502094478419677029671732224843051276893290271865008435498182092297438970345015507022715363015099791602366269140558802974704148797024584574234345582372406010333631288388073107723039424475576348755683605108816926368604222140456617854114291585784207949973157502448303702749870586216807354389486012384128144595016681149071700184616610021701726905454674215965381429859177869590921118270834057636143800473354771907673657254579792436292451029956043793922050344207847923938733411150308475965811867142062973534664865043878456797676861423158756006537183781718270796616658747348956432422718044668997379626497442894891073005478739486370075122452466896456967328556089892467508081452514441427591933244947677388014807661598603013849141243125738881383795517417392443231506924803835709957538831363716999280987576108165567878481535189878532619970223417088166186675494915574623608677324508608423258609529346238374221388428788440492556674167562165207931601640416595817947853142258157037241060735945652202969578768208839250991149407692328045916096925547090504644866716107467824677487395455752118769088106374356493542623965465662547102152945225398624075788484062108539900600527565111654077794727308545154736664968916318729912118159338562519506982213478582589440977890021386993747656229827875793338445019188111584027703328111786683863551674471907298846821412681363078768953908645594976329985331117975718621756645564234612660425000814478787347781378943339344348488686327364679128351304993051676464993525359403610976001087119630007346032260920122911940468375789600310278487225371058335435810871942999394764217709182740190541739159312732573018431495462909787637257594349182268238861716276397476435172548491423920646136161092269725513828281488771814603618930749287536400910761817890224876526265046254483709876008314214099492277478709306281731347699356333623972710024178161617147592712544487174176391547227858073782752934977418128474814548898679675834808646882874100932649779059506009523139694551109775515846376708296282100288275801004034424864169135472599974268802946763435042131633841934919143208863205661648954399497301914152882508483190644416088582092333253214970166352287286314833921140436778428873084541677202234886292951749992949184537085738264810150224871038536805373807211343485572755718363505253060100910735916581184202663686546978843050015556383957955539866316835635115892959351862812602565065532176006941357372671520168665580047918441332718935656382527666645788123459430308298443801272297541189567341544762638577872113283099893161835810365121454272658691621055029785603091467213257843886488528966564628309359151963874323778143314825083265014025796796146361051097577227884628541244101567474713219656855870273617358422328021961624907420861474510833722064521387801599077773799000735472348120786209539028174338227072889353147180877549700718341291547993563205064327437525785191535661793361250857075091733899285170160944409051703531278477213473569444931424834455013202603789116518584095970490534906744300350651888326017075927641101697462086960431720614654467245782532747853745646572971075748341588723333461194177334718715437914790420633423842506785830027828124459199405552465218387068400536834545396232780119530899055010364086309846502583979941681146225855249595059470175981601508223905461183926986849976976209601810282837285171347610859628535254861780791370591048945522172357991378038884404579913503224565260778168295587469491156252799115138871349347854708314302777983318553054135386443118748586801681169401336345683737028051353243393395408754873928006728675655541614952605223071620506417335250038230610317632209921705477796605540517227218635134385712473603826888859800056191433774521549705208558976174585346840410333669094714469377911131384309708124349937696725034646791950411397037834813265824992576067441204097622475785111736419277287704814947357410957701835238686004385130194853803358025440050411690658928443884062815248900088031167694487395673794919109474185803735070763575707258719814432330456775987341391414675234990290634466869934442321343501722340206875806575672378438624980691086339486541806472904293467177088874829082816575471558740837308110568689921966825237064504589148321709910644454197106853322990472740879121092186655562902228084405693652371516036079868976200153629475366254262319861000968925591162017117019672096974420642176790572153128422383641438651700054870006531073360492555312022775551857840176901183290075230447753558471668017194475657361163127724179589155058213152819756380962063486659054165282796309684571198427161204923147931198246197635014531760412725814237957503280454177239795098453346110208988934153512857387301602223682191688084952699459432205760655481759162628684395173608268471346752167592841557388716044400962025566884532973463219526755781357504836814999548090887124357464424059020057673129013353699023022440187359892659588944136416882323158046390827558870510382040199228733476699624266979345986959577108004112279976589014995104655520722809257161855783607140170724521147949497727606384567133659486480398334696781310017854626064261983691639873046115159715760356592246161173339739203391018276852471092538794025121473988841754982281379998505003466755851163615440149202616400116772963002792922453334993407163202199660531252807583610111666005442680215202560579308895025237764343581900259560875778538566760080713920933159207267639855648596166645839217539166450349023361898173820130844929475731459742765004710123553724450973359378578009667723310318159258740237393990140713380750404161266759012191160718794535437158804516628629493051399095526379907858411813395575598292360163404538391793238732566614571154500888537969449878485104789507503964281744699084726779131026216430786394592513949154968591491613524854470642442211519121929598764901918237080878936983973872869395877863817486984386707479708479125204378035109073388459386228498094622008363338202455180636728364886507234657840932912826002491539287201948225081134297665069008807745096546826708231588952527323144801360759991597404793434225791441241757653657523340377607469847891828555747186405090086814614894570600309316000175530237420208658173461406647327389948919200300860767085255950239957942056758815734759044545817760297649572317484831005612777624905640177431592537499717990836907657547963544265562579228033516866058136341531873770482821257278503035294821679625026813687759061591222399860093318399391330384939746211519823954384365882890453607406180262721002690597015019436538684496898612953973331037050330480066437554202485316920374438366675089632560991496860901160390667037286966602030627898171680598823890292975110723745741214748947401080586310564674464259882030475457854767422543789440102542945517274457679819738403240528729123219198056309869797888518125653075836766223302861924846987945898857851689048700834212210673246471643887594489742471581469232379702092059957291875733402388771525651256669704578086125514618717724523876318118592026562569950336026269304908736901109779823066970456598793299416326743095567208530414892430494833550864452337553240775251700737014191288531908255524877657014896462850795443698077826847200931009015319155250778363122303893947284533303065615244655561337075670791953681197926735033356948424596368559673820942101098652944288996265054171731099754949544303892253115576418212673222346024641330038072225435702214477575848526739310212427234482027234942418860323445231712756437737684754963851265170666606768560179017238310772365661247257726117075994290250701931070786432191422888933705767919704109891589270443865617357655180074561299555681225808441367587336063682370931913915123109984297687282723845546741745536918446207354223204965680597243914630952596943787056820084344389489942480598163950859716142226996485557563694804523148736131509289496304781244281944011991342722134863932658852727784057090826790711724636879058968247994998557065387510116313060666182140482924103674686184696368921574923605840571189505234695559099767904693201179275672687691400410202276881687799067878588041635255849088545992430645251746255511851655253501985234040436004178152175297720872687970455448475656720539486790189031246278075414172089526736450907570633008447023031416157871019601607201345448278521333396726826853578470341064303606928068562290294639297930081223878881215945525838528913799761309260514312112056001442303215063545575630321119479038811138357240890924238693480566925192669345726919434169360571987500881954303548417934727015441825103294814513019332310070787015443446901113614508318272404723250318326621242446967797389986159976728974717829562427092732748317777234537966736483260192993444034918276679824292046048435723746673599656971826215506682055955284777178788992659642490227631941896158497317554111083710557426487812369135981646480041003178816224746146727765351881954134648228208592248384340625013607028833900961920528666263552299779564085722359962010319998271131670882768370732474790779925724029030620239367120076518977374959573555725634185274354967534095849113297363932162538175160345968362175547061034330600434013116453053147588611126889265965285403084404383300190061528599380178172425332271495709881602918749898253254040702778700531937921969542859083721175242102101926579266650934021394252784854559079044476908071318175671060914526431962233086888197233833367217021397416394840076917653380819556266790009921559914898870439436416340644681487794929204390369469976192999807339592844027194149733206767899168051679770840311444536564255628259962430841368753493285285907424072998662284280188185111400652551100342235700795857156315515010196740196691994687476600596305705497133535722166434725615250077196067487633127075233324156756811690782421306085750859757065427506601447024389525099326413248924004752349556542438485701010660599472406941545928741688996670794307746190565932220624849884181129912912800520236236586049264687407890836823143702393578783355322771336644186847462416243098905779769425725773908622456254064392403334418347452255118431155250703666545517423118007348532175582323571828595081802989591129356783685263490588833614071962761839054879719822474101098029776273235294938078574370145573113405482081457885612145123787678508427963543151539160764153773565237573553232724913455967813494687201398545733524544884425761235439968391970759973275081731426291800451346241049279535905544177625133459027596015158343308434426723747699068865850565930685202005953775243192417005397207964972182854334759059629350507762916050672939232673167259047160094319257671853187417155937534324061381060416615213229036094696939527247424772977455263319169327907479769169379483621756130115426799234862290843438129717619816151549775537189249130639257125054400939184728894577977904598576750343209505002723872590018902281969964710035071687629839173368547607640935487242076304492280379051142797055969305385664622304980659018504028274591436637245364619366955814953620272930783699396486768679122968074898842339208812860058776512559266601634582253483534555990096499068124091655333314797616931403629286597179400879401614285111232010125552586413478821189950782283728978576910917855193580170771388756682330676223014854279575296660394763763292224386859149253787362928144051180919066531280019870542093375937309231079939145148099388883361886412153009559051303871174746498841630484391325538320398111296070273791800406431670247495120889503536987616514199529882600669627543865439383338834212561447287875309240200209730449755313778774050191985850394965133766751013926255659970231332459617030491907612886374430698041877321709500377045214106612198057504034222680457593595321940542736865158494069396514820652814847256592844965835313610985925424384133278993307758697418965675595516542288769758554166047467855046903230280480193733661229491370753426794825662756455892821253048816533981506920574918892598723318231824612175860956236147158251719663653674330501721521464671441447539280499701027893797031750017386733423036502984007628408629839601359946576984123532140073704367005365114916707946035274120714916920159048239538450458353211762880422222248924677678136131082161471169729840724440169193151089282528021199490189309261008638217631815250759820311879091086944456801983918778884980051662626600995299812329353547453154331828955953898114274284283582445379336196873312438565388184705609925044349124879297573236436176721494771620584041969389938354120965660180837213346149987834502176116381213507904048516182347237969383979847150816476528886975100010805145188278724495786174060793408125234829975348896957952778413720039694129134705755622680114769438683098589709164110799276118812517497753384612173806015811915560104748394272764648563455830259012085779131966907952952703875387963411933295805346925274545680439641157956722017300262622796209694323869358161582937159362966308492949073898022379552455794697947403551959991928602245213607752291983914517699848099558055795127982723239723903238478280431414374372842963971527609996841424877804980674270996495575968247298578337371886292473812791796659241840423843375682691036566339387917680031626332633933757691139332555050406969448971152661202115038285850032987592881353326992710169259468567068780930164668264378153172806698229838874561501807265330536705663591770243107342857368258213593612683431963052661931042376513746407226085364735569877702300215215485135731306269960693156763063669259379513516586495088295777172369144335243036852550582097878563005593905394948638172396455950090017429778466023672490929477140403219352473751814535131537414401902633912151020625762621539869136792734149599166051685047462189262134705621876719405771150995825284110212269321221039185373411272627677217947677606840645766080298541254688262534923611487370033738485887032178403653861363659936648247652279861517945237648322627684565479234842304557041124051267932269056632415340582906591170841390640147751521402091518727784635358163128820421521655275233449791638931612702037621183022659935215188677612155396029030145001107562334687814422501217345081406867010897386781624478554288839044219865383553906800600592046314703850329385298514122265653008831773534916395776884460765850571054597538157327387987611196860823054605206412782949142241193848488916032248712693999390645231051646755971308426450054779393652129194524704627294076641090212994779577652423247114530068807219174177138061431237097265430194804921061684741062571539753509093155194957273716224384849002089176243958446378066429371478611767162190290094741239417776179907659578561899514721947162894257079517490474535843644082176042672507159551175849173082750873517793165160546458596439568514348626637384099947077577695301073566255932869703837645289715603666985459227738185449927986385551790868947319256617030397337281925848352810860128899885709148739314743892671230402563353864457569877059241584137300103760939711938398944285018785207726140351702023090353451984098977348613236306928627459725599010928950194705844293916854789822256266047278163475107827785585547165044292073104468179191606446635122452992943631183398203239641186665836908765402691019002827530314885238898481812748137097330395598617519788357092692173425685352089216839745310023038045737490183959391532284164638943408619786710658493800260000427540854891664852493324655754319494190105331273436947828883747181474501204146514648631438663044520939635654832147797540433519112183412287593290559845476268035515746222963541656653535698850868867950233430935089866992715217911435043211020816929992373367042543139692112588721259813962561994374450823997586174716414135129765287390711973768066010064491393836484705938910736871235188905520306197341487744562501431834987462566243306119816455548916393857974213562035567309776778994381266596490292735141893923728081889193914166161276674864029610119629165490457061800311311187073387464441092892132026764471723812617766518209485629168804052063552911076150090955135981644266244592900258467330011298674657685553457415426781988052321096651656597856606131950853191641922084662430105935806172654187787514010024173341539680764461710231185679732474351389062536266877469539814678975842265627405375723755214289192892778625584275196084510965473522873809172910343113044533253132517783288102340449874857097860924277629555494358672859881733550344453265103469055853092694610652685389851140633813901999560092319718945520296752892632529488833409060441738669341217023803379417308244975135462453915429609024086194205698061657603440033448823265836275452967584106085942116812869324447800160577993733495367215650658549853297617551888893226702794949846137128664260327703029071906856515203483871654696627180665815272116733130987901889575191840201980519425978583132687510704086306650230356659212751659370037359763480418734303927857917422185248087929454766826691501786310315679182514995565307690913347124247600314385605336220863241275074421615146858532877963410219366388771131519783619239001208422947852756520344820229567202787479876107886032427430745570057899649724745022152562020352234400929773846958967182434250022262533692127356646826736731121591339831093961332083118058307750034450214610360087951152414007383860258252677411833353230630052013989356823955476474558007203001826710061311140435204731956885102550733724379372656608487250915084444443543533639313943674630026206577062599345117854171069449735574230060542714984861081622038721022905399791616083053810573994787079040200077570013862041635017486166240762948669114498447084962834304992211971840408876114885336924389571439191356589672970995844733428705192116669874962770122825558152808026647646021304362725462565652193689275481667944735418021036376731247217191744415623249963555220056883749894411759332730382313270800277696698444996839704143315134901200259430332691164125585985826458565480915776697122792667236778449730560817211348400200240658179995608933961392074885004247085043996522690864124253706874587612421475236534660431545912823669699883158376377738517995625338849838392611245013252428565165026229497142784136551860948155659834065211753208805623920379710504058460981982811881996674248382195316292242235711009393775809522349632771905177914058036226190982892072719868555693852360007094012329861078530679800674546431828927666015230796906470022223586759197537146101442835319555703206134509456761396114557705276138546543733156179982767682833949988407824100027948853910282220277016673655471550400495399269944998324762373369028565465914815088041087002880058609579374427695388185713757495704809316409381230875846575562085061786696873689075359347059225234793540132685521082914295283939668169045393905893538029651412831184529830695619639066325264780199179175350715173070518748296811057234190442602360344065097989880129530081317938535860661265442349573613181313834542369145690781505034608142085559881727474791558685691756130480295204871098332733202685363783381333503405943364726081295581635050304320628072473947164834523196143404352561542763873844900158957621743664886801706467638343150084246677723531972590238076450492099465599101884808938123213888487834855893465506731059873342763454125490293569911923716348685465638696000603379671019681531864311092714323721072665392926456154312654554943585140988591166969836970649895014600215607367494612100387415425873359283889352182058455402172897072156233493688989983939792023699092874209106595415029017175971879048628709187078078713022009283950926424124787395585698028890655659143824677301218296882086746601063965528424950903687097441556333009748524862655365891807035755644056896906735719894877513157167526829814627125786684059206609978301442065133560489216937404400807762930422205634744499567025743511525685290907257001740569821335050726731098836935632778856424686781378335568528285338317962242944635863671333467289537523140819896982297696473928249895017532064318463192339963319088496300673511587631137573018292601393545278541223246729391463127303105026819810257936774326856796522982444285499500198296755949183355562359349299194599841445015323967480265046881894527415657590296391847490996252748259902877932894324442205903770487805254419767562620114955735176808336238093082953923252043297210417002324583725970573686572019675193586529070148596466360828188775985982000374270309552264146003832062527977276442067556760152287701025924991464548155626802517472912034013161487195211175455289707177137190796416535116983876947764310357571163580508699241137529539706022172194421352234673257923898584213739216121003547451894544700614330269697245049142317450133421032522197169122656024100297863990755052905963541020187314186455459500765648382604006775743433415984630717253906995625376528906449547734720211724238994448917455473900249468240165050340073267077130232403018386238665430204858555093033806049827440665331541840595535108494148015140828708304519238911946056763081259779383146929312979252994418001179373418118383231563938425122464631186226958628667793637148213796435006942721643861813784054876923795032462360180968218541107686496126344855549756288083851722812737527629643788355221855348444741552110812569911563661390089497364685377928443695750617663077531054392803348002058518257492768252286316705146518944145850551004497864411199841004162724280083836653404217669833377452665492320296511017804515083064083397990964405693057770042630133143074301931295927292202599279724778183812254298183965572198483543973504734372126735870039659970957537696273321294906027910390236915724393498903183379744956176097184359633062340108214171842915365605453917880422331323439569399398800211930810035414193733010906638454004544430418442521759998932404368985273038562800504386880048573122391062840208972075849271678861675235500389938533247757501681085093423955801467042783403799124207918600238013665672248830770737788247098092638304255256541422051730196059135920792488711641839323742124421073294342736089361455627081331478331077510700733365821186574472785518133549388743844111181707195959161412946164423001327774118052964263094927115381583631979712115015473797860692026583320383713228088339031722175105895462780699673349321466398930775519573072295798645089809329048945561599336149905210042104501809855248189487905033650454718827350805930240313220143329946344536932361281319394073154580014278736269232295348992578493459690489512044926113943322887232678082522358604952468214978324699970036629023735943224826956770831329367112721098533510112396505313896060090213696165050232397511725460858896407776716108991382564728958502406089581635150972320232938797550311083532853110497628899976433979755383584277942819270458608307774066896732642358533352107573286570623186309833901024233394575975145740867985015698302992698528929607803333732907846083693824429059894178015777410028781872480545648007258525082730881177165225675616008427298998110803169264750295065509664198953857125081127481097053379223130332532458691731616621258348958348325211151081173362394954986161760928024993644393908664375654478581600906712137621680376822100559132722738066146340945809465404262274043311825063135963071606242381901833568577688838792359179657208111839859107292881093456338294522104176616607044104710405065809654924155195521777038378378757385278662270758938241394749099995486495971304445016018382116305182915111273749992675794243608975883677089453934540828165905786039465281745892134523653354182830152179477551505319197801208796671521735834238049287324862522395698482927636549306371450546758951677801654334452223768500199788710302095023951696286553659592146092837431958750885595361271205230383050245058539215852401089937128916570790937084544949639086815862730301479541004383752527332266126898566478823919522608920006502573881180755908605656567054101162798956878930475768226223236719280224636899732672337198273432327198335087212238257129483502199252961212734756604526186126663814321502523951785193255150768091110886069925655527712837675555614535499749046112207294014226164575472201074975233643526137704009344187627713649890063504879654547114054277022994126494390242209196298857325535795472241471282485277866893046167050412908677431235893609367563207588714150189551807060059729367563649129599042330266813351440760937212073861558313951500447572544261676345253787128054407971520214409805907527643098551579731196478059967460543363092722938602258859132433752822484167862749135134913187655014964004122201764434238678430352875070230328442482780494739369027814368383200135965231392778787825609600987715557471707551775009589030161270014697452990146827733865305343878816895131918519373310902413729637278828297103949082393587288354971379276921967413508920826625902500837210561170937961419284307357968035850954325831856360041375021000187544153942112352107399756673449071072845489407788426746868381326377117649987989876309908024306497785713522173261103224617904270322144556313838547118967761974467843440161570604104917418745099230272159852371726088552141517229398186351640706490894998684825114072162085614851253068018693880590517213004035445438760175219688649050695749944963548652095302457918067223098588390527102140048310939986651143215882894464676432451916247088809548246990625391853812831761325198841940180064027843783987072692579097337100276310595642589597898079322526435862787772445224826723847077472940244101290554775160059798901999307247102524917494374340586127379762267559342963030373752363790379475932351577365249579737373241337640231788969006853832232093181825337866014462217734320761112869814770993359473956881649927740772775024173445099587753040986021396525735906533124494516291543662976517239300183509497182010778259909009813926874620794351536031412665821817310827496333432269281976379022809545693172659903761517391922763911129840770813087335092041438196134963661495454707358495247054225848493784430355376936605337761428515707932846148822844350349166276198669849570118461501110840120276897965982906757227184024424710899799782925591466082881534803422648655450072348370411805798130593566538875426255273380289461462972686580970987866135017916186498212414314822147377014263318572051448126669299249486295909793134270376800896927327105059419776443134811923256836473154867511642284108498793932447895261423982868848735639984749118256901140266293083002743687885779999017058847263095349824019609703437842650759649388834518628854422300077082007138938355923315189821478494356659875533818409010260362949696188779114838651840461672192610285571422870928658195696910982729986128530207341309418638680965610559247757851896519256965195180572031776332910668774465375864380065841556436793958712319364062741484373189123492511854858930297937152825794308740056604728374150283184311946854591218908571959218636865163728136258839234732875889635772874224514496600112939725985378385758645164495336175330622549349908855961727926892923370747567430654376378347650020807264445864734923413448170471611837571874569133221395635650711560160895305470923819668321636751460203051451096998457973579072161639583883662158674787896341817491498632296742055099054675365809396294777364963751629679361860805331152419114756556785757484573507793450239667387723467897494674360797468431548379153913430483130302151460649883158959704283914913289488431724101449336062545362858320225833089675117500120923918774190954044365948277474109778080974908185617596405697464201305924591677749330438209061920346035917964263839688614673608554283071314043364810508407521180966774347243261294941505116658182051880258275217150948889523129117447381201943048318470116024076540121154094019574476188147721620903882699806225851271257883056722116698738802613283619412717498171076969123944437007499801319559275763487482349642701121853487443972661153844665852441736539767508365828889869006174541176207293922971792896495696496759142309884628461438313830463441248751857781000818407061643989267566745927689093290440284832205260336027712858425321008558973543275425685331366084021119394921636740650541558255778031794147648001060369957481482418714522807387353031141940691546529497195748520515694434497021623559567198014747863737866788393301903598650890129067877337991814757923878093610725872728278308533725863052935570121263180024703607344460933089398242568911689920684003621287433327546165249567310710959459625134393333009314241797492882296905132885319112963549910586190069150669515499004151912560067371152008453340392352682260388281885485249607654622690310272178393249374104285039360723965026014398835091043523387423999262410659812321036899649420406402911183283276431245899011084867121550740980560785302108901331010799261184018685891791612146405970329405161127707687134337016637548537562245924969366087136466338186994328349729582024786861863773474225766459467822313542726361679349724121776447521953743633540358363274604064301386984718458151751949061223435278654783740532939761383507067257166059963681532777023835081235919797801731920009615009368890815668203118929440162257355407415155066832395173375588475538561995732087881693842127506473060039679139056460863848769498650941124721247556004695342030209726893802846327431026690299640947352432572439476597594151496381556844273017043466099942861630560049786090794644460505798430728351511003346165808435296917084851573287041783799694704201482719208164010177358409604587627602639671173058774364590048248625980044593358795440181876061384353415570014515935562502338037678740528391849728823645299618248279283937295025360007262568638980754154061629743929566015304706739479046087515771923464043363180153345871792555581330008759907949783689879584943217674254683020400388259192997361308582012775841809260190762600100280093999222751283911347705402859021079777974186444642806232206611202124444170788394285602875874036741974858300583252971661921534729732019755997264374193690089167382391689570817845024877990744249394305298183284657738934155796571534318087890674343267665043693835424874994524795797375793931230094095653159957594153931594237565958477785748469814159945863908363267722440767660254997368714205331447676534448979064523154999636499999448172657159454382246584422468601406779972488327493642084438703214928198622355382444645821880879570281675008582515477905218977102125690824825583410969780087992839092786426791569439151623494695325224582429183940907323528832555263725808505795015463297290148851527559445263554872089560294244970493922223395789942407611423612301190737044696308954100290592643776195346094494945222919001672683876164272827494471084819715274909548432179480959723639945192404121222093359309080832048285578423404963303501246520159259903182136970660772159151172736060548547862404764399198129119112680281693709554641335367096166886640014725084868493130095740437121215666581244867790443155161719389208376921690364717802513752374997709389528849923777872575267640861784402591604938938214355008662895167279145207466729110440797543368351437746243236275118346904794170164502269380008080373510622279848257127005877259975627390524605999136232234035248628976761546832096444026100187692754424408853041108139941819126341333496732456963447669780220812025594572153526196754357862365553753558785354070054458064157082751425538407418336827920429661877519363243905786961992412301430166143621687870947147657053162297271555990622288470624529247312401273274303760119383015048390166186568776304704231415143978340594715555291892136233151348828822809667819715779943918669133672252470982143770219145444050223740734302214814801061468872553914152596084388248706328939866297459918788736333397723408662278740163357560177288456153390774503883431631636304787355788092536801665776760373452420400811408472992434948577436219910100859787519317874098115271604968742660340885664411372314647705047521635598187833121223593552417993097067711911178670437828701625170187159125216385292374555954415725039363595283321145327110113571454259311600302558374455081479985733819851115538792299466181244914408797468750", "number": 7, "group": 7, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n638989", "expectedOutput": "1538699306822397186871093817573513287820305384353754799704263026361698025106428681431095030478141268587966299202608621879613693403359151392836304137906207294145759097023145589177805439976013183810691070102842680271619965131207848856445886217689767493970469832389907868569298034758851449128076974752760875006899498645665434242304828881933881470515524578535413139159554506117318943448280874916325900166853799603610945708060908993191983003244953900530583926958770899309305893674769981644500415303636739865253278988471488132496175826244607479440993577453752288179965085065819410752143403910396763988393226559928216189556404486490497555138956322383045736411585803149182598269104391255451392182046700383201357635026047682115260332819746917983007000218540611193968154648989911822296812570560646129361071035262686293063713986371390648413159185138778390785268585527476474629844668514652733942597528787918291439165626661106946804221042940027538643928354077754355428990453810005218233428223041288332915091018512876100571772783979776290376178946894718614923129822425761120083413570885985734096591295120623844417223677278861943313222783107283217720850504703969566860284178487329568154811441960779510034929988703403434476317865445364035596558564973004324785799692043204493454756140988134161369359385542536002773397635582487712576533914482664269828908676825136494496186428316242133114015627878254759191861636047803618325735583849666726224116851308742970964516789850331004577416514626556519264344555461380212350419594708870945995378691990430197643727977646635743382854104084246441227808046547047956237578575574938828658302778139189726989948564260870289663440156071006225629494887155088942195784542705044164998033752904824378783723677989098276961170385429257691634976706150703134160203945952074550818862250166324266347532122644874269881457068740365086179847923859932075253300440871998075200690114294271853632919377578736335741846968773249044418369801010307923655797973742677988482383470651469021212299392696955498911621117354701056117591202566915844715838081367567644701202654020519607761265577809292595535991844478355411354760555813965169042583422068046956492871997042832506446406299053070186529617982415824607053688461153416737992293352967878886700407948833961244329833914338634467335887604681291755683161062707153969165906796856600727013941607093493008281706418004925644361425552234056017157820238350379437807095823031621188327969370699434727517130921097354899911723730236874210239409221835749911013658868881434833319840073445313976355140264549591357540987434551153237223361058912407333094642392121388741191732179317772516807639373207285922950649704688745556307430767526958114432577426482523591057419167007300245972133427933373424718825784526232687869020157273019106125813662786430121229557676296883644155480931396827773487599048375538537568079696851819016385805409174616393905874301999507108037298180358639507713535684087351074746813134414113234560338843394495190820945117544727726353752403530913441542061509215002897887123318090805126930717338823205668735113617403127153754894113791730144080506307004474695273205468820601707377479912411025956601345822194690612335070173305109871276167218228577353100833288172582047603784964035895343907322893032406444389950248097060095965000420320717418105684665428995837400450824168398960933282302804698428996252058859406175673209290852912409757364667742023084223437789930913371979360126503302390327781449015949894718205245323796821592267209702651948338974400847038054756235384897905702907888100764524195134693820814084787637138026483236692572373610570415532332019731797553031990988428214222332677004148330156114072567793518617173834437020662233118186268853855412724268635270028097824517790801040384984431005733327069719129628884858122407941130322080356445968082049621992108760340311707755999572134119132420926597524038764694242906434577470564681583636984761141230322094421032839572800894302233456326654962084804118244582172531697875560930528453075012349916748705123186458169356043529496562027659285922711482537510603243654924871947152087675665125683604713636891295428862222566281612035189669236838271276280835497351342008892987305465264361958551076452213748953092750114457204591130972809046339605900169606064734762945099718826137460687731655367203060523901383453399462740965621178590406950210189833681260415075479630716939128374386375239735376413444284669146328189416214449878507749326501948096376669973445169708105523614922732808727468327744841417940475765159859496990281409615819500908771159027127869981575533391666233736641050112764300124088150791200010026602592051099281906828517379071123023360944848654138262397055523547870871810326977751870192528877293085641110264793017245094568269005004639124345337192569245684955430247575649560913660596711208430973034516012127971064614925793006508615794675345365577785545851733823895002813537288350496284642533670904131495010730665482860269293493507196736824768709646417815358923272117424857822427228185890928529474282689265156454239393017181733861243176045829182560483622950733929525961968758586855796839804435411659259931238402621912299313806136099970539030217071490150005280870025521808179503512837582053552142382883257816570343299551698974745616792233936772799144483428310915337556500793716920183517035824517359650968173777548295684294268830241784335211070429331790963192426383101963656668347933774900948598488862719226461446106751870250510467286281600025562341621277995895090907526359312373126085300033690327478083261560015591881401300316723147807898648313410002797863616858367363574533339328808991322135290228195792891953878819774441903563122698973623490858685182654279486975405896625644710146966383808386136911287949378355116925996433353197361323299622131522529199994417655549794314348018973213637653447455162495005445238532047175777752440281773765101906031041855846947394949372705369580535043823580162117700592885702979433439186425500309872405986587138095915264311253702893195838535212783313731949846558725014881811453487016830464425806429692760202305399542675559926101489632005580389901598444461069652886395996039723986112107439604124967291558350506831701660586516456786032100508390159468192321331516450183789350720848070879611799473622024762203913523570925550057023175316074345281590051154377676332306874023113337389636658084911076268470267725473287518823174616382907127259756596497072395134435121115186875188759660858821262570391438011235583169605661856028794427894240150281291679852023935289882208378034908843497114449023230065389807064652630423973323203965771949321530870980738218367043724039229096334528122052479770809937656231306987478280681284070576532407668621699057187612434957651933840530023802434272869491329104550974049739311050686099386526873568766010458837935138930706145416746133078738689037953547843652910698623515604752356829252801893287034141290849985356538591240848314510560305646303284033138814001987568217484230223737750777860401095452775571128904137612912061060465885342456642817329938541946303138274503057176462306392596453000066973701598855460891114340022466161403175403519623337075524798316907506273323560315406689788744772137615776500365580609864614662537750846069556774909509223253854661503539723785651830086700686691487446547138959407871435373958362679979564890893222581376131343242246193707382725994483831862718195806590641421523703455542068749977451030997273996113275083584984350030267676084925867756974809652956995728263355540570315071683930933969900383931572624092319339961668051889315258367586614373595389643871560665247713735410391936737365337658316990076889731032698078702818384564765411882240034993206160357421982850954772178413167243037602569333723581179489668325304636545806058298851958387227482913776102415576503668538466283756160161875670561710870976167411133072728604312426101479741248582757663189723362085592392912782833523760216334347971732201151187435304609097636393619941388233343670515738387272228139825470954871275305853573688745252238630497167319779139950204316230998521198036746181339672667703213066655630218489518110795271886847794322124451188658007943244810497180382104247338439742769001018571928630021212802058563709978295114346405446530205907092005328704303581781377588183521394778206196786220375346423770266031877211282671027218305432807344017531189965592170915289806775701697537267791730944132549111111335788305075145547363620719285071783724351318370883310405557543595602122052420757113245142799723167703226256953655009688926951357757232030217576629352975705543680412084970796125001409894083138217626602602933667412148242903569659236650248392052543321101146958088412019004899089700807405012285728413152809584146448198085419203901104627586826769827473095689843147852866067703429286885328499697997670264303555744048931116791982601069798293451646143200501966128333930917595188406437974776076842967325678239855175312374619455226938687287640529606363204793312363885243479873611521393398866883989868272325389058798360771404686959818211427631147828265616111263560972584678247741568749186431137160247871997536128330426970863101010949471140029069026379108279110259942067563813973491738144172664735896506652311270793478120212773458783880021921840630887232790601533486056040782281260380258296695610043924291394140797199133034165586536856875848649520233488578663207800225749216014012309028043509289215534301620723106312429612258015963527858447835149815034238267084263090059469105894769468634841634678920254802941076476858447049456992106070311086197915320623572585105618267015847170031589531650044616340928737986946129242755389365089270880748853855492270321353812489505772309397532919578755627139006627127219772878311887810636804089217958756540763510370060179362222595350553058295060561985884797524814387186114068381792784116232104984342528105119517809782788013685667977465388263340523716344832120709854607788530371383295764076956797546088186885834128975537223280930057808338347415704202159615831821291702095199657601609237437958213598992015408409380749928380924931419048464742217897388842247387473957248856338757300903917546911368598027452110066425849293263146809457246165029263492509490480297655936918223588793606061952082303803152953349811867247459154438470576442737530660585665061496009585968014725839808711354741166934824649836517081694277558961585079619326254972345166845211414886255263406693461570122924014105227273122538627432137697336154943586651140141825966309291748912749837064803145208978575273069359532344357289220865708446544307808640281811680361088462486817217894772302806275050901224023387703549669539885806133377094543483860905032404866896736990110859430278130810382602451094385656019358063622586337029040548637595056827039753039457581556745833755846977567940351077627569199290638588591624813072816836288027496436439906565539903647551403217653221074384748012763127441039575526748050103524815741637633959861109264744657235466393706463026398414051160642155518085491823421542771223896067641809335064992414889895601328228057301615989603945860023466126856973174176701870141030886697109672802650812292073491795373756725840740754717395206549122440626485215035700197398675970094108951489427637369321714778498255402969575496453448978783392082117052790977946441992055726648675357430595400188738071818238377334763685765626431681601197851339165487632022932773903515906358351960371598584392106002303839967102414537946672348665651249787339780691791765433195416874510421295175840279905023927517871448155979465804028833535775148495882134761868730695230423856773562130764871008225939615196616417965235694379283886691256641205268249493367065880712578207439120782144161788860430664558913923243711279487371888558362422905879968234618240504145698407137003744761224469318202255910568594759218524900186916119002510012070802459594290325445747168658652608457199155559857160269706565622690249251479149881165198487857858313436098056321264685281558696519660629411305076633770038202558897825249017834225145685520621975154517311376923611611975577641704999887988320754209438406932391759889495355085145155717784839400032594486969016838667681939877795042346476420432557999681000634842160234703144663770040933179893198747090717509624858890360056939932674422572019329345146576822313065793443115331835030083591132418336350814919016148535102377599122749341706924526199096495965318450458676502098217483074005687731196382308055196630971115121673824175030303048908812934238514317167891117364024129103143274085062884472928039465979198497312335060854470363439045933390008021193791067745666292620217243557672606043534001346847254429039088811227551896863134513065932478451154206266513410843957558348950124625647736346390509994608354333437178480099079728808038398989102396598810362219095611239449604061739968206368356265784744462194981961392530420791122238367076675058804893006538844895671841607447422401354532716713587474611802537490308905216248368852560865289798823469176325682304158506442434249193279136739727676657882576410016146762982118828141248825656384126321696179166075192796128869490923300713591631512286285624421918554853093473153105050783007913781660834691816127840028967237347591588069327867936098984411756941837794314701074530754143085931018227992620289943203105336534401593292996832065864206550669812140300092406486677001869115552612059147635522629694568978506848997501188093102592088254257320077940343875588131151844003695532492701562001645888228186601693091902882201724127249905710746519068274495977863164678959540457779471179060238752260600956392640947948553526209147517566734868782096416176743343113898391597885116776961733865134648915645882762015976188379552027310632563009431045021415940716858845884305393047060065019090333962776384531934512187502421184802741782860164957894344873223449269587090101607434011448994948647686514877187151592116436997686582930244086537896290637657610714430162143454158646911054426634508716805251199399906161726632833212937712618346640633158971732199469158428731048274303068351154687698309457794655197072279536759341596002044344602453537736136608339572478201381490842005649400244400942846905611337316290818897276594820064698943514956982795222593694052101238485066253639170976807055893546472141499613206284849356932224579195527065203595948659122308990240327568135870482880498128471150842620356289056921313025118170779868043183724424423394481748075003277009340355063439416136288726819747242473798255434028459808185471543739273342474601888933660479706431692467834697448320543468034325645047295329259382435272427286097479788999156943426680273803251664247328931483211749634379750039733137367196873930732448312120852330089288908308461210195569534991583324450662783614298106549501046072052090103695597211627827029785139639780184257778532934398974272233803991390443226288125757583407279260138347743126524480822683192782485182262091312165787509994195647322972342060653294697508032366677099040982965050184831236197848471954140474366765345493140304016883835549280631186939916613325951940039739303611755117775402414237342101278296158722823893071874960484633235987580086322948261207787002294358025918106271752185309676342360152728253012573583118658598018078305541736803482749411019720126906850476973670309741123680477542982751224851976339332829854398142721404392821835670931867054838584722126798224128589955862473270482922415394056310637749364545348984090678132594379150118374264063854350817524554630789451666978381321303917461444832258372848196750623260941393265526317924433496155598866213792134983013902320251271298514579209533219124852067590504504292943047116893785591298098898536208930325094226906646889389128617672186684751171323789929968594298860934025443523342575038977128893118557453620187282240458147555487376663567257317908433862496585512665901542252833126018057077721599063683634228818667867321105418951264833391245875510077022012833785105112322767840720848973356362286298322971892064277176703391692851626053594690491797081842190181959624544487381175664636057906308743484594642775433371978430170643185835146587377050818598036721629952743137268365644458262925776075401122512314377929536401757301011148763597520759196775001184066398745857626040221481081464280455579520835078426121624292257172685591995512781508732425062130957914401531413909088878980437493956607210553216144002087554439736040935902510712187114949726463071314793689169357356325686818624207646802471667750628880446270874120114187097100037560358804086723528400730266488443853684341822382141444598401164700258789609391075003821841296700443370657672246644580760241320054918541076798883642606831614483997849015388394172741672061870846217520222997017388953489995214602727036751896932172422907317304469089118528723777322036811365406610902654113693235255700601863861025963130371810103760368948005671212692733485047381777520343420896900023672895529151988036601009091626894859922628938893033078886427784621874649733147994379113645367174709948845700389949634011843157487239762296540130560082221745419837384982435858119780631555099890092668513260918379800616906771618274702957441739581297805642173123014436629350837205901562494702038229711815757974966676173782897644883053069889793206044335321668235998829617899627106781416209419554431849248921267483273047707370101549702741311975157676655084421829109657649263580951353286268931996420070270070003554319252072293192919779033663329630931912783404830399440187851390248198532131720200415053693657379977343685484140731848398550559798000859341018468866548016775196739255699508974519651098736548567708664243998720951417911093306550502631831431687829213821044202433322375820180468723797950476656228228114137913633695777056330529939224721553485520436815123615853275681114603626144030722781868666270222803561615325510740931575425671471833507681143729507565183986901399082313955728088795676429968228357595315187311390296804945955625283283542909517172000943199726512123942415617698617176777096922756078255208470230725768244144207158080737548945214832277948289533569056882686844235757788649412943994501498657773876868600185037848060276229995602639300741392838011126915991128960009179971811053696294744816421017468831842781058021087370864696984856400758153848995892080975382101509245653715888959752279044455129541094353341257872590116065691345612163573789580328953139176606366516138837039686567675723166985157304901277088307721592666291192853393764870587118870831526212334363281519486751202705693765071283583728938597977054980615342478234275088423475001591494219148538695554229576381979343348341966621530443389371929963074242633993898230941415840763218197686806004486860316854186404272451164286541764176180612383975593023153658641547264405917354038296977528783266148875790901239263401439092106424979417497056291484843591047848916874131778589565551320243589138460552014649135383022105950088745751544391902305818597303584350906335994330304446893607960068698129306942984544871986414237472991254375979155751413067914005675724747074304402726653571799380981726058966436936402659415663500146504582662131779934058907391260232217729920736140752132521952606099121864995944910781831130094430900312198368001758550124031865940854613495423286091027873608419449241676843846729474788248743503573930381946843058091888749417656481070519057557589503652994906688985624379311768064726308559184113921106194194182309235797577126799062192091767807140064437394157192367131749137588666747588841470796939082653345408768465748752811755715619583471017013873261046896931931253211668685698251722769042599974374305634791402549596225397619042263544463727230307518227087921969256477197274776576993705596973357641410873552542809206396680303409554140962081693011633505800817865528725973266580970499229338188042571172148089669422193936330330395964471840735729595622872330675139833060394424198409173257452266230156136014852540470631875982931708249186356179940341599021306082171662059456554635360383521153048271028275209712374464212509482151625347513270423689193357528115309706349507261440991968519147648506818922341478472648683553488830055127340774632377697881990202754365077804506305426603869400024789640310433491551206102281427828696765253733451124281920097478312725090291567892507815708144944035979170467114123846825854037660722747345671847962887749142477714073871205204653985698474020235532755901005728457581416689975016096151067279229710034111464602390723278156446944949024912589494533877698972336066624165154271795117810575575931288171402098539602565200886658268424940937568716829361337407779784112774659112772070489608365181853390162114850934568834279664226969483836134318245179490882753396491799160122215100212024235353320193088273837627626292472930880533633315872270184142879475603143026893047148717273752850625458271681100377381565574704841990502786257634311399868047674745031544498898591193521632402279953467851380564662975080391444515992873109195358648085862717188218472618991793708200142070517390760051247830371967869320556232272323443525155747962374517142154724346143470940821747474563697591846821610792641214721108406635128414831448590601853406622605326253484716008318653334198786923315654698285089975211791382539132616956717211191727291733917932906141877826020669049538189553900700185745737278393884221479709673992621260306622704953543945011262895632770013772009525229285797066631832726286496810286400133588239428658261992071383230118980775499597476095911782693981379405576235119044542624192969661830644270319570124396747452099590558596379728656909373389752518731456382467958429643201903619074501002284838545542303066233877246427352259400299916764766113200132608155603040410525472705775205930009669378093897777827091207380515053857354958607791941441619973515941482658337002076385174160532028540951694825622436632203881665048483137803798918697628069427401701365949211229042314075366915035094024873937685359463396360503385085294245205981692527022662012833027751755630522551057206369005521849438299606671327369861763693337351900504355333498097336765804807403160108734488428723646707244810583052391493078108283951512845013112305579367075093370752463460136019649227416717694198925650264414518105785432741475456907653371555750253559807543845768132756588610481086261999794819483469666226281282777457683761183025864063993802073919883211640030617834990849542415694817548534598678897337917799500115727412295389199781416157567394001697769782734113305969592361274402306907405527785513499996291789657974709018121405311181630432805332879611724922278089098842927410481492229541552185485643581960438172016773825999511068545470750129729866931145232404513685812916337627088918271063989231367880054993298661632812894903080411362377793074070368920659558978672282304027881897839202911279765060213356701788558658281196749438333235245899342116417592760459718650253218813013797755967231251150494824163902049237200822815382631347726742363176676175491983571373896619850318876551553297991008876338468758709709008922993950867322855272281496718467996371309436104382119748963702752854437377320813794082228250551217819427510685317155112449319181324696577247171638665094005387233314219891636166362828154947864062390103069108707789714905606774842256572644187531695181841044585340189032280639133826689454301046862181585008062992581778571036001334780466038942622104748330602520638161435444409858420904602759630462523368957629948076416530461447799970353112512763905074906226010608316240361021398330340622549261713380674560116268916856469933030990780931657022155184097047148103526583760343147765678008805368994899691042080309524956891613582184336679934150690631596027530547667325720646826140221735065141594787550094217040656175918351377814685384679439717672402547120160944137743380235043870664783937411545227553418100266902316620146702844545791285586381098818764525391517323346726873446545971675691878076232470149151271735296422713011563852808124898289185828435479462467100707225908929721719313110784867074059267773337304073917151074937827038064341635510588188602619312172459160564687842606562241176330938358189639540688768760513366250053837903265092631218739006065908715448848373902173296968934339013293750940599460847721163476399619220316861675032719715309060256246170035245589350689445334091009473817618546796477007002547955814201454554809482991158991456115584260584457123361057649266804636691249010874410162718160816342944687078614960162026526616265192070741533619947745976926380279939286993774485359606968847873615984776608358605294441935819601255876270736609069703254712610932424724706929537812667594222348254442235460352270127881649529418246414483869509177904507494967916149590420344718217652045915673050528212119202982393379576544307897938853112325642995678449628679174975136304494604006214160953685810806190783508283074126727539868936470010588366799720269251178396602412417836971271292107809691218522351436058269470457229247938669867824685878950847446567203197896886715636876403078789007482368795237810977134091078456223328974059465859114110951536333286027584750606937615077719579131853558284459006090879870604374224577393405237217819179839315321511679296206460660145432091077022266476992754403394923441488852823387460593403393787420106460850008759055678887355022049998076902692298434923073067625792849760517238712062416377870308026101576829022718670575486991164106700926189667981041513604510478816737969369915336789584101441037586120480651018341081384735687787993615534497210332790889213978353876513171875453908046742995323301230552877677849104982240384416397336862820527974209123973509929952997533386228962563564763159515928966765296262334844497900085824435632112602749371627553585733754103574809741934597621371412842679428634378900407867173545454227870603252931607562183075026820892405405935712422535323091177800737865187064068602872437158811166682555628596249305171189185092305384517612504918189173526662759919552681914491085972038066386650127138094457597899773287472990602626917368898694901025664631245881919160959928389592886320843480771598973830282399110116913183881473873073638914013347464525375518254955286737799358419919501113113915057786251873146602437272986632511981865890272051490224580499475821996703240066570522553936748255124057343018458961607520708300483671425292448961335761501772489102882917657270477467427184406392558915413214827852976164382442074598077590345535808179643225530908071057437624798413224684568273402425651097791732857540707394139536864472785180667574882921783739111116151148587028448268245844540117002436099201570959815185420689804416006083819709755585468021042563885267017550831044856288381362901588919361666823517261644865139667886748267412132459504091408295222043845349554936487628962957799551863592620143436871718413785354065642754998502171147569062581136616435710472251421678243326750362572777545983732416889425284493212008180178062154016866895662434184810079515630090441518989325649398698471705661529305903516383781036709325622503466086543162185191561049473901949373249349011061661363268328842019103020977572568004514965581360756478104002306207183991524326437984221984133682725337427329694089688929757987808005645066850165627924715691071276458697920757733654552594441620538302973399556193928653039095313850531400532646966705405578179430178162506180617889555693542089544538316677536723651733161446539186954745237190013721689033400315498691502188519758772069225549007600505725385165819667010813573707303008935273433117167850233203432425787412468879920773754893787847748589399430617651628634819826852892170031414530916174234121340073853614834691714581696465229879913973051559151388387646290957342225307578931925695802148158088535500784393698055305397750055183648740514455070126273514635586576755334927767970751137966547601850269744198300608106335570996821219115195692667785341078095042421539075462148081091851454169600423226474046931136660463735049365113816313965151931665010195674545769983193309264591625614487571604756089149756198554946669455834028670211158538376238947746067855033055105943281530962159872252327936470830751520987629487652443344241308173542200279247146287236705495497101591637270677387014014283890911712147919229165000537298160316915205121097623155192110384689707384699752991581059025927410752264232049299861837643606185832805965623998094117551758537536704503542219696627493156860336420512404077342669539601776090395140029316481466578400320716708385971829660254971639913894900997600264431567827859601357908820230429800051417952652972938653765248979782599008653517596156526960623809134022838797872402683740499785667972941241502591534241483311130070981883435200421232127154980097575040282179987525154546824858449038310330345788755441037571119837557989138780905961263128996797606606886488023976760651536714256901827945933539716535149491353328622824629647414353809642217119961237006083383795508314046183467134103849279106219428716203741649142283584458796466136553272526890642830538837199120071712033487489913033731379665555209642804311822712767079013369261971765811760810318821126105222213946367585511457621244514107196181581179836485335253666185418921818797573422477280645690825317516707032211983721931535712585845514356799820576355739920571099340482717666154054792996051767696335771565306519935675836314097054439570061102222763356338937513636522905244135962682256877443948079796033920015544497731251870021591640440532712097706219815378691639443373677593932212335630236049311067579088255343909346666005153574417491902414535710634867332157094894387146858828856742035308010643552508448871564663689943282843595305124041946077487127116442277603199330520259522384971639610695136235300270810077064293028422723769418325710162491394997156100889377965517810320336014462640458557251971973900040903576959418279158689694205381992297523112171268802784811219647855399480955587706327375455490142671390276870145826992085704285009316333150842730915766640756905098976493146286063321433219653665935420866439983282588257150272644402689622642214922878554687470255979591482958074546330625682970018748974949726762416258709684858063840790161017060799815769983037213444687045680757113279551938032875688691734839605221702094505706128770336469380705732594255748225011622063615536944124410729907101068675470160716757041792564862294511411387378231976714943074213972361360323114323551034682028533759351942873080241056340725149031958278111741704195152512240468637335244332537691657296143963886994513923165429090247166597478386896927832997452885291191735319042571688808749088256392929557462883176509892063666322098214886836098841602720799329769582897697557706008397244130314144704278785121602709883127291835911614008328089139858714021755082749339884241293598240119591414832303856482244032351838335412400231006726815116406089156101577417916109776039658757299241739440208224125787527494066179829427401987997696357002588772038193447373802997094716330335610477296334057008037263976385692648273395610117980136491893815068256816700135708013810690082425359638471532846940345886342994829493996501166860205487291735603038812729976491722021469043448838907351667499081667334195104605160664955811979938879076983992308453680553439032822703411395285850461455095002633509121689321374794985609231431192104141859342411175230970764876830820191737397152989170060371123430308002443228902787642063988797633947864771840447359975929257951709494947195062252683824930043611565107816544626662076006579698815987254769303945799583166353576058988667715327011555795676610676938223272721320087196724402177233565317828351603506349095156607152628006604007191459822271134504683541428446732711475081607076669812952446845488579462959194710429391794555332897868389933510010739911337912252098189894117824592061399725798910705194348198318862404170441107032783965977996985670724787928013150697288584581103690215924167337821790967992733557507727327348860731993526492033436323985497033364000569202710294440454711696298629334665941866292136687029403492830737432267170621512684775778898143540223823521388535083232090219671893883681663198795024017312151685033057554213241203815423932133227242278087589944767573708246192815646427766788782280828966199971503038794852822377061631008635389268619642340103930856880699970259088549425831983782423548318516100912064163393808955812316825537279395835617113392152913867381884452902229102099708228831794524993303992987392938844320722917830589840358942191714349414215844620943878478594469433890553234622046886250365436983262332104525850804801180928289092137053236184353338013752604878573964690761383028710356370550506546923958188250628961166929617405684458532817908985082490801465275339852693130012409119998766194419305527653084271073951316580949574431172331924023898700684873354876916156538343226534795445462005963696866413206956808500671679160120437959297386454525417719964123467655162740745056163745292548018565282993069669724833052661691968581900052224765558233954356491760109938301354047277193586140359412423022432766627162168841396018065380768114456347363611727814147410063170979762347613463217868605030180529389366799329358878300567300968395134280264458532474684536709493161273355103168987528840151198001060295689909046441615681725301856582371805070634574423811943011661316717490043068608778529732314388384354484459119885850989528995771774852793351514986528837950258396542123814212818280466048190080293785980058113906868822835847311593929591249892960163334104171982561585403543208237245276773357367709870180206842932734722457416586583209899625055568359262137011156888809422614711777907809690005241389059110411436307330685830770418931479997687861124070577931011384502765653788531536317787099497708599148994300636932444722913581479927933331523123140371859336347948495256675766571652692683621442825604655752484148208961783089857286004679570821235253100373304727519385679207254550485858244089919445568058463630380391894492418988850561309384409895019374428610760254527426345681851288992923706369848641035604289507183405793252128658461253319622520018197102078000266902392354430101978657156513111242931567324034697331999918827254684157912960130055246339244704399052591329888799560033941580509212447536490659182247366832361768747684378327468979275389813608891545908240378474398113050860125082068793962017090715819644961344089727567133954314666910061463028246029259040520873799172795233204090228899779592705722581158939389377718019780519146951236290904101212888300510351133532719832808036428458185614973828859591232582981564298751257008065105401833605304592460719673578058148964376833413904328768316832854834113938203575516334364302354160103723290678754909500194169923083699048963188985921871893694905516752424655720969392656141859459367590333534332410096584180864034937804325095967042119308923772195402441862741152881581393596491804883383503308037384768010479804278765455899887487671028233473043084805857599939323554636620926614426310136993029386171190612245393285077690819524958331214916668945251543053728225669130128397103915422736354116778984877344660967050230704662260486573507890787380092889416616353859531756877639041754883791171848945073542145118349889057945227616000336001834352549975103541731125497405828062406495177012608452672661146266336736219357393266835297557614652277605723779379578048478096162927928960299872021165684131280079021214942598323623687816205000281998841451403909098562512424628768410937276497618877668382473364934818741519144834216186458188924309886185504369003284359388804001993731449256157756465263675721730060066082802598496833844911226243815980057508412366342135468171775995451970243414254030261649819929904050458797853894274655829273605938831011714829527416567239567741296607991653668243827716732308145288277021624963999914427869414012177757746465522407956047625249827071624268656847786532121790929617718875404234015370323475520021137048937416578708825302763465789142398053242099299128217693956475224053909958055242024438956065596940441451915103964095005957962506417737940024339564192146108849466205151098837024848486219137764533814734407386272216995068235969610489910909903267264822057907822858922587202112853283298444470457635315584426423338311926078918785152357219433356366801505900650007392617600361384112449023940422071141973288102785651121509071067808494049414835507526312913618843736196791213855810926117203392180738940868152307441999671596079048959450619538261736750617429064030296859648665982869980076863347940942994246641512740303128676015271544757349374725903556594533287149446264834994936098626099735271412849915742641300256938975155055132072581253231384483156373637760512591863296387366756366887196833093766293450790586878552621553770902881368545425614695552125668561495528591259471782493305440455896933873706045188212820080960485376491865474334357089450655626946598311660700682494624726163541414301346805372817297617683657708054185405208866419262429878008060258590497788638609204166532644380570375602923894013363229382146849512680005220910959747145670530858748566161750261784109748394795559150528386095705622871504647492065184100199227516741608932558843152611993147059608735226383184358235752757295415090776333129284654531768330945969170540091220184229896428797968782013420452110487499359151566025244305203768001755496094152389868077345110607821191048365694999455052399878983737867911101971100196963478308436951221263654302378435427364939831356821325835437832653499969762024317310301025996391129016109739948600387566993650470334047461969506271152631900873880993786302517243560844764923752572778576688301847623979456785314016878249710978050816880842649836411889266889475766594247200704673696346392464048869243538115419558224315243191492794086261240978933520896952724319761751692161795383612937695550412527513118596515614875888382644185704015959277648967053309410577890984012001606454349467441647097413869974806255447158485597562396510965490336030369973007001601430990718936362423864559251048893505278326850714438785540069378347861595496113620949293226994117486384348671200242572837586704956732041793528660224458649322913771555630324181157919078387625880364562068389309927426071012667511288489725213897475593956866695977522012004267558335415083796679912847181668431354288462896834270142106983443921756181780013049630648418830301797700713388160486134896531382053008258882386924643082566562998276597239900244634529086064504058660078039989101468613863193265462752534476061637754117009941218535033529388023532859041690609027945774477004248248451213491369303886072488368385625826483618368236870220986489770489558561498277287097113869084648632823112731764266402596505616926459726681147772726078232241588412527935708696046658811539767717117693950014477776747713603631056261483261770502445467178264428473590855960311828705118713203865584867654239308231786857817268654839204427331328500425325989733481744095209725554294471840599283704747233634815753061604906253671841131953674117668779728837785944089025411723772973487951776810697398181318747820482945173141876836158380904157330999214525097829959708790632742057802811192496385501512839201724180223200633497000428652487452707468350871737895170790120776408939719809923573094771424559577857437850259978421449552426380610334054533000987946802274074936887867411549118931593004469710832198257896846803978488516937456723831906305752269553822040767251176245307999566747294147284625342393008538067103233397303195638720707546592664240232006442764488062242539905436978045083263554989666737369565921120935716645649996580940415418615116265739533957123045292662661678905289417007720131583915746361491356356198206330610655352127710923298523554854819417312628817916935286452046028741727889016112975987715079068401298151073894729272260424080912770932727278589510739577566566917877889705403459312085789475139256096478705221838582408758061977876439006782354799564706046679473586876909184803609798035950739995718764501126730444275087949534447408126445379117597149121653422073958057502455628334907836279403757297753916067839671970961734556096405498301163422626223295104798017740254751814008041504396588965755028536586993015408593669230165913201121391884918031543233555410758270890619427161462215261791136481633164856266821400612442178652433494051914733748172716679353217980095138368126901607699433162656549076999205136858680051793352151425489837991593828158498764630644422863371751684045083240439587298109820776227725949123873751411080520840715410787139502105023549041285601036496589068980613334596268903274390065923713901188025176106553552235693950052412898402044973655006972710968911641699024924296296336536718114995187700540766028683374684540858265354875971037924645719562984095888548676267880847899579375808735133509633314268230978187952789690411058667371269746631670196976528959881254435959127556687944834173792848269362606174522197687265938265780364657680730846594049199268196155444064676481335791651052152936125443760523619381817364689526422964488650220947918209096942993455091381344186066536185399129961876042811800721142546320564506630469262470254013617392796133751633109000664051248654111448691524586527202468976743664633756219209496664606313775950694616427959171294203484688639605070155858968433178391276934673304667955711481587214862439564575542905165592213929529460193437499083763975298133993850925351612405440774906323284734654417137404683345543199393883885178475917157009461510802084867701705641740958977454013694458245883037257182929734035243373810412319447321527915563626916609086592910455161647397462529580232181865038251549494946863854769695324207815117056932630523148901464567449831048605974284373168345646259297561259821155940355376229589689526762644940881734138998221373217429423531009539477256630411505199880286502798514656107158653026033505605841512242674966104175714395337604899200351423342616447873851064687209844315999009765439799873545785513741806331274852516148153729598689970305165192598974929517578711302276068608221891030385298641188132776857531482133233670600715332983844836026536622033788013075081708502127967230366164491930761764712112449765275275909694239456239173391031958168804078308138779073964767227399090129588136681265073990797901669128023185041628408839048513833803105762025418530803863921880573903784997849297074125612358686319955943879946640333140206669283261730740898402565778297249560018483156538820026837159365042478459378591352292858363976237378705905941475236842903314453812910191956597628300125200416810408979274938158454178006507906933168116495608626075050028941799121253489519225578214029929304778682432626105772250968604211653993478550045774954505963633684870457221287732341854891765643932562062618072551558772830397666120693052261413177411930589538494692014252096307121235260940451240388020162571689126341307182133108577359372039007260812517304484512424833317130731549750074577907085780170455801174268803862234859401444726033649252286378478691982663686547201683450880539678062232477415869166832275533492665578449659546263035612818316777007769801235428790978606809670427110381105072940224115544613962399366188621015017269658034217728719531680225659461041899078411028827331529888539954983265601955760465793474032174184049035641311979185367183886341164718490937285334369771764487355056763471064163212818953665724254186275833285427131267152957795977405278530477315607098950886331160914942364703447040314672992087193635008324762836645686368069957407558591316161268036140778839415820507659024736890738915849921136370580237259873999893617273437228883886662837769159084064989943888930436855635411750268777826971358074205422066626255416211157473744646505737021621999665061463550260294371811221778045292269777475151824026530113971067409666510696258499786015329636321977623829038242759875645738139030722277918406378329472692276580438379912057940159488781050343786712050581818238290517399458348011665536015337075435384873985595566292920693804824524662808808884943052648751212747079268401803095657317251228844396898964498996314203624834255501381745566273925884317423115326254946294435055908077437853066142793689188031171414009235702625872101823523212644689114615316941402245518555922493041256803619766851762786140474933675741292127316707732499275367078446331292696668189070642885291074997289623651375219333209236620097010962984259262138026655123348397803191927764052499335093072500729803061990359642981995078079549443258761384267164984489503446112037858269661649399477200729970095959405881586126321696734462173997347897168710806811422431092968494682438570110439388232829793768870554985167019532916276640732470528826116499888066179161787288793354851501158590330887927496173536973984857524278967386452293229977809247354153475163260675272925253413875694310000834656503553857745091763684356190346662982365599163813666578971585210202025148453325933388956796911398502280197464864838167344470575981601828729557395947216858591677975472670395036102212567373716451414050523493312168454027237880604121340050939445541564249930945196100849562861934892548750230970189259472179894617511277304700960984577518349868255706609732322642424839457731625833281516253041731312250782714194505716295228457837677125331038038913901425059785806142600125879630698554410898033674009652435733782188026746460325723449487852422183107919338078176817747341826854749578836423771645079233222368453280566769543554703453684657431264309570338948995552911216005979510204787000239122788888486757713635450060771443858677066326893975087102523793234315856868845022889116646647809750895488332470560113270796702792853153716029807245177866825853620543189800081640319132599154611742826062871542943631069611451490071081120037097880638509316172847768411109125296614200050703376375379575552506116032018689545409206744472224991915830923948467308616306451770747160537889544131008790498052514403205028987773533708631909616009579314440351064166172468173576757904209504862645116009018193853011274654001104358403818487202056150956662868673508457677510233448423986342867319073569304180460735384331958460594030383278217359605612770002807466260746996932486797581507789840632164614113787430562474027771128015816556916171252171946131422774668936816152639375018754177480480369516705573346377349576768752350365568936359715795441923866051902778507591857716149129669082140938098194829886772512849896641220889840103902504872681967131256042120881242668588227508531549523671924042086830453663621203474984622842192268416536011245724899053535312265932783577603312643266031163479508603590011443939882344946011011076296014973506022907734026556465552388107210856301552814272271002619255075124253784305186057018292023339276216464924523317038868560608474187044150602946719401436153508362851712914373758509667377677684658297962853318662197888786974312510194135314391528102420739894567839615592970450823747682504393415859314557430052490829811914728744033544238165210270668858836022805532778260193639147432822330824525320427592492627473387981077407129303961419325590378450958224948378696008326778115038188204157810688678945761957692568982363309429064372459547609024595603881829203778591018955873071620892404480654473735787466719881893572372077841446901120398881990689255516852794409680193021076691962245526820313012631330980422805528067971559314472751793997811791621837280909330879795018081662684447736835741534752171470458587894451598037713374542009535435143698578391781108906422158744153539200624493335586388596900701976660573465370005391156478390337703332597074503983461196261640358774409129938627212052840472687127980103691242848730522347699859571584333269238451938271954756521393402269527647529656737602979398459769949863459656520358408061739288055460211128067745225523724148462132667057804261594453243312164727430781092206757193325363331250766969341461599769986488087617297849660090214869170624280318976087246516112350863769593523168794133660566196499119725015723005355997639332803409162263116457242481118495497835048079787440536277349506859980409011423032979883505363556469255509948525615752246478375913678007673835396997906757056561904271807993011063574972075492284179919123241050052069764279085997358856890338163050626455780328231815906452277154416352178348737096356209785795672334837907606268425294793338897513419073710528956497249847561811478471053035482250637582768509676645165354152377803378496750578765360895281912642651466940151851720452447220420831133494620005337759578637733426862349393618956798248135817438180884361777018073676462307127973880160159760204814558383718057033459010834990667361951489946794492740867061010749044956678148021778116856012587457849755243123649146107412500818210434159052928086909470738771115808457612820177213078100068069472406604423563164738647774002170569834064971136542503542157504255228193756938380609591526983208162631658310650913467178711904801344331728494890118234047357298377171270356409879753314129368498664323648549342945536597725021963519646072792603244592518179726631478282448040112817157071035486754837550174881928056745176214668646384259196299454984313257710240317911428038755912393798011707854462635117767681547637163874640141949975310209739704445492203147428897481958032352895861122591317686247131181786188146762481782263048048880355005865574407387529458249950370219902708028003805735618444548678735886171156960670434343170951110857038180298187074296517459834544782712147626519468710132847156409279991514286913614684894361889870402268001250598848989574772285425894278084393587908464054928496976524556156574554919755883493527307902818938508255528386909236669930240810216897302085271963024188770262859799833179798059513985807394505072026182736441524598703323537334172240254506089521340624547493818614830921673456629983768264074705735803636304938432558136300335657990544950215062722121700845453289469054142172945591321966751291590368130922793094837591122630692031007391973426005623315955947800258625614312529504429092155563018813593890953865318271741055239857706554598751199846081061448101700328708979448726214668892612885340924243115294374089034839430088030623477304705941919910210368126500635753075209867548045775408592067590346783750771278023296179152646491542927494103256370747459599793050503243631120617257831663776154105635083008171672727170064816405293669002181092170907273794706599887841942796458279699835755046036263235252966088753067842191559683070307281147976736690037173802869029176149865766166202862904628293751038396637088846773510515789716694011891595773694809462564186160123779560749210144472856161454722605669803007615109198338167230975773021929390892661295704772240966806554009338161483865894127520358624834835492225554904248649756961537352717800830125135380190699014011684314996418570259580282450569241334049749044317637076101433148284723904862479051507941137334370765372826563031895561936215954562067491206013334791425495280200257447304901489063966069198223552007065775944891411932339405019088534664502679812048390969466379569692050655672337389429952906990288361382277170215258404849407370771166534948387189278020290008407455509202685013072218556741024052710636642939184099163422161521399535264199254148409701208083579842333747315281582990834407479501161900533639798148430936436844480765216080621861935082329721127412842450527744740124691967495469179083151147582665467700010003192956321244397459762482508938160331014469638079580255462244510834736834605142113762278430427183802547535161699717771687002716514345618969501670651374467112111513555363062952134522069668701259706866484350570486142971667766658723004152471723382240193247797431888785389219420843307920537231460489917625064787265146255148969224179722668887686537642301748757226896317925226049575481361970725574666868892924548786569276523290934365424941020036370104753914893693378871925953437378304582329616434681345852034052321045915196874436046025693571817527027140038943273360925337946770087914664801896126171513130066195542944080753513070928088247904809987501661046037937685329095638159854454890953193535189063938060655058454118496152695944983352109583864479753404283491825226251854668662848110940812058069998293631419412533789170667998985609326712453884853090132758203466833154916325875551136336491660126134794482568034763404727067257315992640473931469486936331449081169139634420328631433143427402293278956518409896243552213806099536755155019979206803101004980358527068638402174963387266610388934665409487926837782312326173148754000430242363861838859699844567748889901222391236400501475828788297386259327265441125443940749499813748883058577616545712407042502455022575067829361517317606166944292866135320529664918963105881071380057508057156081078449228271302863806746887103303968712088417756842449110633686106433131024242895560457986142402767156634328469170014990374980123192555576920316829193882360404313947215132854859884146522362156953966092673019647405325838466058357188973475449805328447068203146142327867675369324305967052278946381619394607202419398113204411925817267447821381472867663692550662762047594095676978905471213190836227347425472482426625902298794437103783410427812604181763426984406580097310774141692699414103282753748427374726219592529769323354779941550934798619185586499484593361316277304490414242765175082915802326534288858236381039246148124303217424557996501794173802123927969558209225756533552567517881411660783777978794060699270209810368748751442264013855479382821298494335394516910526144581524006579686605235541425813683018064426180269057597309579957297943322824969358217260665006172630105258465337800523501494811532579098852093425022109927787416622657715755734691521194285989908958806398377276318704000578352745838733516472115511426756329337789803794998832703040826607201791388199468238637460646090567681925110089745667085730714487780085794034916449155785330362856365524495904619765702081907491395100950321879250202506390114396839844126965000284040926959315501525961098865800055777908105195232921176851275594266341733309943815911123255386917838473127757804883717040531865312406345364168880424941581156065927476227533857368427681184779902580967221781400281358931580577695206598256968066640438588590231215291894713118103805828539246122841259751094635722219370566076410549067763997297335928576823193865651522400271751684824589467679372623317086652921823437315661846218678083454603328972344979713091492429657609605822210930829647851511118279278921839372302179779020063283057174509451959665311228822544727689555424738428577768330659312792338316584363860580075077071804135422167289791917900731477240235045094201985764551221245812699761535249266236966500899055668706285650203037127646478353712808739956497036325743739484579978451310581064850161211902877777016055109179384057633165437038435454453857380362409593149365271494208693883352577186972593553843387218892444829974890016116175918262762806737355432522780098470570193737319958562449250969731580237011164188155937338914363477146924696467004582846639474371891028987980403106708892136085946954028839861042912799980153300674916323052074530949416909113037496719807010875209126797242484713532962593904801436317350189906149190130642420736539450695118910603507857031123778185036561849963293829698866907930767328998496027355816787163938614878587356774640028494323323558829831852940424420221855503579747087039170723798900480858618957481437512087027341782410621167646872705012675723698760447986446516293939165179369936297347866294543735462136784871004876428216802377185212176129146944764548713240969031637216709022072687617554456514812125096382270347616951734719395867272368815258812488696830937277520538566134824184007897167037854873567478023465517028874673878731462204149856458374640786145703610602976992301878267942665037759251539817607671872552062492752724726423231248168018127442787768088888927650554075917892992316754775070364151345201658886367963553333947766924089523967823706820451262629590287132737716756321309459294292824748809037862425414061212485643646006132869013383957710647266362386531326911965079276585387438096484991415929499383644138492027438569386231427391174198101554263598947490510769761927256748582776734907388355645481858462082203236065993755342963806108238840977583080296828197834722435933833622078427912998714177106454040886128638702815511795119353625694868420479008469104245684329180318552035996013130343632832047337847133973825091158261737674909851853418805819813600698873694803977847077743965196803933614952021504195038211982834582293473854834391174166567611650058529122197174604308453910511599092775588767224214782721507046734874162652004042826017109029802030527025283784953971857850472294077519885613054949376397749059480524304901982337767919926374602201075855916715968787844092802122915096963464599099387395295126330899082789912166367965591659946456085447552837605871626989042357874372299931275690785535381899370038855302623220594891663446836970803934389863273506723981492190525207756772375503112736541996772418184764681565255244602612373556759095361917904612824469116148251722446327386543940089207957723982566019588421076006165583275335895342200198567138388085671630890244772143980106409960361753108616133986240435719830045728954716363015357456991375434920213921438946919261749054164824896269458148287847445333787971048782319095236457616563589904234815118194745890836442654974049377283182111726359791512070975520077285300678827008426444018882062196277777130615825340481873229656008390726956091926639120885614379996167043706984803616255704522129928872864805291212372458737362823890792780014911468314138399979999325677958478812425650576263210007192838786096455072710734297975520714321145763357057604010119538919995061798682906053834403200078743917394723178469064645833849921986134176668199388306950176702397927819135000170124571255344831360845920828149008302920317014337766491305346500223093635734141852470941929951118100344508323610417393956401213151419722024767920074407838128131909550900484888638585191749007708964898272579654570015731814076117507678181000193412027697854600239158750800008084076757244302493576462813978181974356446826041455111852209220796477490552385921962568170891180603639952188798155915315074163749730282505112899734128811505759025241754104747183414734853830698183021362212900707001799610059749708498897502801018191626434545505970648810018681016852425993861783158004829399341995802569094695767910071743559803548412843860166110176987051028396694605854186984848095265917375543800659682958609536639893164771576301249235154324069015191388538219924771823221863965204425891398561686950737315544556205252463715198001099966746549395012258282358285157450994978319682393935846325047685921042843795265048956853787405355259921728704369356809852989181459583866784353668392509184434376036324860608082466094551242573806684497748990813090725834683344179494537461551128703460574740828053920786799326677253105307874354601753102440014211729944315209799889114799682724289588127874862040368168693851404972237641830231629270084933254312965681097635057647041010894324514724801072045279716178450923486608507422080705202758271544406818851862337582902340810789917866572473574861709408635361730732671949828953195747830628370096623620761861212391596473050836001500017438774945196940945905792323213500226798637830032207287501727516999172849130050675914175861985272352643144808939593321703246822483311050863410300648729181644130696504470778965392357813549031776285197630741778860787418435946820792810437010373711486885783236888506079174275593711590138869036161572766963104470910972817893648154404656865127115236241899973302539126421126603143782534987802251036170378444107260311540487079006026615936651324817637333689444270060762959998956775127626936470232827916509177193977703592967215019121354127674797545054903786586072015432707338089363377324644242250881405863940318607232459823084262304294548971948956410147470334156289494454140106308554400749517590584818805516853081883006790355987661875853383341220082848464700571443437985803652546828280634491226545581032448999353440167075021767326621742181261718246532490804831478263978700937344467372143954756114007408410671118402957641463742732249089496758344338974162404894575090627911870062240504186629013050481082653084054387469728841220048408990112668267475120935246439070488889544336065057994948158019577963025621793009006482410844850676222927063894578040438645325069192533351801336077039851896353927589658753630300666026042168909090425400534134672913354913597772392214270092972247143862113886498579195239050692194042072437804445091534157643962843917082125662376087953935346364196163335629430304106087707336704187137479768829683057139052225032687067485082188150986780632122560012408805731836173350551124282056551553239047441048836023697687390042848024326106199149121984626798550056747631108334630758348658629949627946514249553379693310629047426740239848564548819628018946742035196771267845236383084199570956823142480556949921692291223183392326435917385832916453965756518061963837726167895332071319560756342447848790195851572100967932676166637128691527676694496369199402589385219902798666858342547582257796414525837538498686711007080013140087956250707092306302278418850302587504341529549784466297313858897317918898476166625172668962622311498885601610408772226778415795377738971198767662613136592629868626516537321098298069735253124083795448010521698975457819430861033159994299821648705829769150854905546615122426068197771502546332248527136094533212135701745254410942398337621031928129090582178887070443657230568674412722681825414046857257475691918526985995733477740244162785922400659265588209343869756348923155119209912251545586175220056442369263980025158608473022441872324418376694973054226700550678016985755828747277269841279666097038727632715334480603954505102558003277511562478203601900430712630091874123026345955899415914524106737093479059008854953760381750157482504957842190519933129628861389196190367447118453124723746782670353087064278357912145360370899824286537770765630117816782483992876758113903403363526668907494563459061366771847273838635428510421409915771242719663415720254128853561070070415927731935970402492538428994637695716747276818414084089996567255876051626140569646458181302601148879179053711949878353582278786401552411946148030754739526339154693821199475328942988994834364340599163654875262166077457651390738367453464440066718021503332894786715353528038721362718371771070524096444053301957874905017961920312526470452665325351357607150441750269755296024944473223253592541892422791636066797934636095215737411730931906481678019135482865619733810672062332717246470294285244801432549013072907700821609747095466440450731964235572634735705904827109555840354459983454550103771927270327246442492537754933401325984404958435742331871292139346692266059675868740776563700812208275007979281140457856424469709749312244279403238419804183042782251767820514970601075636177120789860450572227166214883390972654915738402888912894405456466456542931932135209305808373567790324242860468301993733991917585491309769959160581229999263883985016519569867776872935753355392029864274081088162897167683465155515142558432443226004735066958344080769182941027955429532615771844639001679477094326087209322459013737153460298427460413903761765052716713852755754783192554684358631921690091097160427681125879382950160606505483025078880801826443158014006228392157170959883753602675572899308044471537861286782836747430969381113723619198855574728876854151128881929438717977947557601062423952477996571246805971826672639473373697546925778155011495089125287936878026437924869432054905974706274738301635234139069451626599060294836383682959198701266443624814645412518040617603678122540868828528125213367065792854324713342018506691080602050033183507530361263608021456716399462908114029829894773229106807436902095924754008262962849526248149725649199006905691603604397260984276988577199358927879642538361169206579906766591740120978908974708330696222491685072534416826864803322762448917706335211863523703578991925792145669752135515601559833422133398124207820439101974880462402665744263213989347191450053769959796835338363826237993164918928717046151112026345396472194322666586166690328817816192492683414350413846648904293311551347258333365756968628032428530366101247363469044246173288473018118661464413997466535085812010026966904760422274470257823505797496755211055372350603707000684357865633709254466509916319655062350331841169534717487839316664182192028446022084688122308840742034922863037364068010932713925047293562465587493380862422639001023428904107443589286043010050240199190393129403386691434782215371548382683811821707175368494190068889812252301767970359353318247943129602291688015117417116331689788429607484984380381470588343978858866562048262424560620457517930481490774881013574943719010723703077726899935219775329323050350271543279065936295251711875219818386103171356344585173142973586203972818375350691172680243357277227742116488452964814952883016918787873892943896574938988128581599772314664589533104598746166321246792222065778539676982027271657439994296475499939865785607121397653953067685884654248185578772367625283051502809281914472414744356958069951403580954255634804710352508219737557397297880052340120109600926029618565663782315010989545675391867897247192832619277700253873913148584545813264543372370694514866735712116730932680152648205705178547701214579868848515971510544572222303136874544488065360820859918703774266049828133691274533299328128093449064345278130404576912435816796585440633263300963679526094374451375036875793935344196602082936298922929214804070680365611160583613840838203980790385255094018094934281740187050443155673103225458397291720929029588502682544408940467654838309142743692451960467250441203788082458591062193570246683671315481341436479893053978789761723222766810934643053602314309856890947673899871244590768903564384375173383112013801608931482936560320476532751748683794084565258845646510779435161083871807367384904366292194851881928126960251035410847563958401811834995590968011916070508910781312467788004508601651861995755069865355922809990996033320715504331796938857591286843385486448330648065708500060784159117450974088985124750594262701321860309485877304810133354835955208439000872528034544497058388033784894628513211433355921777478573475288499645922477516968747190116396080375069560339123170345792298207682457772598275381957935742560768936131013048449942274921440115108475423314359444886193731646530459061023680252707709770385603159831872254251670100109949990442803362119254522281800396889974717749002680675724666676942831984244037638490103581792396871509749546224638412452901479970664266127689584387897597691382018666047704070705016332386568704702836485905289975819415370036124942839602708596926275993240866840891882592326960938475127223451753201487945420313551184397385976135556526936686154448205902636042618587999608951787807657711952000535856694994406602274240209052534569697921766727344288311781873185922006421729144766262897383795077929215207682031079976273649802293838162228604334826387629530740209743052562788713540100899873825672327976660208320597915186072363069625148216981335688058241364545477252179958315633056191613947006585246165008968807935947308189722962387552645897199908907774878136302731549881845702011355909903821546870625098766192445268701488113516955652169066224200762486090642658346303981258538101550697425207944421771283856435946257251630006014934150504639123760844287153198801469660797746958730673460178847795004720100553003244321938236643580564599121559206707320228025431873250899338728259187448180473307811458079140620821419583829856813074353838274026565558414323805093775139854276388111112099191970707273313845479787131597770306847048425825198742587336817757095043365523820719593141972226024012835312430822379281370926752233422966582332959118698059947076450590289829213355235940703031133137002920824825224411539139257995220623042672960283597526449446533188105454979661276272268252040432269477956154884762973659849782541515697871416103847653355244142402592532646351460649085988456355111269083957511678132147025683714392663853421657153213908731746584829864232736018462599099319268655123878042813099697041907593958115318325886540907691976611058719707737555672144310610314383262310008758604299059337603671126566068030555366174899257527797861562054301951769473143197513501420275458951712938347580331891474388871843586913730608942345647561903820471982881622750253377165131081436798625603920685057825944326552604623645114726734632178237937253131653598339450479722397263650585611553102696937098105817030981051538295305259854557281958458748092612655932833535801374915326649814679581378516139695895591717908373645665594226593512116207145579582514568912317356755933134702926513043462288185818983016893874446744597849315408847792601497541471284455051010836067039087762256740131092726250417875275810189389046394993925593941432948604313569159418906716014865233102431416245929981911719146360301863129659832615834390700477438022207129853902634062522128788702864407563451793927094209301968183608307907880363234498920945292959341552354773202513058856995994308251405352499578204197961839369020460560120234879317314628628368809243135921364884136107032679017032170403668702023718353366588363401332375431393242672584282721150194332670003139569256294705892136104696878480281750066362682969045636359332123444420411293566989986729919305384818770969291982700433051665529500000862020504339393808243162643235845953362055163938640940831455091689527364551320782987034828242761758565453093738909574623868367098509150963844814518962824170462272369296190390956650770042899968185964581138737812559085068731092446861846232181734657877333945539972972796443663079945922330407019390696453326386554343613065025489086722177387166604307001365585322294060573722135669062841284269246801577524851501015651596134912633247741422252460659863200272877425130460530703768875936381250345271492552700378351795035361815645994113709179900050690316017852420489906073292722166132364884227738031470863052128014031247463434414080212560539852874967606118861442666340237634091993166443659967560451283367652289869588653583613702616014551473881033706552346558645793166782347584897104834807626715929208340580970083378984285228854507834742345678677807285451126143169679688814154736665913964784505752400752761924536311923447492495476765119718055807156260088436100464555902063629097446383819405753254644831790950462373053279869216653374238083098127020437925261253738570743165620630507478600772396315903296979451344322915728120912239358868715752860247403613979321113209772014478683242466826175031509476415129629283138842490238847526547772683630530201928247979499038417849240801136115545770822598301247358758883024420811959616976271438406912466700735257877298245951039528101046838182706601787670311022072909610373832654429426369113353317956039262176960793899447356400285149527310016073712854322796553457630738769689408422657449159601265270214003208195193589663063756829027304379129486646296898903077633477800534627760906857929300542067196776238883514222354861811930342563057258755414775218338893261385285987978760054738473617517584121776855988034674483615912824949262001779036283453862057596774460322372403538820284711956290928186708126742852727242886858629666252077697912958303190620412289825480690376799332689682705589137939384507127385163171948597740734807317333075514339713068786421001431050604436716661457574983579678774802562046722531413853744985222249708303644648016162131873808834750210042297226364444843076522352206621115557369801561798953752751408065742797970077573847863263292355761537306076320678790152133871172269248500531226724078467528346775086528907398506570225540486415729332012147941593790007571323402766709913671707376793973949207464918028383724307846990356707285804453303902327952420049037144082387756145883997284271712199115395921724735101754924797549177577186468727010204720881177419140712877350364827866201458834300468886925176602805758314837410618041949629060242874055834653216482902283754307209366204691683317791908022835314645406983163628252762261280439513554343716429957627571129251366296893223531987037644540520350546248652284731214432655316845710733045697711632525730863262385530320826589256411206520468693132011086555082747532633555244578559756443441436672058437943316885010547115989083793122615758678136788126338932898945200368354531218038146590095851819466093777085534915864035604164254535520166151819049913514757180840829933746503173417434578143971425404820965825973814972815430808714027838385374620158931848346886059546901027494815797898575159974837314212973939577360483342992244277333802227056528237802008458451905575680062914017815997234044837109835279599010476161188828431564578195713006323708990657561745373425459461024912720669621384881945956174579463759253784321729443691484933117903412090515918135272223129839913480470463530938778340024714644005132953487842085913249186192834893782463953094256521198520058195723156043432136780769082088486374463507166870145322839825915580295555158686348425147228493384332172741126185610224501928781284120736809575997856784251679166005307801994929596524005835735746007203105172476684567136366169696134426082834165867537558735598918147852411683039944567251402818679603482620806722114647803804814236560394453152048698655220768198629969902114541933233596280582503602532356597254967811609000175902631470601078128972972736690537060695997616794923427580608223352719776466764548349480150921390972863312174726434245903413651732904684202813042658275604506416843909316936451082685126815640726290500542967348403128803060025361995149732349135749667355433998492768162847111783927140319191935619433354362907733613767427942413238108007124377347166530252318530015691110942826829374782689769405567846102156626067369866063823564025539223245416428010505494889290866979233388811029254564305829895783363303211972243577316822998659494648505879954553653547371617154073701454904687339452533989559902387581976680782076655109591346338910561234680950216981821843818647507787461562488682712938282389554545306348944605438593315003213030363668399033664052207179264365336031206099671438118641282824115532887482581868542503488481465864424142289996224103724368313222795107049355889376891476625840681083307700688961390468967897099840749330274463309912150704221402144989649284674191117810615552334904990837718018718370005163399115514139764880137592365239277965807497445070328069330995598191510647824277672325115124238763070285380883623317409149216145562416634317471976978956746681306521484116488109548470125747488612972178601535544657280332087938070752265994548361727974964090086669062834736103015200901838415616719041520490437805680594659174774898427644310283045278343315306741267273343953012531162367143415982621419111899467389814618418535342797345027670558458925779408476652357230993655375472307956150454101821179042606156870646274965859799436695193652188315089382299008140261962561840775094942176700758395539334064411934987223877423726344769726463278593573876247273734011309511568952791404929424691180192839138902857461936288311297516125034501397126349538878862704266708014301009876173474754806029393023777431754823798077592780009528654297168378422555065937968616738953090182142223014300766512472369075852953667790241482419944316292159244902012448120704012830916072788851963997230062817383950195635696388032879890038211681034260868188448111342335139639756175954009544431932824748837248224536779511931061954150082988913446139721271764805318976664047952592997640327769724953509909431365035905124786844425038796553994031610897052089176629372326290313272657192910872388822996433667789417097614412941782452257446995114259998934618520286018663870277294464987208041002278194846164769356229261020933534630875928327012522458042966938231356274313340168723378083658666011885105725134130020192444299704815088729101719492116057467708611352265985869820556750563234343813332250829293789265370032079785253740404869100121970237513238877121282548804493856217674122492977568362705725651821288944420871237113709054212448451065364454409736986302598582690445480773345032642178680071530869096516036210231345498565630888234934008328867305847272847095825802405780370184603795041305279702417217536169832589751349905355787200750283616583237000638121127127993120101984036032647659574264897317876512229233013152450210403213326341336451167791247528992498968027632322278677408811044033528204653488928843067804466627176270599587788237560727685708060976658666391247707272024051144937955579814243553205747737597452152015147916186848666265119481049455496398637176502003627143592655758096485907068371837161262218337159390720624411100613153785873782849413457560598269742703602063472312642904345115106095502480702548112623527604139748827535230002868459440383814523186941315601381739765564220770627840780806332984644414901594989451923735669469107874138867000526101270178917319401564140717831069613445375532187493913364560682317722952147203127836802315585191636878524475965688213949773786000038507398392477388504877049034516559009172277715956392744721012120081520533772536790950762048372337982769647485794537222618034175973745301603898276471416029549765925961516489371553881480381914041825625221042744928482635078021162554641245965596801935168753353703727687785448762535464729223606464488202129897003721047255046003125099723688827591385604011521278142264123835166930481588593545211930922488019780655418930968394691291294853907915213769895927536570642260005913737623951751888930659019943749832413855879305218964992204902227807104386376527846608713469670737708551382908609673036619506775275334705694705891400955905060658552874818389351293573563452473159926671249107755795833632931368886610921625376470658057372554329085751232887835968309413835787294981817428826459101007372998469764256306325547619807839584504747633981559000676430976906535233676144948818602002265224082042959236235316349770012840196601579185908507006150710180740548383905201837769738741889206463042590659647745310523057922430511156895178490722777770647985387061660583550437241881218152587614729852009259397647665492998693979358740179215876796314203259257289547857722020744580136935607283883426055189355162906289309773498771393957790365584027650548883291750414765570214596378118445311713735063780247533417689514233850982323033349892841597052716110274264292328394139952916037263876702685833411670928785279900843058123279136785979820919361242299796354830944853968494297387106076293681557974047138552396828607864594246564699000590223006796896704611869474914007220848781878931918326091124488519206503850903629702526513305166677290540648914096461830339453897696384192265758104310708657012948509185974479692913368925862599590724900599141301910904552350092510621706049765654386855206809475497267652879605939825973966337486339999418290688574278503169124661491994702872867936684501539046704897457108348796840985220464320946023919752942771103454392102320534802650373641059200196030602491931355177635158758262638412337970075386384658949384868144092947572886749015028143928859766132288754274258488646134687369424006287741471879701540245690333012642047894038459455845732667114791061556773440478263203669170959054246336243965440001922629760525090185181091987424237226385569224873904640613227986454894848597119139062446721600036863283329730182123601146501352425347293627475871761446118382631576473534326285754825505845204084133460631854555005750582809069754389771882897819856863779589764986801754569919453309132123283938158491958338961410948990754977170295617483732544503848097388034224522995258960318345863680049939626382491749038570551866065652486957185768893856338517628441921667847390878118162391363473679548359974570834119888933390825701191054553371108298362601389917955071874779395681142137764949319578367641576159845173607426236321319637965223390014171292503987670386791618383944107294840611531762213581670735619875312421107444432441284074775062597257556065847562221677909068619317807168586582857536677997201744779356651208354966354698542472796289222840551152704390790158564545808163012083625860765344474732409649392193493458683054355313416184411748469607163186877447566501646199969801852779055158748567766274446728581807918758555394105624007366511413831327209066090715509724667959594658103208706907543045483965545918970131669975252043964767239792129926986460694633015570831995717007887341099271934448128628007873808292339807449124921170467059006951206174365141301004788174871262429963945780441277414029413943570435793534901077491718682947861924788196939576508418681494453935170094022250838872959034196738888557610083081050710937799754774456776791285973219346619903451046233526680659745745755158749070594400187468682167804935025435259551141619887146869601859154678606028185371665741592390399442977541724646765677635823318241180332061702572259210459493220937433719317035074470748906020903670501847964634154328044992590860015560349569848594927601984826924012864377393359183614297443026342764177650674670716818068518733692146355066228457397798797316435555539810028842345925835178214326775426090362775018181330321596943040137583642043805570041077814444776307021022841685954042324129285483664134527030791383004347954291190984154072110230734953494784747207881445471975822116302206524439702358010849591602070346931094110177290047823412301287597268013792324552889831354291723876573711013378860121761293308577964106997555405478280672075316975094082376794964135960380808159323544930198140397937890174851385995821022739268861306681322651182503927029363492756375794514112285521097851434036596709569915606004976849554178500209717574763240307651684494139260488047846062031410284712302584504663492551986833504008343395510713483559022983139765866048400717512365824072325385137948384803785352431076255145495146971336013547869040787666825510204564756488730592805633277264197665995843358563259153398673309830342745857080512993481845116190693590191437174433519325957239086337716483528065169216282629015509247607195528051977458540821857372230630243877357422998587973146433605423202032635245687979304100844365268264607070014487888397190475307917564615546759686496074479252849670094943454436995630901752595510141216094268600694265931657897600680826684887238528280289008958755088392875422700808782667020920329156388200295056271897923006714786087748565107985383181868488437241403692490327204690921287510922213562378839865627407545560887413472362634020709754278185133658992898431301756331630401152386832757137900527135677273054291661429354338435789175050644831282440881944208899478653504975938048308161095446800809612286831781785015344920184738982161164872791615345514661862652837952333391655791592333050555301070291595526583845389932423381358534209433102508436151826937847416252705764797163834080202088751425181544326460109198686264744100377398224721568731271428325566212848001426497480227992181054457696546899573199062820639512395095481386805408974340644902414973074568137188905026903366207511417185861851389117470660268299374987996510537045766801791103336958169451685256996276475338734888535734030848699625974373370377202243301319594100928411476195420777491901260923848035304257908173897742378563333230674072360747748703962109535568102253607822059543766279466144587938065053710656627467089671308194323953613000446976151782803993268572710941930836993963762962169145212096307345266405569456518730414413527774446388243538428513096914772724172569372298594649000754922533258964786874605227798432444387808188958208057805915165979088553360776728105246718451846378201901141302815541938336747614322425855145819542706700445050384554349886435640593816479707548742544243174218496361882912187109552117252644455560645691750601673343534672787397121966632564714770795282931393432856711826420813463670511549678036168712734391509315450177181805516566178113972606796434526077617248375296685218271080835011304197130684503891654708467943966884796874339980737539737047738521641127350833414554650288843130641078982001095895090873198740411864702770110087255185685894815819504464985499645746856460558014305683539181401735104396863690268808548554603983180564889096414718330955358459358783936233622309139202958972693040810427976222577289573513639803700685585481108168540593859513484271156745399950083990553882097588702914163479456827635633200364815367476785869102531842386957160473824150838767833943012803040019058271320591252652096326598481078576105330394157300912625464233831291662071954252729877843236133040650593332676497412000182506642917778204352010324298104032298439258183499117593594506281867489873771909381900893134914085631417013683127772381264442635874944694939720409816596089754050206683465018088989445764066874925920160865479915345016330483119501972354641834811981379270323466627297120191509853345380246412942995874775002369907823674793770389566702442242821754611332830889602541673495443237433955080556703318933924334908890900821375832775695330308603402006560360963750201188451902363952605025995029751405222588262038882908123563166231189624298913038489795624304073683178227413733759414519204771381222007768552908600823572422168066205783140387525837061319479620768071403731541155082964779231943667795210292614655999277962409006641346438357820341623625892679748838405940494920645361233995330428047833613987712994590638750106553708601040030957921528309734809436268273853944532891138805705184834359579045798595505059605851513653484544737714599308453647457975114236687506189441203624191590958494909569370890094382280502479576018383492988427960784817687577751854118791287161162344775349989233870656161921609964431777348989908862208407582947203628493346955448240602005731646075906674920615195697645703723117574558251675188596980717434807384306783826427927660343077616088570799133469334448333439590465688503927342051373907371230607349903992468756060325584447721085139553958576380500873098809618432343611132996225462228564236397525729455362392146517681374678035783377112533078501254538059601103761025045887000199167346661225693533575396254481120251336049071855498841431247446162701006934023628302035564323761002683801411422753993128424397959550646310435747650672993402884827513753092557640815163114615126385672821069541020158258672648324461338339684750269943527052249773639967861870897765101945559593619231558370462791213364943130608333196022904483248507994517833712507237400690627721025161173538939514852774861158986634286814793273153074731972216840604595937910258783176785107204328527841483445656399235774086133288635187358619663694139087927219355161058939951824496028911841414266593556388932432117790139729454936557913777965639144628854448419224120862605666170606343370792727405433841161097396216682987961290601188131293115001799100611730211691451604052534532482806269126062841076929519899106315573451668193402814114172419275193896467334995801936865559474406454224330108237754353996687215664698806702928056130875470320468324775822826932837517636652602830491309740879065162606443382719033215270264451232562241993132400355140225378122573329326820157580518927318443718740552833602591706551695952001958696442955325554564241793206731621046213838038400056966396968237115497849265769490877245785408722431481766248556266078280889316626947936793067911981577296668750777808297890775855938390038016888041250661457680220069396218187451050363795057277733304844220419345392600370522188257105885064386789133416618509973070980757305020162927867607111735964732786475556383158112730130208164779760836445290695151775472521587313610755155047204093017685742545699425652439863916103691582655714374773988884206521123053410398825089719785983237267428568084084823664556728441511761805947755343269780140260580830919984370139528819449530837908269777641583320240910696284862435739122073693207436802953463006491340737180047870088322580672003276344916746660553831942925964065654698386323870408872294686537362829530075543558173347424466911051899993159809461022255894517388999715999417050326349061293672118003113060489461105129162214608202025457021866465341510362826754151237249705748558507565564892972081679143023829271395803067068679133187144738871048199093428393303544867733085969971249257256654328877905619564092967358696844960973941292992235951153967340154466330419362601413053164257098338474518060355234721478075210222268172720771916139413605655756867381988059357806764686196139649881088469100666586003904957599524016811038537926024384562907854055703012437123615847617318378908954131992257662887906348995819317156392616142003139227625227292509592182243679939749303268010224449138591586430714304625998416231591580404337589159461331486429180119245005450458407957157755614614029428134183359606825797745055340296127223595098183480565684123297819167984334391315510603663534762500889240548632782180047336876444898725254257678040673489254204618660213869043507993449966025403328117696484649117042686294954487010288743391795523470814284889861293486336407695692178075533782327530109304426044868713869442461783548029100381943724581464320506741585553611054452658233024219639156979817212284405580594172775469597739828435123681243094350698653268867765545627792717630949467885741218088979610303655174255282844203369201728320468268311088938415978435448880908845307673145581620030241086476795479250279594482439914520462199232861495067614163718137223470576488179179577533685617560149404155106331376628356897472090595864708515355867738293852292179957427626861760499644959034101607456108457012085580075869239896752437523577732099030907204797507734687666881083437655549784320545105635058676136474513259339995955255388677408640217546547860548459337445120035878631589795478968569669966231953590616198382441301635124310481580564778474954491898623848795934149634864973998826805260240684422480811489708209994154993013079172673375544152051050577140323415820193561174133235176669250198244687427466722637287785359889573942384602338201949903967066835167285354051360470416362231737210718843589754118009910693711861297949143963150680254545127796902195482094872143254307928127695033147325485443820645602008152907537047399404078276107537742408983658105700661081837785899959849761058531417023185037798482760420706829882445414476946101443009365253058891443083537928570969800128736011053209088529253480034103895477115302701491351397152730164675297376013043284587201972281823884419604524261861850906928100441003336217126476059254818329397420069853477265562271465673413837098784573488165262359174525188672003395973022665349880987406163251440336752083667565294900836302906584414617013217631818962913652089348234741875902140751080861128566808834628766426487274603698977451010439015325763493899540000988478821764904671928658468265972670118749494537009114949160331433918232039388188785597882713941995328096918761315027612936732480832755033204041538713187613551192721100961745763651487460335654523220285746796922253927208901592418754390379494647024295303934183990187919926718422113871786511113110410971733850106320163955312801756758314806127028467792683992274299932337715146744117538265330184488161717075596604584461284469089797547113744464654994685189193338651238434337966381368442345200379294726933789657647662345837397116736651463099700419900426977214609637165601044041260575822273579146298389059167895778659169800114759985916620229631320905349476251753338087284346961938014123080109183448676935108439139752914589644770030407129464595021714970493607900203346971069364590574151623055165556981740414697084287265533288912544270570942499731529488468859501739024165883687759643788508299182987346473301433193728929734810779375598844284958549889001678379170865330525445033730717468830083207486144359878323284745702698668440280410332428939745313673433445967969462628574872741811780766091497257673912523975107418236980695059063874689574372822232218843729355540555276332531872655109388809693962988024411385441531512026247260521807583846912487315649107292059464072514464980210324768657856212542473831878859907529428912648963920840080668500535809611980741666442225535503579071536225965147270435613436115771910993556679188015710701145700526362003463524980965447283002250488120715167921268200693463312017585658808004122966956459990958639638644206563014336942454687593943578660335180459358591552880005144346076730305359808264067469418652470741336171074307689754317506234491563778590472439184360566111185848461894098677300474599834738656776762537706357558936261168757359183097649751375578108200404654838869067758704959140803015085773802653830855292907243437246416911768092041798153081145778273019882242571470661102681762363948590495008687339530535530886407829867206323733481105138657536883433833395401044600943616864157131621179995832744189805753081083708302642724092483172532515533696369266395050648469657004352263261394118656033397202786753943483461785295091584324107369586223036958770384710076469687016463883527510340845232623995477642163470118611711036226314186933923830650683447342139583738396072801803505190566481531826851055430358192004926385917488269317313570161884326206543690890760384013927376923486931419791296583892540117886332105740913759949447549745925545227738005443027205546198696443322402547535750520025880001487290025840795486876608191620511498188463622595923821884627685934322036655787040345272812236561333788094564998727343430784141915860726035191329390350496227977231690242047254180001991606238131298457754530368360540048521535293853014884971713609429419662249385475425736563620793450934734408523183419241816390487721155996848186554650607882933920847594409223134547518263550826010622198143370981419575081650708728589398043588564835810792002603926009107586297287752601983641730283011325399439635602064762253103396543622566655812983456864305390335140993497121494449063175466523564746078848294799386943173635200441006768472498006499629331860476981448672454750802857837814804328488636766975199605247776891283231901093125312531107041711100708575425257696567645203387948854233317553956169482413533829631550423380760846368511138342890302546365905216912042134203700526234647796065374845970888789773099017718648878854502263867167187152029950281346157813587475091427205221105401480188119754523384716429778683547182634266677368267680815235239998935910873134322532067139768729163595621500977884207415435498623979388728032815656771860110454628840065413579611958617835557769336856721275920003865541193350100459098729169683328097301219331508503859424100169849909639382291112878490923824196152217056470177794234596494662370367490595411866288887700220474293343191346816746542154803853953145347878312065830677653308718721578507641126310668379662872090286194004837698678425321798784180422487886126928433809229508682857092688112744506438972240153450866338467972032431444661760539514399964102679564537971207077170248525165477778306516135996389210619825708078447870899839511673885488069194964041020822903418301891953690178238607557649053450814624220814270576020378186575030204674710868720193816816800767667997398247730853923211941048288711740071215054057603633703236631942131124818052824846607003571098620513187616608006183026543684110442581809961885599099450252996209503972915329323974294861730927047618993548737702893314365147444877183597252760003437267833028411469327804038268848933552988201929692280376562149330700057047528212194654219206479645000382244568711743201898724049477172550353449536671537768481630703582378739252392384596316008339478637649912116381807733048918749088545701986264541616257690673658380437706717787272746208801490598791932248528780089907186699758433466338549606829254596187928253511334398022979539626594034475810533889656134720324556775498251343794734595737276476984563906368372304072113989162016546459774419655503955431088282232592759420521745640595157228298909115293545642393179142037575815231461672347628933225767037703632050793796992745690606413102562759191631516237747756833658986660970774594970874242134766515681717529924669703219455236883321863101154020593533827188032931954723019620458912777080557206327841593834588678125915005733124396761612871868362845839743784250368139770469038668362749072059468007833135907022391900782556658582124844158834812813571019934090027203851536240679670614393269199954867102186628357552959488220600196665783464001463201555616256730030550676636428464844141809668331959147126417314929966779610877457116950433418731973284619469370885417712594403941859404283029368270078922297452390364661939906133576760929378455918618431349960680863959750947903150125107998923120201386103767226895347638927431675645206096475632372478277110988774749409470514896635467221295754432410774013784660480852598871903207495213507876991222031521412993154945760534607620113173190995839569121264383867496794131558226837729135937566114368183410301790178336482731638187187353763135438679345607275808890088908678337824395696757348320480667705471550319007199005294441330555420403456467242481601554288046901577624378788574037815057625631310889624701116392476093006007918992408515101722715566928972697527714325696619265474488489519524846411758199429345704104124305627686362878628760882862331165116950592884608866358908111057195155736715426799137544365269434237263652125272678883036728125350880700541511340125655707972783557328481196798423714383522242862678494851887467533984589993298764492735767890408533804449966638761996207517857296117677492366188072764566487453064522435576869359490888711853963133264531813345833497911177069926828386333926613962087973564040673359730439366046566590871528326511978937915309646603117122729042603353985689163364505905454803852942742546244325122858411874065237119223587422828492556528931263121719980951292963984521685131318747819381587667398043245941363876682945161085318064301947920430672610677092726214312014509969309645882179425355909109178160530499180444529706520535251682941812606826373074727096208425775433142223318870134319765816204618903731503586098943209949184566847366945574024900043642875505249568849164022801703888524383462300412721220923705228698661468387240543729247713348292404232761029279126687604730608939433356997633369619049027039016852382813216527600812225310886357452333408794627838814944046622063189085218247170658478391888109185282195503889381139202406632666901798230453156811870847491456641765021553932932885289689860228118370462806571979295756718543432612413834129059747805441814880073283158941310384657590973559217102633772657841760313295924640839433295446143191763548176887097962339139242096501266692156505423951529487658941390251882810254735909067641962489285467527451138121839189064396199993967369212037360404477573855012881619530151017177568066466730051578433760179375343505331336720545509202956673862181637249782085377234386281555561657658173768728986956583396452351027521829546285298600498873941947761208911550962363216351390686439131226527873484356457577441581468810463836833511918927072343913064518242813383689834348251586521333223162704516154079665459323541791076240655199870324376931657285843652531138532353382144179390447925830373012856941059054200605420646397511472667172424930099516211175972053233608021992612596771769616595023841103450942188563632963037139014510355521921314081775726219572223926127766282821990840232894935593588176150179231701240085136328640355121723990999121545614206375183623484924625323323896388288002104344567526130878327032490257828919233837156237374703152702910271609045840963092855811659286363644944356856913279039386020273558502215133479129581901191901317944630443917431155515664772883153186323366979781358469985343145221815375404252588344050283869292151960702249119099717601855648462167889740754716531951305541040831085990605934818131640890896047083774045622187541824002016325056238768397960981432436983556019905406452301473239721142503041651454136409749323441136542338212554197605735651276993829880442970703938396966004265068908835404706257802058339937206522697683590096082143360832311282337217392546088121644799306454533064841894359652437040459159640221542372887854577659453900383566477762007990503930350942988951818285238742993460669561230171299406487811246397421732708838514282182579926464889223927541785082166258742887995421178752172731497065322643078771169581601083344858061584319286561817704317908721720119394702154811940399660037597654106716320146608221533648060630941861474599269274053714896830085909059903570067765214756776897765217288567639864052974723209342187191967858792647565198483746164778267772752956497671816559188342838333740273478928550922219472983268288509752484180206935158373150319154637971828711092008678765732651010806870976483524415697728344608553302320311100017749873365326781073932053678987769277166811433760085973882572929640148327093305295202887639251100962375300836595054308787844180047113091618437786289481873307366828739139914153407987243544591682700224000591978835494520962940409181320267766400974214287802363178089884430874400694808777382068050706239968092882868498500864884403093003559489940535107823911899045567846408125360451187766919458985635736901209277581175444792842092393090753658106867178378685958180476827602388822028559899502359290251734022518835236830336411367911432581105811555570644979545136420924473409738544001480343622825558197068476581142514365958719266259937058885771253181919122662878922263576614212411495369866927558934076929445251879373726311554923558582306947991695607235584115238700483539807432055965057650892500794692545813682966207347749190845211368734380386892464072400845580385936241103097338138546907777055928227028919029993993504252621777051690948058562923602119293847014866207307816615114824166755488045549564480275004280115222854051462231853110209835430052761162901225274516116686650364417476907295369029166572805948061904314488943377268087814824477708457046032126786502764170722152170273399686008231424197043418023798650659424259471264938659357210274712646288718919604904987660136286715951697287641533010734345017553657376038434075945391101250211763708395418344928537637436844862992191508074374963564016733961418379477583580684599210161170614206712507059788674210586091580751110278156862944966395147844590714062293619756622664033875896896491294013874678431850705134189947157305547662444613510580692620175526783142809856221633081125851155201753663958602354178334142609244004733247577099985200822999723953795286532554665351029266262058987702917023122524983680702337147525490832998012728414805906422755477256038678975454480962980806085354499526227588057120018126286758221015778155085600322451690069745304745464712439396447051552601458093977628356804695798089085775345223024421943927731406704123398309373576392297955364971413592168290491795920050020110643398706061979618522038888935370441753628122660433395776386124440880016748136430900124820709261376812219297738167303547099541446571616545843797493170785017678377884866085506891452989936699897675517518798945929841646979011174719153301577668419656262709418542853673846826839731763337799859120254883089742861509167663056376306098878534898203962773787636845543571901694259540634143864284027607065058478539738161980121141832151454873814414935198830258141159175087083997435501143060824048711777961770995945304274562474613249473569790358546375032429699697552868594587587529690389934543888537094467577433130853604513049676438976232912696088189434154940879588008960187300210541423880285364968715945227418803516732281296352346479970897948049779792013852561522640322364480242288280242651268125069706509104449699650280246173953631655107000817218112028756962371632346508803080083701497692094185020370675316190851080994203530006475798185841493963946404213790346550661123615503904029793013862316500871949445174240743340373159397012926846298739383962522559683369532156091610354402638350208324424384379188800084536940419720547009677002776596582463302973216070129501956496810887583857287732981943333275572891389563435417911531311657519298756667190145225895811214204875857762657190835190000711497930963414908926265197820532134633796368931494358449923033929260989659781976606355869268190915837904770887624817964431791509682784813960208667080110540690363045016319270338776517026736527559368907844378380043142589925891924840566654501853685054127774026151722481767924100874137956462177436033202671016118276276095202488496791601875494798429040606183841682797108588055299986876879765782019511131802365057908547580438781530681782433891555913293487800082600565552271910834532690980446811534129570136145945604629720478134911828117994496919803909899185393755558273012200227155515245371480852015924423072586931694072379545581904583651016313068624281653590932039370820531131948161982310246526167045941932571603294640679661611106621341024477869414575952980278357912649145930479409778921885967077772600268206755973431185096250179433587609386795461068053197801623553847365138740958176175809189090576942406890716182413695252472957162249494874379996858452518255095720000725990990020595118250894861902488274012858045818741918636679733298898207677962519231259212364328788771518086278862746861472439982771527621403606371210483964123871336363183939363908567438503398536040829955636813238513731936664570062349279659471296431857390647873037525349252442569358342892443593213565502886148698604922688273671229761116509633740706064375301385923222087933665230536698162908728032078137196480872742885649725183091277701942656227374647243671435602795573253951779170161685544939406112669250921105302688072931164445858939724641020742276931000890307335254846542889533976156138356539260964614632029765474728256078850693972102112295250411704638032836645459736242340932646821668122198263149490584972161181588605674402798262475184156515542706311424441039399168063198058384665742411791181459722471185225283217775009217814394330930539786435228706906283204853035736295476550801514584785267503582208317512054484352622609922051981008094044026778562539399082069898737590544938514297466827996740270032911091284500741578910147012387729468404084236318384895224398497976986543123754621958968349472141490659580882273495508355583604844697099954287469569267140857207468714866384667707811889366918473344854410725985390250152588385424718903575305739800171759224343957082440698163721550856501848856467665726252749556678180410456250526782915054813188888858525463044715000828808135843209829797181922823491659185629967523735343484980912612920359656009686032831123359196329116031939071340471673583578652683791424298163179253394448725552625148208353550159467970088537759038362913601174437972653411140745567033968577207980164720110109166840043788972130031277394258969991704664079560427757186674993350342320449191870343941694031425625344147406978624703713300901516685407517920015265920171935442561609365807075695709434872422193088997045935834576062011709068075491807777022756955415744029982116696484596055519100700468340813685473897625455049377848444539786958005762693818147120480595321070471553672405156751259941156406714547914736487437039350092148261350070288133775831599676096128047139796619091532463524450296747130101740426140369170300512793175018065544199621425011246038912219011104304152981158278152518046855762426496160448565348493789343344649760942866431744467897885581660774476091700482247541303458695072742067953151848374327137733030198389178766782010647583377144278840078400578478784624082723897853870354048207478510688985095706351591874777405994472336200647856778247693405586132676769448478453320782403551819782531528709261975371597889355044525615656941459933637960350568004805926890889304102925828958628028726858013466871159824924556796167675843212609168373010603195900597249281257427011275491773457030192126412677537005341370375968008662471949900520575072451091483768369859385207184376300724279557509865936537694943311436525164519897539275319267126851696186084267272005416747909865805806281354253385784121225857789000866128953706980542722442360595909274867509493504571914910923280432137949393201746266113518075070883591528023289685644691161207197437954860426671316792225989108497915783049160292058914273963183764368628096305874781101033083903173667630185969060835592006504183412654941676707099974964257123864567768141537110638862255763629140048385273174505646771969176309815263041085687928169572543544423531720527033489191941482983078680822372651188833589517198933724381772410122278786222532091549516419960499023725188021702404884358697620606845543832369825353688100145933240669866744739914972877568452851422292994412033284336836379937743788605006882394007089900589781800947938681603362537831800906304144840922556991844797850270765078479787002630485082496169518097543951315523172562865287674810351045117159767402415766602732011294945584977744693053726718493893784435745477560738531375463477313988084423982623053096824983370355886373611371984215587597751943472793362579171198328386291822433818707633451400618961107124766234046005424231472121165370122583413586764867440578857868819802485886534059266919663052549633552338003431572342035893900937127391442680600241195337164289348437347669615203762489856710541307848095696304046763593192937986529312080361359241091386715401537857918184973783213810652990370275906774781986907801359870764156811171490421870796398414094152724642980005202721573096629523132045207140551104274797445707982564622827929229452247565855924169641184426750844873503397882989289484127262666157313593708850930593303739938778442613869157032116601937870695318754957766423286445395651807348339294140179552754486175245304980745832061913028342826144052844741019909154395088736477500765487566381581312737982864397554677607444892270183128155405706451651050154319003665632256015876009352526835947838017749140377574392681636601390291169673410785934445954245362743986989399925506151186049819751005598639671041748311648978609654712048789350490583773676719900635587516202752505279019024823965958888188859705731983228687980737508619228012884094276265934611817085391045402279649193090909213420513540503618865694288869594310241357374680035058743010185683644195709816335759473129308286004984635466724356373557241944768719791603389602947615843809220447454632981387460663816679647107975933828146182325291051205889431432169671697118438443223060426799185992521533687700383087650637981419394900465543016084159623133060679713004785987884709169098780680860099013323682520230392742418941125479879797310505833863201642411551208835962065573833577847193773124651229974724813610277311258790580450688326577767304321145724134152569942749305434677887784698342678667423739996399963206342204457645781086531958609360718515673494478509796513716677785929669571829573365045654328950993431663022936095564888692302093108370837216328195643521044328515994560139117088455624838094700818258920575760832537923337834545267448199206764958684082136573369060319643137446523695400870041224689309557323296032570394513285078957197818320012473834272114361154176515815889786858924220991655531407361995886920931450166751586778425287753030771818801807675088744915012637257022190703034459262149514957754113942016722712291322257513453642530114997485346936545628383315534958625581074440771899971638672929604158273574647312814656964981305355656841106393355068266721547411930419716111310545573283562969859800421515402880409918716302716252007071078683122485207885846575707689449275987987248317943041296105404013118954562673223362172163919073944524013278136238000892629108417170930839030360359283439571378208627376688313479028930481511453189635233749089323631515638192459005139906226141713392322986744157752819465379636038906438202149229539522097829877498328618534093744080754478084407732273574471363612450585882504962394936261223872036609134557100239911027023138312555519378681283376290127269854294052292774009286339175281153574412751397070287525627951023596803727343224123317137466029196400094520241277409058516256928212863118533487707799887942201438793975945975954452509436366400004763435539337115359223478841511476073917158022519691175631806810859559693890151201363156237405941141597931390254933976695489084068326736051932117494936799536482052440014317020445899722984402278896640709462372462011255954133590622744700696911028697617639022629016380214894696678162367926808737514833406545315215934206468688636539444674288050055200481726434941174727616694132703257970723874861426653450603980534657927581859328383550760013106482510146560731597205892893665546840772606532914589405561364658764900715614719945834451142013673555354759568691454803166690030762110926478425917207371139789081188462313079959056790995742336153390989949688762324262941455039501229954975576495844985047264679537548674174832435827388471531606955223413408706900005676668824309964495586698013111735436863604327568629188352862143067723757596186861060120974240437606319595815433372382607862669811693802731238861581188635531718211633811693098711420420911297854479349112492484262194342048417858734486180911354061287403553533468027458815381588504972213256154791759638998389607716115201432942829975981154021247820121080981284392727664984722575896474925079056744819581784814195072440922321832779585328178668830145592744508931995360125961047650747187451238726201579435302152059047982600684609751022154585869228889588888905718104033239256569049678106874735384532925197975609381525125380288347613024134065595769499000909424437209238300256538645570585486117749593000535362999602489092903601878539596477031449916958052442292549023693274094944198858841647006969155069113429626434051136511174342279507768464209173205590049703326752293651825243966890652193953315528324934853836983299186131981292851946125338792090181944635692262891535868943518937746735840398633986109115015292130801698827174874752623582550747373708206744418264979340689151817765050834652978624255095064687481872092262295658948558024972016828660237370312821341055606787671769171816630043166393774892861592411596978662976249724827837394550224695733818796827064753237101410363254014470266025862298191019808149319938676644157789684261341981963702228885606578691056734273020797475936888592789065919701797513796600069104164194901404775674995111483262830552975670603184651851668966552064536734919985892964289116989949080514623409057308565662126596362327868078356509372300994347316573773064344451477430287094118590420180105488918386057857350202979231592398128166932393454904964634573494028274284778489675217713998084368133407132509904255585540754538852616454599162151826608168734471829559809053844456782834608827524776860859964318182640415126027877640443102884324546514641886536953349525297566493963625970986811626266540207598800651690879915727351977050020731797204739826475985788142137747142642837821040456924505662574322395901428757130463935849006128311037630746065126360557796328667667327673254996985505847021176279963036629342765126778545646145129645746019661786749488780112152407021401635828727958966584728732734659342778415325461116816597410755477614511040034175857056539108873262240237940825056520388610580486805975340289776315027554101678829877466448481734076552479259629536583521423291181675284771101539900545532638795758770454542902227086448933652867170762413274968459451337727931118072650675145831569121300882732323924966392545379918444689249606276262974098967019330069959916545216889417437596408930904137268272295388862962390666730523806173516622058614880003249624396938933371855454362996704122294062668270963063854504827628795905151026539366807779291530670860348425381987975559577795809811546635271126686896779094632020468263191121006917934076291892579519290567004093174704001581553972272438391686411834914242186871556026082188306563311190974131490824639755438585794581476389593147340963872396073122530061489285601814947394573485971308726191348329119472113314676895662770538404947593657382924382660649786675528565163415660280917003152903604522559491970861771668051003420633789280116082079970997817198793960164923363617169314693470096281102935190673615378330065211377298736502415972407778636457626284352804651165425798080869018761031922442623904715132847011009784314536338403882856943765231320233968675758453826118415623987605411918750613179749048132213288926178141256202152805844704479718894061029118454692213136112255808568864614594240178854549833988012352273501968038240446907910956853836569777804923142478760647127709714727338720129680124252452664065333447033498613242439961199665972697090730262965443366933371138735032300796002420362058652108892099212118036627895625326434520143613845755004534600261338185314620684093277340383337398373097880166160530483904561758397177117990094336022729778587360567631366185773430454862674519897997090021008334258059477645618124943126365501048583141497065492117699564265917099291418134280182839531047887522234438719377110387490095241348503595638745612278025741849622330431269520817799866328825518319949576973497575490566468171327302688357159383332496503012102894295779446170627769390925418899789808863374034619301471807435858348618208914074622797135056681761925942334234999410345727001824010314070179251398711505714170882464320748320476791431324101322746559003047475882922084189973798670640757210707305102240330356933250788386347910986599139274561665521824970460020838017366925242045287318189621316857939051590297039485309835489168906840665438732761105297626374297972840723352293579647562327890258123079062112536654800282270896623028660700319737811395027150335586916031053114483892340549095066062988589616030311964265164920618405559719749338823070181534113712469209136865159705820855844346922116648048281921610523774321140925480921100060755380966416896843018111565623172668374977925349325768705043898191151646860052590093529439833724950467829018423298889007336121379978376451819943081678907784257784383290294548980257917775590052617493655877416931148648066465687048743960267592048466545473005037653844631251508448224424209640851280760180708117355341924004760967332349521987681350366351383523795289190588672185946215712625022670277390781027205299517266239734399700764511032346357071318270729370773242604438326242008259309101860198672660233953310947080789003454412157816180194652141468303767230450709760611241733047772426664919403811391925713407120952670395438843601982159188247325170131770835912093079002732676674848260675978127954058211903208887198104044122373105291493701380101462497874162916955683072395344092896424465815199571151405449717779648298074082070849378115192086811125050069772114181819205935905193410027016218059387039826248180628018978210047206420203061128395438744484630539619074940413935702502177397502208912258041570192780683751591559025014249433499192466914267424124261887368342842236654653764335411356159265289667764273930279547183453871388187004288496148000126401958461971715780852537502218633064060620469509383275412394215972657265802847875747822997874291640658726328644056126255187768629650587303105401158994635578270567300611230984958766133246090064342301664973576528765844544679293578445028987278487539156219906849706831711089716167887933301718022377031219594001850598941056469476327941866811862565447437497019223447799746784348807223346664088479202493285501277366158550606111317207051468519292595844558337266618132770530738012387783927464116907141748911476124809316947968746389424158822105943280719618263482220745991022073953253243006504164530530473928575332432001749395277093122140246460744532196310728248114153986907577202337710211601508049525257643747672332554131834440098193840343917626697135641103506901916397599186584346782893337725105843193030693511983741472162157528891924555520071063245367743633349952774594883374068163732368696060870803404203455925000134295074535744800528212067962194283890080908533906351824483577424450578649810459232731704777089189988530017761237907127760743776466595321358391642094703417359024596783573218145267209050668638193500217201824600069795535823477290013635835030908710026430140042466637822230679402643385920061935537614301709674462252895946502412242038366301022316129515680349903532055523068557423508631762805460126822023425065039227884747512056058256946759636014344978333106316731853015624440777907984635302206178174412283556483451748332612950085813238722854913433015797523256619428941992959652139537554315727099658909549927530427641042340442455814361451373155220163887060051597033760325458007982879348761812807615209498868587960822503684659169956073508985974626114330504408813307090806488217708058663815802009176672821312778277244699179842762773556556252613913686099507946027976044487013993610574710761221053813070128734819537297507094592979142541665468227687249253824331498177248516273192846890203437686744072236228591030366680970366496563454850016939641843117248633829238833793866167132639218511940681233703656013966457519442808176782116265957683242877968963702120269832710067611220305255538655463768021585724615288031346551911754321123104973614258878402975422812544433857070184820085643146454224927391481752654511868961407293790091445753939329090924737486154276929523156234042297904412247494538453088047437029696662163274491213795446823285175632347401708129741564563400445773445133039308064398278762260353071118094294731256748192082337241795924201574028431311698251040498033630937059529890411002652645887911751698959716187711336335748589332322886534330567363866048892262207069835752603048189925192071008887554583179912771685356330399777289659570637534210344243813150404688979800518879963300402952594714300049702756663133210612179650070010857598342557343710200209657343182022350310297782099722598798984735575123720938950038298221428117075511446512238684252357672164567858885741866435167662934271853197865815341322033319513979931653897560569518326740474433171718650206799787872815914627486091929751867154860629285410903043380572753340398730320186844718700990399771410325497851357998160001836784117565552666502415717444293746979178629126334311255779463273369703954871305705293483234629049004724456624052935388448829033298060550257020171735877105640788117810012817097223402073117494880606209596574763410475806985961036445067700135172586844438819209753338766640051005831968608969491014844466366667874680383165892713599764515145037529073974119881493649157051174701375833230025544191476866968226368410744949469421422965089012919955240718558552893031597096236826906501575749065037917357811542354032116453823112820048902489121736965844867634096890088823713285784701128770752344707129029868400724801099740103049878016171853108804825520142935538943571450838777306284763075836916621916000639516147970094935655399866754300211423123826912151795574434011837766965480988966973212751424165312220963652814768670192074831287166115182014848720377081755130763288845071133378475136284268525588021625824792834719877986489580648739018171121245634767402587451555007813551200564463589429043736987549525690195445582308699789189817929378177774004050951424873767245845408123754194516546371643405469262972361590101124051433110194852940675592494959345150337410212728616644869559967138260252304638877001794915870638500836612368139099384574453364219684250903467188412510231369731610152522870823278439168248847800213462392890714529380751469117220186108919712677514106558588507118897062464025673813779891123847821430740507990528715059315239591242717860372495775560632121131261992662062848562770104501264443886975519221911078180131773039963540239075777940566429848869355554712774757871421793425721333706968054139108221112605678727830762409984412811748162797187618368662983881914375741205720129987466179891973543069779284801380879783425305657204640490052223588035075526380193161096940585463759236224512309532572221605667024311087135313636760568989753127497310723577896107296487182397313285446707146908743391898334791282759383879882463387181709016410050104992046506088760640344086873326726257363995267670467108782896546470128014145891317227554474657852676727182248479993456645231296538713371152210660761234976731632985289186172289457429289419615729127954906969278539442965652991246161727894296893704013187970814747515215215445794865730586708486381862278573388992071125686846187118913006301120091765782769026620785380098789277275370872241603953866712336636438093029132058913576171508135067957048180614494817974145227710796267519794239347664306127599873092988245689965119357639153424218581276988439073462394649406240870478931212560698160664518410556835941554930613981219062909639606464022679636041303142769038442315647034945380265115071153318540334039386322797912906043862242610563434417946305245318977032953807260092043947079551415256029732988373978434247402756947543860851202758556729186800309283027228071010141225796084651011114144396850587265099613971989943145713876550075886194651323541174497424471225850791378414035220412168059541600420954970053674238676815752673026902251000443265907079582704380339467441744551288915442041985661072156982243137681384605187173458199298087111723262334592874285317673764930016475565776303770445669919617451771430279814549762394390098674784044907067495274424742322426936304938032586819356066694725663046511512158244255805232048683762837231363472948510660902800279348189749652243821762819887880591105978476588857950638099994815421999278790303565774212742311053561627128489741490914766454444000793512453296267058690832018524488606329921969263902183670818878345930496769585801376438301676403838003055168196362605031210978346150129628963156015907493350342979050641960664301089192358018653040520392369307626463658630355294373553105897656145787732511058064698691982006573997777701200073505796217255955454208975942883218335420904143403211094587492758615887014372679123708667103294968002404288570089400244724241617384482400226183646400206163451179114161778055225637593331533622583882052888477157564548555835039398741692082144650500364411637180526268118691511546223107679483093500696782500349632639442184400559373694595873343544670623557995840633991173716677623325111108645619251009915839878023632286604243156708436449902546549009888807003943869729415922591953699255152640467884402225380182560297031596353414269101897156977975642866390729856214753808710474519088820859955215971180733636146689657133810305162023872937553221287904638196439832394683640650469857487098595751908473579274742402387820603320771963378806323784635807997743536248691708802999413010844467810366028740166651334988340887251644771420958011927515341826725318587732984245860309852439587713041656926352038541521253598389613829678060221095350452840577694273824951298596201429936771855002571748619198782848634538147265876636450671977266987960645295171117315178240897052676608622286102065041016012669135106213274223090289445812152873150888511045660838081540612018873071784498072462365032449512265558389747421694486449357442783745159430329362956755493522321375536342409723968340471478185291895866881237909728265014073901838497846964827633129788853427476323699964373655614576675003689721324006143017671437356270674536462929426004653910182546211538435641908472619675547988457924458505337639629562421324928112206742117638573554210428268931363026067258936958729488106653880332510476136126148830785493346706852515432249451961657207649921506668901048985421185432164413437903219605757355852939427320454774452826761695230167307972442062709334836334145715510247064728373758762975206094578474760071995487598006997223937458422714712481047521805546582373263263162304793520177062083958474551741520753584078622422721474837004186782309725504052172251093667153925704598035687970011171662873766962056252316631974139887398583353539627780936158669530336466011074832312503109376652312069980499883658637513859601795458952519447796692936995351997728523574140275709717784945588356123755881819851237222669722041680329429890502097214459381486483805969202022719538842447952189780851584954791488991541407390408173767126510951241882083947674932848930950267374287038923764364689489485538137199286667513036578675070038283176338776243684424469191514787393840012185769596749348417047324827061136966273269785406355478822823373578209175191852330554889925153654525132526658224773036650884744167093159525806031006864863483369769166402307701317130967871318684152093917083270040793684027445824603444952313661104842355320734199747093631801049888612258102930385044379942395480792666958579750826219344574371510372081430256822927218704550044294312332659945801740060191161180498603364761992485462288170177470810401387983852910470556631608789471244791085351534210037213673757960954384025697424781363369261360366130478600180366798385143790184769231937840458172115685331540582246853170551193165323771387843117947235348795986569978266394253652686917756905623233428508428679604042685524092086661692668780840447962122951931170309881675760191560199618448455074140044381886091942039912815194964214668929383316545386195154427248020148642799032124296665707082338636311296365234916613581847597824392107674824251249313265654058864926027081871764744664585238717938165254166396873880990301391456470304523447732952266412656876527627406139371906301346686267710871102703429802583462577822788129615828770533774691198598510560270437265934915741058491350823890601267058781205410352624718036513198504263660030174570876144059674030938620725678779113430266737752581585457859202297723189743516224087749299902404806910032588379949724788710054094325323602098319691650004048410694562144125738639801388761924276365940095176440965225830270689937010257367611176491197247850312166475439975490320037388241415078496384171582533598149131799343530327280500228425051923581607399896040499961842191929952954250802838307106337192707138832814079617950484749104146919074786062530462761696615911689426673703178854104153733647966872806198600490250496097460054672814678824034810885911315937450665138583186123686134781864021580865884762156267435854184804098618135090980034877570684426292995211720792530634260160487210943565345066468276132527468752400660268377221173125440938366201900246426367123438140357054937035026500189542018415681295363201519134522129717046892425118424173731793333513569731387403863376452392348971878065249221294309780842853108835919910903546963680467826627500272613432136173864394332437231700348977581928691481038520709833644430230067562388554229942452235946218163899549013474905670242802798640892251545366239379474333209552567341293964491858778608227048903498062405160511258016925562094233074126678243361734641479378491737610286425446472891842609917385759689922580647931921392898257089635118515537574566231371465863234835424186480703448534951701905629744270860595891016341443997428955853322888195385580327369130994771107460697888418938714914211854741716693103034954698778966665415816587138888646718178907000425487865535440131048215685886227141227704895849230755260603036065447067986816576902762540861890282908497235194176910006690968265128553538405328122595186815202626152165571894492199146187214165118342111054564853579494302704273815178393235632093871642459645336665741735972013446028326741687436853495260169404453324339062884168309905835085634855661376805178516264902246675819219806668389939326358769549867312649152462282913889023322458431346828759751983287850129914709254837541986271971994343215765419246962795968841558563895740210460283432158825474389885560453664066613036430682002278943841444027809402915791686354835773864120563856292672963276938706245559466958855538461841760149946668492434326671842284364635321361137019862131841455799025126944028268334892054355055745803884717243373785933038914950566853265890717240330790819876210035538685367229524990207552182737583731903914854409070729524654907712708140229263916460131828818793488650757151455817544672329139442196806200512156098630248094801957443726925331253790601416149067669894785484333088651173882954549063970400671968217359542217414152968403778659174393760040193917687240191838554517885658568503296982560623952437970207916282413131980755619180717821259960349283984276267117882555255780240285554733532806373852168805073697603173385610570792381120067521137993821512416479416963090415916960541915876386881125861584650490094774922935799647492705853691268604316573227454904543431120501814274205299402600660388481621213683231366900720173800429737436394188235733125549855432361663792926792374086052969057258909241305190070135998415710416990149584792253239498749996127500047275609749108705052552704861046473516473481544354049273681538956557436176440550667713319973098730238293725185358848231535863785944555386248426783296635005411973113599197423260021901753722669123466046440895015706582085264256379490973138331840686124279218373794515213907279213136110965409524815492074836425547933067340064419848925877282563821451677375335615420526697436591008983782289082760917314588733708009525234680770583076223096946472284838614381582432719321139706992210697653515220784229307040356863255063236919453711734779351677494329404300350650078687477860566627351900094734719171848581964858440892758370084566511850992027494888321079023568288782310651579650715427281230610602286964827379403153243053908779822076070220095813357065355774860649576486518207510959019631486992811971089829603381945311054613940422089750498569406159881479890958352362180515277357904952773384268106930161440569935233935886593658206554746947594922369340720290029309022403529636279248333598466724293232790406152402531861529371347883505914469604415596752265309731513760441602924253874187723579729510584137873464109030823143250502424216953577652235251052257659001360700163163423790683762347766287031537032167242426726342615307334524782696843442118390353102463014246447608277040028977059451805111553899253452385238388701320586172619966456695148418487275164941020335036203761463371879711370622922836017321141281711618107084905853606911761918656009008246879078839497492111467350106687570311621419597981175227489897550888314176683513318398330080153111042254385215393537806839656296998297466090722146967296149110275771848256346397275057703786857843275675746905989479712046274121675833691860329420022413652276250328597583386370537154782035554411923844087802885338257920146283676461730321341123936013335890948338469393886562089014277449951085184694038163771099809686077342058713225678314047368595147478939976663294826037976223192420137658146944383449913615246694067200102248421343644398034440640072384693296115170426167329623777420205639837541404816765305926823623528523246952994675942496724624844439511979288330740554562064304236969944917858211207484184497956537197187187476861924032360173222186796198205247546607407620937752667878536125381797237141671757623794798488744516446001065444396264774813821084475298808637989486169967546483382452436114326900748517946224036060134748484298150000818854017765159014316448084871929313001479681733623651986627000520869665426066681579800783986941003953835004817829206265847651374599988485369186815018335471627446281090562866362018395981844192438916406832722414275077449224102196491504848763925225742796110438623650972992981661953804624953202404680788911190945493938907786221979880486011039602401119545677021049685016686043384736068908700950856608406819520500924098703295379113408697706325000972215192492012498288264880879144091796307837721730354403757654305001563998789322924162098982259311865522270058063267067722617573793434402163517244697182565641101732169267625199126041915150215447651704039641722850698292266637109189366982144031842487971755236224896371333710184310518030289194343403436762849527194759011003214461242860170419651133594888574723793240906658539283644882942473047816175940089749511125255424272293869029058287050243310649764738168779380420888708886353162851487782379798487213236527366872835000077333050042815648916087419596372096343639399812183725986096953234373217909266735077219466917149679068770664816884290614758381497870074116989797676175640969985834821456244921538116905477651590354796841754546318851990935896756636773484587458518845957924603776325701691167762820030276202095226378620681822554924051704627848594193964334749467323893648030290308841655797879876404047425133045376329794142067286501304559666039270403608183717044425814882400093327321068606934443103985233336687287183506891714107803555772456025502804361355249907513803918540999850902822085556826781746021683221243179469848634480690921162189888453132036089662122678471881821361728510690880412144267495177352510404680799511382431213774393849040882741186574202002676857352485874782927919421525912038997250661328794514457643737214874876681344548262468300525877509854156990295686569936134263524695968732747765416161394674510856229820349007568513543682194666362604891447170104130321206897310097477061953782715308805094976718602231919293296216244753267516921165159385314802561533553838316204176365653061374882768030714882339902289194628867072990861797501100241127467551178581605829803871646752041219793327951416214880565738473839777820765035674868772196740450050012192558208633380594075416581886266066952697756745182091785042758718041763948126842923515216796110701079790028727941071854652956689667429020401580503559689586696545933602984259826224924621802693391221658855606282434771286721309798367968028388129637409727040094925182014336771815281808591329639156291860962203512975803792531625926134565335423238812901901758276252515940252408519763796746978388815492133380035796051620434146495141459871138507111590539777022198161258136762232626669242378835489084316606430575502949655155736547160075366294201611109541412394925887097613210269657302139644161786756070149242808711392825424295218069082650789429867136285559931160023769517367568583561699743673852650462173436404260012480593564140892658189516443266950960607864015492997829243376976328989444800738446516092164830090892118557047364815948024812938472260009395473672785618314225815048200641539149651275913260029973592227787977125681961285793885313993600965025545330971448957854726764464106666932947094959747796261786608685652493911123989209827874782173644544309390516662508617131786334069328696346972477372478812415536899817626536690114392104776269250137444151648136422619692849200413425527461047442812276451812128471785633294206986880747968043797066085895936596867535412438195965710486739755157489610901400726206836149395992781165551606350539378373752666347575415554567823141691847952209252028457862342547855261897126142034637850030956097907329649501307345746599118729736571701114362641240826863134247154104291162718639463968731832809640668909395846945499972024756810034897125861845989458256051455241278161078601499540050136629334222459204982405702631149873064789472630513707792228461738026097223755364063069323270051966161412756634339035964702652841847779907100513551993186749960231256877290395803248125382438366748543112257627283829538866720689418452281890644599001633312962719029676309604756242893971551398985436043107045878833143987124282881367861051905628303523123340094979699900889590157279791634969090017064241405619809392313579116096275261880344097098169508131783317720714306862247619022230445678518208813089418192506495565541320342701211453658467309016969627147701478505486735906966842035894682317596803028180648151639863149128716400316922032536427884814177578788799008449800793035946322625243956896743480394821229885002866761115524981911385377261924330518886251080340507185504497413474131409679719004558745278896887690637550764472285633086216652459713638149398174057173580146598919634424640036014679067449585248858348402579922740280619844467378434341610724711853405601713737542410817565168380219050679388876822834390325725701571490215502170841790022410589116502951230737541392323653547629323567708007133074771271960661808493482701876209897971420130762258664323435335112751101193262541331490723820161089333456131271176933206089402175658435459306497562316706904950844946093109551594874467428110908806822261071634422614689769512971805449864996320014939101806605683058777863942257049066766569614098975104040276269439221404552815334358318011350554787556364083146621540225028310970498153906664054136499382517152445787557016614750704291491857445403293047064673650906315256061899570638334624513827776493302162701945925063223476906677997402904193256734112381086419161116549222150026383377427834272160114036091211259415868252069004777757882161989900524301697014113251788065528136072560321702956790114554462541323005735294055679146363361157684824113877428119894580080530723075159381880288522759662508708076816892897185767115074107471097536872566135651437707619590248410902104494347368997732114634852871986337217160563027425567486268697586270797809341137151118806991314651946666643487763458889806775848847151941641738881448566383859700809418426480325918652851775424404160434683912462081302651580357651804518363538943262426360571459413717343623490325449403889216110552600847311118914614125309689699039825050319641673108341372163824876464069289195794981793778181106127765589348484182158140353709437580159273465683345593919766316226555494176298429127143731849118141771584256072310455703266715548313883587214005240763446137493339155294078159380322294179518418545998296617911568358116537859375212881240513052798739246986974225019599703523247291346213985967727450746114154206830857818739287992407663703728869805152954364448894451051906521018990450377386975278909746608141258728208368934973022450020045468815033513058303420025869481100762748303058397549208754340277822825796887363079290880013261762019342907677298291496203394737541989152454868520351158496099932231124052678578659197889049630789946727618420306686826971182843621114222680865192029928460267394171213599199612472293270633072509446595470010631464441178194141067415665473212013677644774580464339050496486643513808255087454739528440184656803210140931999052705140837893456044318234104674423759946519281241380681589715122816839980802622958727729973413699547524528119226254482466831353338761781477949137649275842682052433233213195358726149909949851893194729875789170425471988770302088469371198262989055994122594240126699272010817630336433819275750362674982770036125605931270358727717540658865360796308481774119326378526734603177862699220507526314861526193491605378797093099705761341528320190212760510561680696503842319426857035201426098812911875198948940490833763250966175832039003660643537230187957970148594549748411745343786687491003872319727849738273451395898316917085682274566306581201181898525373169501196687019873893475191524948714944630161574759344835861718239279166747775645890208292863521202334743469089454797709341174900350781115826382349975317635090249259771772987222450827088977996602700778878628659486605822403191913318437024850402289748041304201905303976160208754233584303827095730217858202423733285473520600711202856899141784788738032539294194942390615852610754651928705224617155538156525028996233441123902761658889152837169638687074123911052804610922377426794108155084242825472209607482760526576245509186449238187833456960155220726665312568788419639182146380778803454703170078865829627915791363675425522572889163691340173070696769805557255948965527564181207424802761546454783254124149090152405675000399383990198169536937469684508154361616626455917606526625564013583047887277023984330843944608595960633715374367608859903603530552736418418376395525380360936982966670188693202528135886291490846839120355118774191580594731655390236617709109191419508081597120180853926521945247421606831955147507890498435333019169549688299712383275038300408214199084419850415595890783388093620901092882655700156742677168909767177355463645998810383146190210195228213858493242819024932623462197187973578968622900306252920340249260398918252912113487693597254061926090135899697943605372908983570220466024026380279631428733429922155634054215447608870062108442724644088144855683401705919770543182801534763361348136485008743573047642004847757984826758030837191186474525303107781146762284904371116628266896558444843399331307875200970889674221331727873868811405459836711342444073013563798848785829132654027400307919519589877865461109872093471992522476393206859477915779703530916123538221821991104460659648264610893929281665536220400679778497807919455255507177753010458504411934989958487308323736502035493013799091979724858945383404416621372346569062705323471001467450246612411054527027431305201869868500048607518847567012170028584162573958432228908278090100244891578384450787141664819953610354839534362609414868406124175498439221418549354658893275572431948736128277582978709443748161015290255571708537199430656643936479603288635451315691073644027617678114575742371195568780131527729687536013558396144953266063309546772853852797943466112991096654988194835796713023155130822011487045367511502024981589168365281157555144605128349277529378118785360036517403820936144223951514992020059304977945929656693606396699703323068498374037410170993587491192962716223253882915526103924416451782536825902621797335136306361129933374035290662947406795336977148754347466872295102174071676392940226337198726976713069556383969546274486769286346666807466240002113582506695516515578495112145047444517620178571845025247468851516854853905271143091133495238428069620117971167879384505346692327061930048152808939475068572465499200315099459405659736795044067433595936144789833876508101776167769041790209838014564840544723337102647436549541177459812838099825694276353714807758234975334427242296678089847464344179437452733865078726295191102662686800335753276475578120808257403447290959731354335508323449987822990851145307535452827541834677089195852175667624498605133789287038795158237349222793695490816273940820956066126465468696653750740023345354708879409199472610453030677981082575179836293901533795548179830358505545511663893065456906998006295795695677252216613576826549293878872577555289460059904763812788957149476639386295175216319444687837080946872419956770612256239480786256793955338743404430796411076638894482205568700133506849123038665401168339166794465008684309393605845967629717092868418459401268063874614118857645767701455644720153312336448872211786225895169995835835462567903539009053094085897744931901840002984114642621706778640533460148546661478910225162122420305521746368933794758875520935100356335528903249055723955611231834747610755643804739352515200559158005654539057492404683835577106748645230071987863604162210731082229802695632758231077036118733061159177878579392559751706791479695221164408333123474997217515029762389732350478520819633100392733881149032363302000445493092094758397186915905446909589487545838099949746607016985942495021702532320842934797036536702339461960495260105926351670821729423009495401081268262349861567444064319930198447231871008916966048567944771984138409449426397311676722722697633209281510458647512537403845911121935839317832689608487381115107993177948638141713099551458316568986056707836332524796577945056281341695391877294435115549055784995644371587548491580318207432694147225412873695663768775884459400716021129414105204704512475171113281667046078023690970084657879734967114685381995904305446864166735222103961014772559545129371167944326961560832370100680393731056751037504685170238836894520473728079038070629828286622102027425922276606029195524306223979845276836552753663368126691712757957800355265908417817414898968004729003469227617414793099353961970173589245296941345610873535461282437681720678783042262898903365483800490113936030981295794680899147781514504803181120976349528066170265155048583819717619208128425488927089819716668195988226383319192070270112330924195857470413933796515685666522771533371598633286813824138718811750588195537038967297049424597160767796495690073940845335728229472394686450246584700661425980505221835092067115073016038671459079239179736957603774086300987436281652297535507270676356009145484551201928284815459186624707753221558446064521775456044674255430775730984777533995412125025864309012771338376114884397480043562838580046325271133538266105392455714830013795318907693498134454637657185168771888788975804206191769947214144232408160435472766453214658365716030565264319030373225583387728950824218296044158264901579215183785568305492614853557918851192917260501365933904611886418022830982988238418768846351106270550357387631910706535255615195712604155700770262493040851651722722405870588308379553567623226164796419610140121871969114449542594327959484837655447007618692066860360762964239437682789768426957417754325828667253909480807208745536844407901275062606064027488327566762051189610311966331865780670293151193739678915115970744334069729169487016965495057926108505128908324882846804940110631594396558646799801173501098229390342644702641888014489026750494634091155135796167465370408881662919544816411346121863846416318646580738682549602904328415588728083728784229579449836758817135611077804601036259366570448605917043159555773752700942948248575535687443208503748277825985286701629429596074914566462060950576060098286400906853014965399557575494288963131877509317866194547153021565265044045534212792041149675042943721471371451271925270687923769616769385487366536643155172128529224953796947373318203489599045603874740451485143617713503440796444879605726279955997684697152546062381043235055443750451905768141541797033907644770235040627893558418256993332803204022728709226137283374996485695366340864118404675163494205035196671562832660628572804166892404115487036937980018755212860234487545675360515517977763053503569773373480841422466261966401406369903438022433406980336599761015015003978322180946908986935848595506536745589948855088954097801619489800664563900029501849567512001093866925023677339255656910200629811216615902676224701659483330093406128568510516246233689866707487072038529003397454814062784363527251905096895169888490962723047642861914175876147906434397935616968941350589222718659624914636702733606234043503753708576369981714032028340113692149876485439044867907273963115703542360789160088631441669038744586448713605954773641114955783918416867453553899133044000477030591433253095425174373982359229853295739284426701440336433553278947480071600026573298338823674150665481264236359913901336175347098028269803112486384741613932782306373963142740390836315747092013722752346973351402012783467278074687748363110870609976965576566338992429294399877240291344343059305001398999174185324639980522449990454670122678659040289603309172258941724890390663346626568680019750767266153718340530819688259513780890501364338686839526556165328480145264141237242328212264280422598622355661308132695431733179644492114751298764528098324040290001298638038145370349611347587550596913331325016232652688512589542933207834156651368692371640376676641217026629038513306390458594096393448158831600656497047609128025264966795440139110320799270323131329558192503967338871562337315691492831121419703538146308469671063790550474557515998767491084175684160207074406778309003685874518566701339935476038752693243914216625293176684955087794535146136371987528402625461694952446555773650935666028862355434331464612253339832449606640999000183527244715832390930790155982614212829148250281424118763816845102169236877303658788703626199405913891327848075226118998540139184308631791900749296712622164593657253996713147169929138432631525592950309260838198614895983008336597992814326423901414747534129621300791176249223611103193280348402593192155119073343025548004030098561280712013636406694704969401124509643406441097866812965412895326921449969153031550078224784877760917589153037780038195527846166821342879996337829340934384118804935570749698237536587342242198103508444587101545181038561216683447300673705593272158136384675123245143659686587565062281952345710730812285625585360642272243229316709444103944752141722968767820427713196383164309393636282861014678048308017486513115625875349130821061912396860340654919587808879754632158080917543771329959959956335768974254991719162242586437477645878846209033922700312068790060511984606760219987936762175814034809615337367349933625100506480140217320290594182649650812723616275523822326751406663920232929182915197152275245700170606595344341484930809115441453577353449565687154502672829580056901407875578331666272456437548786712272749787458600152515855085102107233010875882830745342363461474763912510337460873077229712529282198934502029074386470438022815209912622593777058235459450724475224133799661994450428235566158258038924654235119376457079960091192971289367110680214375596070590756300393769567785018750778663506832308150935340457602029521345830358541432914585327736476548792874127263877439137098973622019709522536855948851664783634477272274597529577313098969212202351717143064518672052302829554913726944144508728092739562299533298127485696684508665276599636775424319986005821759631250257303326235290858239149710716422233375191080595318195394411721505558784912260682822270336952343607663405560366337174928148201651867831250278506751076629677458538854844690557254904559292731651600475768274692777490841278258705036032238000356001875212772097606657429673172800659944928232357001563157490621939037904573312320488234582340035196821619667621919382217714434972995218163806095153555856976017063304709568008750568441626329095289252680451351817859814348191210818883576611355836171705033411993826377685464224018925989442456072799045528202317037555283051030446349151997089641563533227028993906839647323890566256775767622749711105923559316733168363818737570689091173222959989203281547819268848956805342701077989056934071804592686521487724364576797681855489834226550643908878746080949826404832959288579024201476375221170533428998671594549775341279373955518025399719172045296834474903552698098347011943709507216710074337313610717574913572282612500981846011696405474696759759005577300295302479595800792063202324293320778272882972939227681375933483042153082917704692686864126310955435771361138786269017833894253652497046122443157507585561560506174105170361823532431972077529547997385811750144978333524829564204555236386253305992661851020123739969188755937971424223419243728283506682845653358427288739643568689056036571816419781162843946320565970186651031723394947950285187177305775703276839591733386517113846317963376512417467795433122036323538333706182431021336324188439727062835105885085235219204925490098044500520343058212568911200981084344394458075275554105597323150380113304989383572301131724166026056896934008016580848815831281941344731301507899989418458911490897699027448642774298697744474032470691110959249219871732699989080050875385962660537397238813677362947482282388701245855080059825277246920196309794650051033770890310286913655402553680709586949879546480624981472995485032499235519226651555337213611107331232462336089686184589602519413965225247681486897235304496327398243772377133600431372997014110609044854326344573172007710724215127816797742183972763011735550616255151736170913428984945806583722183315438183015748238825202098927337519563627724862084053013973606407173818348659109545335761366581579295677113802617459928362916068003613674045675920837768469079122748237358367769875588438054913807918152036685793714967074825174943022690329168990642597282648826638188089820053157256558607218846906335254129574713276091436002177855377422705920475064686581150969370450667495160323184980509773636559056590559729249442487503774340931058949561639698495297467169183343117685380257472265529368699230268289626932706398964500975429948053949329295591916878596425355748095754537934432819257201560373377523729882734266649809910545972915873929874941684169402250617914342542065574033685001058387909549532348335601418685528181733500288945835002780839893278397005122263361479194926658063482401805411240777260467419881334327535604318040608642490464685180463346734946400534225349196736154850412853116085437910024341456410984862484143281777166709819452912957527987690400816859981642623854111078268434404403154881188581952244313035904941559390511743377533671128317814554897417232697329265359317977947098631206470696426196350073588605849845394762524858000702021556182716266441372711129130557799021393921741345119132078190315691645211794320380410417636259412692561069292486671814530024640575622921792642264575385715363007525344335796102057624129181742999925270161394234812132784416133224276526227194208653566540875241861124451775352611434926350230704480657257686029577895284652434105419644506071319792602498284574984439850552432074271903624426461224795443774829606539791612632175969745396496422232084497119540619856134520369871517646316947508302578430601645388623336976390022269293937934377587503906897691678123827106407166612831339984189376031108183947049587086484884585721375188135375755896014118213503080932746200729429477051395401082447108826895778898619449139659281731876210584099901115021451662124628761225824270787777864525955012954846815664468388051402302504231031727109358761317371912757214979077683773204606695017083586017995880207543260994755714250406966749757595635145884539452376737719556689050330519141710002321172759024047446262689978365587724424692471031796467882310147202913971941999748905029453074035376244506012180953723281854832578786162525433655761837639767345253659169273135306217845463546812326637482645282280509138749939460741275392906784507089897623479745788142718475914672790961694032751127797622616435997621202136287366245238024198448439073499794209034031990531912606732244952148215809639977314252380939608566847850865775974861927429259604654434607618982487862554489738583884880758065651625543406689009629802843632436924627495899678191964871021948874687496558710657764008867709539193091951331631804052246053512517821577879728778833794567268391846579483649098041751210984324121355712284719576050711596216769731730577183480758712737534182129357315753736146771811782102099137047299202852893489486540105414471597041206280716108051236481914533783278671987946456001763191028550647676938392579400982041278028172069076661593745265782378870452015071202088015641349005263199882651298165026374115376483110875407687416870902574254961317916242738861261841902782232286038617945021783997320278852862467307774990687695656610575719872676359433031184830994118750929488732778687939930122165124077696037553355219729699986252131732459220706980310137050163089444182759318651633231970427457074363561645261972994140173502486844131470232978453526619995411080687534093151215996564038081865146895547474326550912443372047669036168129155294046096238420642553391733013627559097455749850492183680351261899752523966944825138107534793595230190268463975333161736775346952519187778583951162004018672734137816447653493223562998701294368565589625883628275815417779631376364437948967119805166684172522993631516278130168998087241618770928594936290129779253996110972052673248796813598906524666509395059293556968380670958708547571592387216092010822457007565044252119591975625844585576480899578673703764716741318064080117764916900963691869392644915625929040339749290769361975396616749875738765649144968194726731669906560872458499740379051588046368292857105997678174567701190972355839052697461656956258883036984522371942209324404043149352886102904964442223970269734710285117657948294840353898161881223072318145728403360775044011420257789463146549325634800240431636221952715249596405507651524902471008648402542480414060139842057568720063427710370978133036271880422283621188019539432877597476036409024028594674181035932390502795015343011838598120419240363208837716504540389735054773686909090757241316251216700702102473399846001579828958649129625127794703464990781532562178987331607388738014525730228116057776539098605137226496148002968960065039712677876272092211620566309344500250567985026253693593623480675934582897603980043872890202072605589945474418500285371549071384486806628699905209828885699817736196063345253799516583748336375075430089445215737483259308005335978743913303387254559722425529078478592341592231681470403013441495354268448261643697067806558917366479768428504601390777358303262697201889108805493093303154823924778838391595946018957028196864508794502657388038171582889817752896386824492824743658809191425755923398997450942025574793281547754033536892801436090965953838236420980959482466268077097657827355750990320571508571146948903012419034142918445305428667150715708069146742429664550540001009073063079075067904984121438550010074213286161998284777053705778011255340322254588864970347735437070500753298853461114769095385323419728604914402762661678008267600870477973992593598230099970258135740181372743471186632210724339029040827910749198461200024174576533941247708119862027682503580616290724685658827985728456419382722223713187302379816381705810553914168233511673884181693497950585608083571950281094947253546330852453357518357991466718424274475342213454460919387020575419622242544292956681341066886119477929865565784470236335564475287652870410557516136353095401206872082698499626973187821350197685269507399292347199485431480060453796098511782100809963416350213790956713839277050608905810135096281200430839412898682078590921953237408308128088764074371247788527965843598005380258955604859104513205167356697696192764094730781194876489950586550696144678870526558238935705883764003407792729837211385053558558954129794117491446474250352523568131954226495482214343426587076276656621484435669950441612510842551792342869232909564525375835390246351640138703071046682527865340095601384945217131754242841558732335825140010868396655277935116467141734488966328011844479516635804625540154979241196294610602566323467721823053729185507713841976956188276407745023656422573705863797127001092747719743828443418472479588552603229935862183765330232852912980666310856885508914178253676910878513471433548352393215347551432710858120573276919455956462138734242710037757790221779565960220725506894846442068233276196677006868787304481299005179826583764553177228867084515286329903705641647324409768103500941398054985680069086738520088031367918525185041254143301678428198568492640111468738647988017328310942138393141306449982490800017544686986015786741009313987845667544743150937143998748576639170375097693725464969956276020116808442200401312040737866006312907552206345493607846223835024096721931985730957748233695891737983601951211340369935162800180098450748692024539948823465883974857736229945292078246968104778757419257699612714588185876206852592950398103468517897883438802844005189024020564077726388398322901692342238379300785310506259227558605770868428763834932751431093727616455243240423315332677767604407573416040927423872184491209436468574331377166659790934485102292598180522618628351409945654147394887481792209151990057295317299292705608560818821940236388505788819150485839528980919706750538056167605548496905101752431411781603414886657984885797799088064625074798586315232684633449025278008693397077184874881437595984308118698339969270106309043871679244602213862147478265851131600232859560350122850324573906151591763285642132384229017901202784390227734175096498208335197086236285847131950903568314136180655452234723767500376356294034679410881929407991406367228799137735921968413770391268361931657158694859223989740428166522657631795080793672984561687357668033598907752873022986073057045829565419846047529427798733846125410853511146826031617065146895219491008039856394500767962024710180415609133094262754989986280977523552570210752862882795468861098902212833831975212464766383776686779413284934010108912104338426368186794360158479032741231887322438933753885575474527043195844091722130982770005459113439223454679247086466893689660462216845466991331023141675822009568652160083662516026735884659381109954504438321833754937753626522840231802926412585970662672097178178890048692979315397152030548519996445357176994708172124231676614298705271705605997205681612170499553032247356059347169252892012980574276653984826953737488905349781008187481708475044780036074592102160572880357789605556307760015940869550280298127671457762916004058152095491489067065484422765812958513691205451813401333579960829075735354153963191690054677530526673412401681237418067877527474854584965527327950032969859106914372010281804033957570951938581291855979079192264335588794176835263433017427995170972889800620472152008662366513558220851158161162861187105239170629765988317945923706906616568813832955146303627885543176060744823946478518452523258244640311896910768900809245172930083693673785822855790825806001580931078672139013020360204346617201560835742234905455995988749225363391915181934150654868559924361934870889499448034051599475404796504444772529997423786120046573090348863391491030031624904293748419888290365897440307166259642217287246505126729844738518412016569399379068894857094438854050457934402820297772647301474661485850372104240281193919741840219904215316454938099757074995999326673280736929452657339882095180594788460125361255777270761692904331036898919848775959535660659804393681745794452394105180776957662642848722904976516255703296194464469065712180221537704964571640841705945507922480397906575837361722402024944403798506041961528470696118412435055714190940391515930006603032654765001047093713955829552723633862624027723577371524659583424248889555639089869147490383118462840454771510825421658011636741649352800635659811109555199141125598763227694278480076869699608608948142476510125757760137991071714435317299745294457495402017416997845634566574399177603492573422997405197790420861183413157598011363065015510416218897077442286012769899720659465627586229757907956192134483911511303168539338197831407538091153885617632668273152750847726636256108510853576397032209026466984726740690127547163738225406966885466055683815114825033606333528799667201780258892591237673667905677427844039902229551459268368336704091329274612953758261154009967482601261385762222654435214478499703561651124261620200456436172478654825295488832330430378577466457116289257779539917047118617097426522552454678009862586380520239909414616777559456116607783173899723929239573170817150876789097622664285003408448522224429610840051520180875235067181092246624184792978887158077453401033197726809607237531753190309572664934808776286095442339084947438295439235091047245510413511472869766237497418508930554414999372680565137996609344285097585556771635654676439954694384460559523482320712196289637079897833906222635373275572798115208800627960121547071707081363158206741923043516352766160907347831210632229791584057413214843678633468437144911101249949391508511604879630769042874927529666553881425582689922958787604340748510363781846700199264187309483974430166988082786892168222056690346752712459179861565609228796067707655584362130608677113022419249933743847573391005129600310693345301493725068283829039817335006582763441250788782530005283341658105560098176613170803704862744544242519624389216729218535005010636085690769292410958901945913120023111610910594993925300754942389747053280953359026779258560472325793835113061344747737435500880810132931061878034819759365589645291132870567189967795326417114446576663873518451600788882174831834700876944495682471238037952364240836544519390409608702695294334217102433212222087976951428040564394002952867727406112942476539951523307173248342558857331058562435331543057720079328730372528769421458792332247288311698131264674551870093692865655621928393940603713037474070227632367374516914792989243436786091640856286417453370750449208041746609331633373154063338514079351869104908842441384254659762260873008453864621361160497758186862461057918465718091600354202727006019623822984501243006635139934531468340104822552284497370412780690928546463794317266690056089963065783058901770187351165513171453895497510483423707350397349638371091929117584769058677981199900031949724320828512522472382902398386754096044668702596910881727360032023298697385265038931987534701886764911490575502459591123275961284222599552820817532337202354552339113289925443324667097492249769200879705123001810073931370102200953260189797362236082184701785085525337614302024461538990101032742938441552487314603888742341236893582007784854181279638051475140054574381430038870847161386325195875741351633256209860292894664656146095404261485592113518656118170119602404905560940943977197569565559407894811615888648708004978153961365699741496568949001291260047687436567173819458451540184657414006292150558339273535824464673068027021739932272338179678007676563525702669407547463316343134395545732828970450196106757798148963001335980228257298593269480901831002659589678507076818687940516764091116633637367639575778513791180086243365724858464188290888042643386335584095125440687762442549784157935097471432635816555595148149879319818779626878843019269927415524916343081630370134947860412031889418923026022710349114352352313950980466203262535353710141947659610071143381633964297985123163010420215430441652744830367637811858774085463464446464758387709994605334943253863593587826952293362680102745598587834032370479420670001592610603409809839221852605205719796270185378947628622335939759042127682909634130198599839347420898893915296052855971517517121712318733077194155052202787614302879922922593977174055405051370458613527868003779265527226961750661728066962598473966824443713961336472331266803531820745479412484519913362780434957974852830651992167962564123560152155159308906439984493022623361252121508298522203228339451701390712813793887627071994559348169884964374488239226486269227760028801538889410192408557182662673625083433416701225864065013698209514001665512544101453938602405685611959489099106440667300704170491904124726232797216530881971530179100363421034653827431798980713560819580012775114832450762792660093928797294193474360853777997173927831089409091450357416349793590372466669962520488678630895774215375535970587339979511632606695829536279842942489357664310052088582225880788548373437210186131694941939906459747226420014517031418083949107675884872642606125093667891583870325883904854297181527460518443069155988066543568394580337546459711957766012894768682945016000447975254763420596672361379551067341002251001076207628665436582431132056199528776029488548374569293467675765691393923526539210521121351955947641839485825278048409190244831340172510481881506733669782108917115851541631707607014722897398632833510549004042927013910956829963288628961538144087668039391862926745752534752378559149233850293879501172053410691723873451285609878693985068777952587893672119055466374571308317221422531432706159921817973995602743768791093261812475435636971456096730120051433467740202192617734318398604993224719749326167136578443878666860584828049022871296248319150063259833085796936519124114779668816724378314421346150844653764662209211872329313571206737977322853874665720652662658805606010891532576855105680325860389768792013643387825806635358727322906699072274831530707620778504843009432372388300716620694294840409211912583868557075224109502539885558419768888945319785231316851936254238687434243481689946365320059304620992682738693525471947400699040875855202703256887491522805010082192855946868408896649452548815129336781817141947824313967817512710664918995335760210793491116251819904093143861210150222247626488435785141763182175209958362365299523312924754529509019456449565995374356024784461160268935632164429171826943986034515008374991274787827986862001128358224335007209840572363303879277726618987406752367376437174324284074446691356074601352060800967865991627168408555773071878656446303494812688148939162561474179590333207377998531259877152443954587065684223778756179175964387597995484127971102574755272289776148748524332433605865589922378589325712460586076926764576330394362657653122280929307359671952096497049124223838668204510738753030848662946433141841437125668426730745409896520536918793104836088306762176499921161739192157710340777693014545688804912190331342398437523772543684490706880332343555555086250233030163965101772489932868255662811644760192113000941167693102995846545428317776917894396909464555840891808750297673014421537107353253140305728980924599542282335243260285375620250617910634421396447364565267649485821640572613216948670634396054171238433334033244915904053336893885103837798576557933750245229920535201920858452534500263022044085758706380613503550573831518574061444425890641806190487260619050578160196201513822589998212066663682778999114946899476441154908456901748941374221728237779306170730550937989290024208716329030547869258258173661143876955391699355992792762741715787797846073015216693628389097521709287080180557911736726614489331692755063539275886904991246291900867344382949980861930712576079057231300183640912010936787505960077211790008115403074598846270964923069335054322874471985151111935580847605817317826971791476232071051021178333531570272508690508497611231309509843710875445765182324653776972975766644638608878598551894012652327205139776814072515130593462448102042196673242460206654929473120254378255516541384044464453764097432141264213978437515054362247150537176236860575041557073757919578309501361559260550379274144296649947300798237886626462573920950473194196657588781821619973535719630394081936425159206625265651410903268645578269496437175148029339336650592761866503412255816704923906510367031197627515927170066336720355743895198967203998329648210925304683062207275259744181961164944239920047577140948973675160393090404726197037235181149448515740388673324910358443613026139963156121253594341068291329840902800978522211688033647127460507894707204390029554812946430245629844365225709812340405290224897737370125634571159258076207344283893313589163292315902671261253368171332819725417463936654191076213629654577150927867243849697397949762469192067949132853381801794547889561159216555644744051875017436443203987197499522512392644919066484162135322847636744573122899669368306319058889973400680127269035739536109086944018230346440340940301012917598821111849913076984630822506166694431669598968828220893377867397299148452138188360972762131652575703756157463693029659772436621101471782278201821496581010964143904051814470697547181723238362335918673695669842030580333003477587866306995170720786446007089953679473840773899304683763229282604050330350052631931423694471422371104159459323457810859933478510809319673325617596630000180272370841539925349168624441891467027650319585585318574113374585088303591714167869464155275325674870849265180045556202386051685893628618216678218374325991096021771522600624911282892305024053743047528879195683539290611241350442509394794409293377867607492510307202805718450583584020074071615115834115499024286782766624923440067770680650800406563786549210905691290042973752511355174274052032064573941645053750791305204617230861951044380401261466966051537689723989153651318371552310050565616224739551659125100070470604667957121641454863006071609676593554416162678147803914013195891870870968172044995907915924239002995216866242991193292916689829798525051469185829155911477731101471839271040989189508263471903862021663125058499261745749999246359273981467568340416164181651267051848895029615535835163792435442107912864969673342588964018735806320891119998359470321196275663958496960685197689294955872061282764420006151700039322681564644874917769183055810593760810564310066674207270076131224294713440629244633507648994416737713526242953038997991035345220169505652608966933576304865405930344134857817770249669403661017708065162109550224163611147686457465008758282458171884608121611433737451822659268413629100524113380774650026085506501725919230389983468780542753443797092264942385002682518661033957382037611846069986843947220805267059924555207700884439638874562944571449179162576031773987317262816101853674184797973312868695848064842630694247844618796329873600417539939907327931959866533041825769615151430799246891988311895922464595669533296744711175459953992858515405771046777036439077043360954265229466321862202845546046613998900748167841706584425773231906247488717899820378463090729735488481695860071491787311048156200227881667654041025908056094096322187550967854334176929004379113239502933573815377175821804936059810971537665118088525851323227185525278302879358614151476325956133323222904144279002008345125010809668153185065807506519820948266699834623682337675995626189006704922400719775812872998244994859545196887978927626370687313269122626231982664490670101948955294201889528192369221724797618018301990899137494572842021506551336298398455084906788253709787536865468824536182556877940586067795758031887710345971040566075633262629986596426220063705727357974291130415299074513362231185776035733600221662206578011055046493485243504595617086608092282791331102698741639119072492378802047021971826333548011216114557714873138626244249797871860747566083001517639267148815296444984141959358437622264749206617763936553318576518148261634601151204641641814183108544229296247014990325893763070175932492166784312049193699880591558961203164647487259780852895040728561175238162766023462166933692322142065940352367329149003414684903188036449024366174759000042625116210823478517516387617422499351341925395248543189688600515866637055580990987665544422594846628188136326315995814487855768663538535945195078123480073595789261644283352142503036606247804177420823450192909902230086583959032300575078618503695537774110232738516617578303391934333596200664391138282955820668488495086318916768758355476262623652497416699062597802160461319170512076713258448348105467388665508560646143669133332189852601018528756989089764194558790102188161584800355505544591440586647300014149733409134636179585404623643860961973691777628875363240761073021718533003572566008702177135033626668252244583780827792969444657242072059289029129587266253540930155775389551382064460851564910529399604093021757402617017254760664666442008843264415631291123803777679553776126436067938392543513011075591159642346814815838596086709903945002131536944831507704485248018511059031498733175403043588217062073149877326391322036576253525023312216613933952770196824496443502541519247121507924515950856680111752184589254025661359457758812501550040216502301563402344444696499740326446638311557066847017608634501891132611834973277569738682227966467246265130208192333927651430422781079169005214031408014413080363850397031341011348281718391435834966825101219513729942044661508251345038473073062350122428616141603814172200010772659892332771058600185151233574074873313351873317798318695458922896621981281181040571987246784290741779169236518624120275135959419879746160606180303083306376881919413504382274733348283051940577636384578288988986150157827635117019621939878103421349397197793159442755057231481360658438054052015726259630032709601759417101282364184958552989383073315912035154548347134653218609794748912035124934902666750719214513079262891275150195872866626748308901355542011445163617290070520600026123664888236515188657860286258308095088373084565661089752871903910651500869247258861162567168126601080215054667822138013154056968180842668461974639101388735765609272296751079006249350834473105078650174332442901729237926059745211830718740735935762354819909417438484483226512024657817867384779670428243667197534981076486062655620874280503648282497101526801747644238030605019930510668034394290223788044036845589912874328887171792831807992767501238651555502818552933541476053394610641501103133064277525520497042234575259216508076864242722129644423036914240907109608256166011919734875002652131288640646689260331358732337262212802639451457198597851365867828489723382121502553795283697126242522836106465023830252952114238916584079550311242085278342257655314027264248094744966912962100147590537600651609940136973603357909071623981905799331348806951045037216154997006820343487290368287749334903970303919454208100950175764847100081257495278798335198720881168810555081551945909269571841067382084363892488984885614287431322302807186565633741517315912369208887585705260140824664523712621314585866711384710398290195075116591084855794249744096476183127873525051269702840715921137925153241667064280856453813634808317236172028794609634373985994099188403711605837734727558730778565669976774668413016088019191922149362058021263513459315064920859342783661197810882178751769257915873788356942722361032064751572589010692325257237751333670128446793325999627668302423141640974455834412569992755655513617495067116969579583832268108290391417028824793517038165622546935212672881691428992199002861799689595790975873486833825062824342727318087891773623287504444556330063372839775570023213126812900825802994628801773735121994997221188697823592110245842540302801990698123655550551418974859452177683984970551906715906039137920997391909143347873337508475602204271691116185255750163512332929536723460796941782797253443742783520248231469924997498552123293282927364178140055177282052026820156375788565955149565397414825956902976264524239092781173962798530518724246591575897459790088000586041532184130131954938389389816062714804262755551737179076713866207271619645212604872514225680372484248969597762715012659240538273202441538587895967766709192882291098450194218261359300609972250984982423296884881592616663933013338726635817096257166819688119992171477232126840314684429757216454572055526307375419222453487270975200900443779242336173548479539465742142160534845393996569886353581116260567377658758091571768590547997085259345250568323192499088993948147573980711169924365721147444367076670517499559693974921030818385076323464522331121918820131517122563476241847958518169484603657906902355473247373331719483991177687565842854920340674106135536645699943737567365607751426588791223829348185122413489992811564913193026868905638047193412081110805629765232612672045184486839273136390850914679841960412458342078806462222463271978047302601547695715286988635704812408624840698318094170909454482561222189017528467994553824675089461003912598968570903676821172212879423134974155853196959483039357998136948824976274874295018524376702636333027248660135174460597868825967237728411199499498566942184241238025570820368830246783495726335082051934223445616038444705044629675755274227355466792391977060149899317069505225423169557763042183072198428653295794735535447809296347559988030988652603874383275867045302146230270259887429733998606093255443226357219582354145261743018725655439091191743486034443728077982331035227981861379956695383622152151275056491262856246093148017318180060564889041017527837348009502803175361304537065788564902149779439305509846286311219449557794919232228323928950347079480133728258644096226017504167677417815839140915484801711491403073922941552180488921730098811256562332164316612939063460604205829363949810467184772198932766534389163743310530519411559956565966658280147428199928610890238980911318251455998918211591540963892085770021275758955283768411027205241276852095575785266512215128070192145560295809927598308720064841098850020138227323991359045036441442620538151528028379665937917269259739236411412164055907235474958617968706004293373028282917548630840034779692455407594983613366286820537012054614186608738352801982109725489187640076463471906507112181120024332095357172352546357580984285202557332527622978393115762016463189908361028942386639167099080623345561446702318359885020215634518343686031926252739866002145770692764492639217766073403353173392055499691808862639176666343251810116818145468625744409012129335781096974074351834004756160640429626093540001432876187895114145345564050896370463842711595596265326546820281545109724797356850210979459644557555734324434411186353104505918538218022856757542205861092509522897316916079520695349067529773010291514865349665804475070907156406134697352318908047663181734136658323455391821935858800638204468983277469277892108531557222282878936761266269028980028186202348229765444703906585180050298468372580689160322333674333561591635242719641549721934894223255167564233718206459893482486948144910352470050480743983591949184967225540391079531445581738571120845009891747207979937337402595820456459933111557823944336684954712331096259957621821659010801305803257868026980145566343964923598818900775908458264176599679742317607076076701485929187643977121591724343386178933297690086814741593009711703872672979901925919687717532994904130321609110929334652300734930462233159827869250376548880967701693865807721452043350782994659295336358840326575805113583175812470804243431353351967308862508206825744962248092923837447632687383762148413716204967541217751853207355951891717234469395909393468466791738078549105236144622950494978432783902482963791767610022804731562276902452594493811883729046866734659444468968096291528803115895291407292275985163525070105444029564489847728129706668324936217833162570821505108980278350358186538210742586208817732366014406570815104909190832697546932305467581992760712470100542616634859044609436982046652076148353805407590480046584961586294311936087271583864261670477637311200724449440797476494334522436464924972635577948427399000872316174462426108029282264295358096939797097029934737531249817372963227503681450086181524157339385407064122054707121578400735442338675857493560963408026780876376884653467592555248853594746700809766905237148701762543278455275117793060802138665565282470482137212704941228948669609220120622374032263228513273790921163027872959295725610232506028772334525347696898502969116802943650510250942287844380094631259903484047994631445465960679206585425809710513693908763759794615118667195137302217137002551867137350090817918217832463868263747096262664670554247204466854318866944657082655074483349623629156998200203013973981548560433711607495778955756504731329256794411479566372694282838201391153213436012043928155941112813930484102910244914515771989795360926285588234696801407589721159862949739593155232424624116233768396403639028918586874836096175779213055985677791869675311164675255295482774621591385837837794313612424460382176654187520909441147626990756950944407684375099708275327402892186423125349508256679103984742432589832167746222462164687735357457856915265104836379182844380778942497089242360189232955656396854528505896414895982737604730824016217654349810066646764758423252664917355907627092181634114830465398544827863970947612118666300003466066356365141696241087945156433904909498465584722370696764088830826174038724723297024376316640560371407528416007057449484765335345763585131934792648337690598029278854265982834494318522742309744566250132444873912445774471499039817192459563136428707483538210719517421168728885676597235306318907786026605815663094640985521975798144246163704102508872599089148601761114235504739722520964735210251826020546276442248175319266867364459883212043153955837192197039255912005042748381675838366307763561160412063699654226449812487289908515477412540439473332702639650601294472687791880361557189672506042420242291061267152442291876354577416940596685122032784213469467976435911508492970012123391991722992332298743496849085531297043634167273344812466422513688857021563671838726259203499350977640832848154441138395026892537175753453391190712410583539872318745545827095808550585759451336664226324834774168075894523446071815536916331434312010355442351878195417391573731679048098064702888597583743441684362781265077575774664920216189207665912055650207897192460079516968239864145437720443213463420424737450996809026827574825637476328667959966935527307092838629366255507874546223683103818242004074502111524005767036169753358154919658430457947607482621408610347339830042380050334864344636149565015428514708703862233457663035717227973880443003326233658739718732297696235573145227472389268478874459618014486128859101620654369156213423830331489482655992971374675637397125213238505528111806550378512217879857773967993969709474307532481198243951125421819576718570331918983262154627074471798400633049346344597646541797065151157076217723947885970073963808184148519441397826508911867123960298898082108106609878784644979189319516344098793149441820720122850281964426246533893105227545578332891956438681831230106195170156625982967795213427470380013676576469933406299171024026433839584517895898788392353692211853995762260908987367353804711367320296326752435967715215434280349806130099313287894411825297786987683486558308581294774850374744531544737399978121846113225673045972409743915517209298187747365365382621701663591455253540311756256616013824629517694959667367782531157146955464141177209226131486333421463689020652434578762205038594312716449263852235972116719971021356644602941643586080775407260092904057302391659250617338621893074713244015563934724740899633888382812477958787896443813604761367660234480135827178689354821226639244532522926193899131046005301477430772425076788870590021357164837441458134494106154766050908422141433412542119759548337662228630399557101823078026704214077354298583210447119713880849472316113053723608900419751015777026484006721633864313025217728386383913397933808538554976633406618034217601940394506349260560282610958381954319170409014116886021752858361312680917695685684570190966368270220143904051455088735188117728019472324511618193891146175797672524259425495454805614197334576782859794098727931780995585910756977774945358787235543559125906152110598974218285748759500229734543380038767394492914398764978553536996276460448518505638070472806216679195400188109940849197115495647880004355049347294615783780393911359599415391281199941785945353029513967710499320735410494553613524642217506766316320952966950328889393590732679604920758286083510853899840912705862032501860101676627441681048904671391558877611031699611260354671041015499133414085761221998567206781725514329558063218336764721269126737556588085562421841310582753056637509214920316151198818071191248786312870962480382112590449162024425185073928084181773003964216184649523772675564019403818593018127063790815647195821306462350015267791374398035172553152752860749779759283760641598281923647524313475741664948258560964073077818373773097586986912320051345843309840801893930308504973896841710211705399862454120334386360766502064622672529047344620486910786079325919090136563052906933354471803891788523077585016878115958163326969534517510212253141893824209849042040173784606659173930748200375667875149027600872548184727605296650180286400637371987858340400200825077118530365382824122718415508643011281069511756023220588979029897763434728273502987798875537946899460626995761243715284602946735722782413283388907439990922555209199984476960028871659372233221008356130557473210914137494513773275083689570242258792661260220554445307251018750000810712604684659231955581439593348465178735115058489305872587274827286432510049766116478210541143402461141265998202207760963281634724150441804564927520642703493100192757172197423560667209098535977043507543379915221523513562770142693502687070272457326479717777394247238971184295616837426301725374872403680641041591974970847222736651894822654903420859887072747711365321419448939188898192288135942166828996607291405433712174535373570984021283388967777403415361417122719912726884113179969629528038342365274366835657100344099178564265067853262544674130011763152049644370409343003348192731670820052466704088533593722199287658659276633562391846702723605518282726994630829432174339839984173636828291214478951228351858073294461553725992602302518397551036670569604133919592221628715254641376511709568361198875832926847193704600604294663944345371601393044845455239969924827160639421246273512568232356214240459811511828134530278885421491686761596933333086125544139053195410601757340742051673723642043700966646182314133182101273105589403198963351989839059026748236209504125427656120710449968250001722310093618243030194922791893978491029503944683776605064576234557095122076654474348308752917023033458332571976504375141654600326465330199582745250406013455753749073172160854455844341036457902979993376806954764437188976340783737456519291685780986280346845650502746247135882006976464460981109067687217386634975966923689382180857974006861242467161410828248235251598522715166328002273395090459735441433899997293406049334958257899291577556460339451319618908969722361983611037761189026830730594893530478150806377510643798365199456492491253922877391883904727098176573478880104574734274087543716236763270622592835299128820026726412845517339359038866732304473768000251108892368366183467002654754684139091797421330779623841705191720452310547267302314590865540534388766238106854883585946378599850721239901975763748680104476669461267944151548588118957671584683279461006297382577106014321186789857703844183771599348478465199920135839856764224307741476682794258821881819038709674386954264543388052265855719691537584454623607650495111236652147514931939205077758402813988805876770145973235999415758727956794422502626516688708357317615930839051477210821106123636079769118531905116586956796181881623677725228273998684395620440469945118602260762502882892049708867556063373447761048929184893140013440739961841985385546966581081196604418334019842466529517005809974839058175476917979071714897611961581013138421067981900562404423391837771284333946140409692021216764822132546684700622749264829617560265555575847958901097373715536742867188133770241315247865167647559292440813268621599480968546049753997859762586720116819970836826700776209115494847243347468700880153686101155138428704120331824245789996521727299269421618203650011109320663901858898656835454393545842934020863686544965642863792668909936741256190515985336404502126389542469610091865705957944245248537908482942002897826424820378079543103121040197542166039413592007434901900125952107085316251461473604946780718646106497077660293307455487504798347238434728191578798044034097011876043501355591252854428946025506086785700583519276382279518077575486853204063706149225236887053144080859915975605766016569079492922773898487014540630727832659069355395482065090939575092339088921764946241957364082691976920102560518194522104823200197151301414473103100949531580079953645386338319002277320912164916042674393290650781861605893925967431030942536940358883112367690813196239454330681396712794326981506590139556253747766745985437814389985629053197640108124561343320315456407566714050340266597052111055983261342177001003025125111117418146555539326330342073081886085913844145769564080300371990852998626031177042793520394439829939063751500949957979819902344920492053119362197469536493633352683104986033992778172011092167589841283585039422324656562680437817019622173749345806069295215799551195503595018754060407807272476159197003344992776730684054339618281390880729444349266313306079257028945755560276117551746639706212622467925899355960641683737051834754374027298795943555039062399892312415556955246669924711504647207818622264959329321325240709810437680088973300146864218322408445035041623284248568972508292418648941637272319707187384424169032241496233760690670618480226836992400627004223512249218724165889245450589840382656565761208797080187237745552843049756486700965718407350114990358656487194735451154906954396785170759170472104658384630407914115434795648314904025968697435718092328365354108895202973229979538650195826566179362109011016227934901124604457938407147998356742265404558745840700544935465921188137192580408383160766703569179346804608514252091896867737741435824109627686304816831102259675268700811479823700467335048384864289091505762943520349514006101262761885553785980244039001256449793208710219224061680318748330577221511858611786658665804932121190474120489156059217198157815810373996684307035785953620300179513414395351929535216548128090464450672811572168695577332129616365475667348327057981096045675388173050349246353392472130089293929730342933539408224213771010868917595682347101924536835744988354175869616529408497193926849732953771717481179788626725883957945804725875496721546070624424005897497347208845838003941344904229684310450304071461930363952318088341371440291287772019548723256131199178189895452560483558357035675589771375761530071816290358087010403632999081862668893442964476091206385832054528585883198146224312460379355357260354099248950719179897709828740692663502351404257906383834132399986705958130453646383940754141559661363534232771546949297308749423989354601616101171174881598250667085422698774759795079124187064482916572403218917482903327791388255618441583420587422166713541766984601927762785683568514258605469890307520455077570631601229709409990569827754989919789466202298138348312914996332172997983641405517820061000076031644094498574569667949103913359216988687538463897553689661086118083315397666982365787941189803171337514026347822850061841560338126294697884002407060847202649057719206657591008480648407652405605282383060440280681271204120518699407729847619182184000254536743434395506088791584557614648817427746758985456839862919689821458322109501817173615631323705408802530253797404207448561214563446211346957050300089480881489276414260293866121680642126108761427918559389853981008021566808852991699026625239199303266062094005515864552837536310336506436107922137619610864245146892074455751050114641893236079972815000631485161864510626732874042851812047738835715416974784443811638134971418325331483817291162749099976198715941740560125607420306273049658738740152907552093280924456955697431602256121362161227011432414586378681167804749462289283044743284890300897166746840619836783687366034950383258849363961555237182160471712529603300749020402281698516441419067898480948847010908905294795078296815699081929214887148754402844530224965650477488047224920485559562031380198571370730022577829765703130420121710784826616586540366200153284067982974452351950788732289657796501830416762812426607451549914006560096112680284152318750942820326934640733838429474981408488183797023565091371296522074557145678142115769805946069607044629438686028069018650815190328046880585213843091580976167290284316523961744829610159827712395086056993398759432940593511250632455217442923536352895144491064306585288837014195577613523488296227217114421954594214564374340171229785749825246265302685903793142521159883808051547618163443817529226263328006077329761257862408044243675098038533034698512561654374349320502033600533198637266507722102415556623360551806307357141147114022059819906521566082844782747095045392554454925594916570754433972180691892813416399583752793634593991508623902070874392028083872601769927695172784274663522866093692807687058051175933978270708822156452754857488458325651127303572955558899136320536500852728590030389152729159223817735194872046979831486308795993339936965436159301060435511512160760908064617273927872688321111350396934004625419351580449868394664891753466127571264070878451103904298530989994477698304207507831128816064647287588563368515561872389732565860128288442278613420837947605215092846755233386451447308978187295116805525689972870993391363936023511843070552513735170917523185136892376684395188649198630404758473324908483639915374431521010884346441486211790746500418744173670189186781932313805363055387334508962024873483349115535176009514082719204575027188993944946295567278375948245723499758063229734617500961633766806310498028941076116805924810053831454129200478658858688758221222078630172633606949612750801657765421921567519445128365388102458758568664540350503825551635108581468225364328670130579210044933185783719348804434380016042722374808596924838613548530827879392630858251429333548373700687208905298164757764689315196651197601710542796673508985941610564267954945252383533687962415137978696963800399310422427069676036533626683612569501993848442432939513130067344264830417096113164242477863589078116326474712471407143657686594359171269493056858641400155529785383856445155173804381857821643761491545972569702738050765331955880742752640239203917802700348432198110917212076046715303210756187489919121698975895946982734948886189356286491030769548787495234110727004231281659082439767138581445257449157651405161242414924509768714667745575125431507635075074331512436930565150042478876244192537604552952812340602203269314907226137511957059081503057258167073713168290276645772392549449469852114152858585048696584815578775831263809913521586686077603151182649484604923509417557435893294794014410818686146220705207906428365055978273788321692604461653331470301710316211119835161146243440361568864862566342305218910622847550449063411459805991106294311981799894843995003133491529413428676123185365917271521330435268126391864304789499198173434667758532047603703944124075084905102455742776754560678832765105794312994901975516540651195712909397231543470780670284497293399319762447585973078800807356135782378985757842173877208075348796107622963785901452790504761015608656082522280028014397114013452062416484007963398177723890939477118920767029985369771308365077733044823284873602343233120194155509214146733888008975886554818775037189181657942379851401181791890441038499720642195294510550409741705912396147248007508074599478685573922858525796316164815249527066526427416274757984338787198306280526538806585602876548763083980227326516893729706920129330254837129640585574639984355434500187186115636411953293606937188930991712694749577214825920120677021915583372842924764638143992993640018505481390997892979229044108945706149405864701610605094458776513794591901451853174354951496071780441249189867497833896522126538020849739510422902525765260361439545550299555060709403785460040428021602758074510265122885130776424850935027337351497779730679624334191555204156174571196237954002577529591440638026732452891344228564984202862805380161568692034953303403966864390936316216497696922893972806216576764953306170800314018534264657174887994212556922704459630834962609092925027270909884670509387902590993955143181410276848294242148267810137180861631399448774384913625899333869105738588890927459586804001665421498092384046046367623124411194497090810746244755690184450251715003657027247345057575472877109345341842222709568045078751074250675855611130227070602004741301738079995728954995319978019326798064464125480341607373424903490923484746442107285217201021971424888692556455267637840959669717437810278084684437831214617669805171017016440678229222982690342516998191802881297129330569072986142793168917091675097723176112968460398720365882449945078258803388603915327043524047055011666356378143615777252855900777487550210688367017521267722615207123075796304617501769046653593732962896116137408330524563455718399780935727245514051543713127169031205955312952409593698773557219699961890649675425333802418735303386922165790765288316068239520717095560835774299207451734942736712145276713786442282228994169752164854732315309685522565107017221076611312609350372864360639641398615695073698382795891964096396296492548933588181101871233254070695848365497311683119286199956036228895209917392851833692881836930157059237797308087048219076175283646998066086877676504887615885625410998454743553381709021466278066073223558870419307088307220674037784880032616846448008530439569650164418875828764950419585600511634027522965229345685976057647134035905004481426087926196973631579890243994731425015159021707751344661411712713962018281434173810642409988546486917241575214063926018187464355396838375921857297251268389386268734096090470286216760750143953669371595730620673809094898584248533809344113089559403008072032245287745583948392571126711168638155546621163871280238202710012967887125748591576749236331703094205911706854599509962568629945717745135654173768732880834548092454298562654990262709039833162626258705739324194746459277000786574410022665511573582837357169713609792817975523302911523436855113279124136625255138470002495218150443974727158780896913682842070649991482770385721188351870218031959044531617856956061704252944208404934450407191726472375130164028781960615511785392178939743481437441414632484071145065728919640999535647700866440391402526737276739282302535903286208582346550369516936678370898889156646635981596691700979532275713444188038956599676754499202835970385643729911650079890408198369486253464695774546387531750524221188584432090857782024851268150840917530900027176646974682363811336982736475048860772437092186262952904330697244227280433404941056648038955366992426274039717030044552659061423083878947874111239615182147581389233540129989624163864266454954673666240618964100875719762191583626581829998075678948634521440907294282075450346689670241756315992286403754566568859166682088023870477254074561038142926893008984778640438650241943417746071907946589675608900957939566944125572217516644856698065719866591227769695778538079195679837780821057513158210812823033638816726432136255077963736780481950265512448026003485903233768580045394203227190514819897458920616203788161777748346956196077992829244982415679384724931871157948975773813370355301666770059828181669934452693066124312621436065606254713951357170683644857281395952615491968589459127614731868211274481338042608608660309322668885559995678380972524299990428270861435114810945082490926284854388523749248626646608688725624172565640220625162462981878981684574871082370263792495587766401709982951335852092140095992855089639459432236889139011910934211382586865963483900423833674002842889215585329118161081019684723213990456666466015277770343953317918568585133148180265988116875166709268555270025755333154542018581238307649604731149910480054562568825370914757231233800012665426289820363960863187432503420443109685369922612362144990989238153883823875519893043276454785149438453257133297941877710497572401643435284418991009766508807681683782810017813251925564994132968299872205456794441263354063881046082425512739763815019971152845323250093953620143254893843892669365391467199027667218781220528954063494055259553604735157881984171113480262105490124354432533714603924245117784800655414386934877220888292633433207629417249258330096615847365096002697153084956003825329488571300301834749649455778115429109541033144515935586256614575276445578129219182268698478399101990851310472320786137472523680656189139063880600049864555010429693208209419000349366510395160265554250484155128877710967764891670057090435151233343285672090442550833073272334638236765512849140487516565399619072213077087011150545605382576816349569292124919634681640936749346268256151809129798474884044018712057986644114648956559356078194440563450002186648040820770983461007562719074676352966613338639861829388526568325480561120540523005403243366770664893733421439524890627206350899596955999913449983826624448394950027264636299972462954377851919976631364981417358100099030229803516569063095702226685855227486443036571913270654129715432598049988556350163908749013224362476233542830441233135271376733516393335851005058953625235254431499468595008726197707442757057276339555614757040297623922323770871416335860474261400484823544478849650944531792632447269454378794184943570934103192598522021860200118130671473073456199083309158258803145118214207484412553961205921898138292910250204653414911951759740616093660781589191567085252055767851163155328219906236939683240535904523852743957317884248036967017402159978863548054226524429944505136690023201047103900160839270446754971637760793271966435117754797418024590465740280486305956966300667352208228782390564599483791866278272420291094412932690267994008094117907550390750601439557685649449831058868497052749480961393560786669131411745812332968011755574571653061343296118846717897979010662762521746146466830344766088881872828380754108339699431391893211208566360384158055794322659959011823921782851591414081665195482798949085613698808840129845210003946321635123663838582068352053028189686446743424169895520452610499673741915056987557559863184914139535047098083085322778726293099458515606066654564066773506223723334524037380105233299802644574346754347953062692358032109623892759061160536364047010834487458141982073942769402181026720687600096818595813429597590550108063488685368305771109938074174988359088636169840560573974986687709689114085507997947254400638548090932324025502727221439248079396965667680689989428908610061785602002915681455433593335773822070511059258311966104815274432225799607992039787581734209452675805950069668855709433684581396973102046704036855006853879303590779433988974008022538461955463717985793594335042451158066919275114126823507464258370755158662139974438166935578312143374765556127850564968053177356037321246755717660381777418974707232979375412225462319278071018860109330216290761210887656922649621261228169285164589147293081515684577082786747849824732874275749133277331247110535540125109040541940698040429831834335834243567203553847488156690672248798560068136245103546881862051324322582502355392328073741888822847709971986396673079423231061908476919108426101931753889104144403301361290026683715510557349426435992940553927370769851544690605148425400230826695701297694224109157471923168767454922714985866128905668514323098168933861131748677307233502277882867928544479051980802642857058157121576683573912019833567357878803565355465656746569793287907493751567612003978973950790447743467395205530839544071361969705665784414605816947431132242842255833043800667638192466649066200646895347711602307073422460167021606972466467979550586721337115905339553068541898630878047598849168468643955172997627181442870133471971126414814093049927908552903367894126710220787156850375969264021636412825396334713802306558033935429522314105399835867986837195108760475547869846807617905721602592371890367429903909061036984512459355930989046951118676232940009699092881453519678297698063659438442609508383534201813894738648604199629190112912601054950686250744284862217479540297883399728787942735322568172030799766579401694039800926656711722490935939801152207360031653937697247883165837311678959147645620630155942955018919398955444522629127917069819404489064363655127413903888340047969596732534608893457559946165629447732887778138348181487082653106502865375362912734254638853836010367925628289166146667363691376433832463525539541197648891593401365023944945642211767782885065051579755809053868451632430630561730552484711642821428997753421744462759395074226865046618703861878902016311467233929145706245056006948754365681780123573323280790557194461150948876760684430161751575467051334860242156951445814530266722083704283719001214532625742595640342896407249150343966432616043938553264098098705248945793927332328817100129722474753634990559768421581281443216409113242004684067579340744840886685230273047015423551932473714700733494844539335405933369089095488182775433844685558736731672381577364438428023183712416849958338402057645211155476923857470167038406077142527930624154824936774190243687991777569463336526350460196490672485327437135742816792673923303067434260802662904095556432983864192436772371087564724606412249242660405935596108452279449879926859847979687716670534857762613962773940244592789835470118378135463760109703764402699893468369859579243579313644971047955028151055111857052486152455655544442945528640000010334684067639675807675216792965149443330769984755548849156126557975193695788520703518901467425457209536620698179318228905771399454537712768854346084843667569643324925867651477676600229966918341974016009990833393788850318293097233398078788318442972671468099594673932135540844291508156816494490350704591506461821591747571682743942649337941118459371495788957929509000734782192922915624343065294418574013164971875948678053094509403429965795364062564716793778789387834171673895776825837944146819920389784422819675565914636730997099615883471673136764030315751810882157808656786977410099930066330017743384490035548292782536247238865405262864017128988844765718332090044202249773654320036975058420098441138608598489757777694063367935972814759133215485931570668655044429999929284334719728118906029993410392540162744951288598553643070750931352528478538560510950471039638169449999621616372456013887966889797917011690584296683870156063109469565949325652181375517704571620929658177395603062906502634328182597201710476540970395339176234770038817755350962509922337142501468502683897160618033745730260005158338298374006385527541185497036270651464200710151057442990169649489419904106542301591343876876442720721377879645506667768576582606246862421113775835539490092791945142600839095995084303139172569311236192370945394824706143506210919073395605458577435928253919248243734684317120404925158468311859527079803734913213114261948318332927463748808148233282524437056467235280644537654742015807185265166020705627380276055544565105107199571167864596899224920912809599385930311822324905023943600906084367548058876097577940602382408653548502939808789826516311159912313044186085118198103170085476382586231426905829520514531444453395501860261698190906375513628359752054698472209697051485228318140783879227294183692694161473570033049423707665673462504160545185526700175257935991729004052085706778200414729472750527401453683910828738140353304057182922550740392966871939579897542255603818135405820945102451081167907141256482512364687993435491220785636179350685771202471574014515972505610379764075728227130883495651529200614874934387034593289368304237170696890707551597425205330948295808670215223509881882197944186604791872038492996206643892268988136800662293976064156042969507463459063469656493351003948136312106966672175686832537217902982779866198691482995836487155378493977238320335604476473374819367576684084870561371376830938615423963110866096558784316665702759578383674201471274727908654859073366558353392129673684872417344020940985986089262940038849111783126557919936320167317317748463318598306820342184459267014784507326362757642620819906843060002713572135702436549554439959889811310134526952264031922845467699986297257116655167717451412821844784924829422863785584391426376017525988882683193395995078843389788457546620206465504873692818081109815743219328475981990602397708234536350489598674635000239797554437530230832042785382525505723624300132686814774679264753657503551485068868179680030271274869269031807471080108694673293183349443010046906464530553479596026048004894912131995743699290345273240013666118496790867409003098587113089602370864515071178016716436681577554715124742623046694527088337818724123788474555683897209165794712270568516965795542485575310341250279777635352178048154291749389457738736815680379610113317108304156260123166966875659050539477584752213507974331342757571084521900349789187315732236741448760516053683405957348344991917817911162393351278135559433711706053004376675955240136668610799389446649788637273970563779668416029238777167670505287307193977924138592555811984584927986026195192663261946954812527934645685373020299936460767677884321980021340350354069974281755361191527060099937596956070280826091157135038871447473058574163785841120691581026587128229766011633890877733887364402955598075994935238319322478579951323877565814155915365963197394955806921442486531476054924766696360255835478568946845700148919599071107535343202519760159491685854698931063945697710313341806348086954358900715489458577546153022369898525321375438665398522191113378109009624767509415804500416953615621152266154369524508879415825988478215255983220921843599719306908742322124586787598102213326430549374524399309273793751241584615148338911597430934856678455279050879511457450434692312320139158239075277526868396538637764813724597567327474092993644430908634129473369248979342441310767637409136123072175470180641142427354681593498140003271776504182519896052194928057750338093218917288279831151489400576338124043920713197104024260328510967576333865091253549076360938108421994977014751863524360639747905038469736898822534449702102823467961796923109439385221945084221536229483000059194991891011769406741091645445743966456800506103572483953125738007799707428440809053544032419086688814015785126410564418463242454766828286731374377203546574577578055883720932682758585831988029157274372453991063681280349191316771684194461304543113701742397102380765102797569863747852184293297714110653050283248760560309561850282434638481469828730337554706010390744573934288188637233013171741653841989929648633964117463609995885408756006164844340231050325597689206235928291809112196825233911676152686487118820422574378935035236864778998201531285084699623583430868563488692398761780232075223096815155251233950154026973762090241427466262497165835822659222735904190997892524760472880958072458427723280552196101892788840484980473678080460279711280491216020607284223638870582439076716841793419407551487479653898214308840557641550065887925269188568666841854921061991015774507510936300406520274885717449826712904651561691521492631453698601596827136326821083495747613395685896410163117765143380714861096361046232995189337208399941618057158558957668239353820146254418114267518653352607044973475206206274854569786096926186220956037236456927384464888461049024814338905376974732604528886581151006161175056638158860644745678193834806933444775088523138919808316527023295605097718166639214778253087146301303495533579710659533144191167828207929303003950630133337873709162714603362288205309289771016059335244605519536595500189162465596119524315260469254109347173319884643874438128483188257138220593712041361778329557694022328617110099091020499770571008328083692838421247681564663740660681791340070076030748786766359721317192557866928494610723717112181692787253216636103859037545069238859487473766590875573604530299143452317858488613011015557572825516765211481079470862278582779710296607386498049376355220468999260320620763078101799669154335144381155028025235656433843085159856055672654747365647093529697195168991340178912980241643571865985231686000817993036476052130796770825737637600343001539194535462512469447073631268563011914110397437264826163381330445295337799104830884885112132466451678384716040113269849717146404384323426731521575879482608317728586140752773572209565068457284501670317942818373298532482058276800830066447517916843767608175443322130811362911920842379210616547346106853940085388239858936711502447621539326547837267830378444295295861792932441192512145608947213177596687889381423175600903212760414215647678216647054578578753118531155073783189788002169865186523637162657373781499937915115099851564187118167355933689434843494497567082783342814500039261710466138446399402571035640199925498358338177953368542334027280859475860860687702623486799193188896805076603279283131919751708465346079230895427946805774235705945190524460914226767551163976031220024164898394767302952218234346578558192850076729420226476574919312743293758106655625197199337227961501261205540407281122639973748433175285860424413678503546485080603773639675077797057936110826942598901468573584207899025585085545527345495464230824467915819397216077272725029400220464781672193701670564713425961525284783065663936170713205878740793721781221559261694380605638334913127245454718788013986542795106098475153572336093125787120655872893857505599821218063585576432738914196495596466615925164847761065087242327846517231988033150875932114841470694003688058275136507318013468699415010927292442668513149600004964468930106980559859011419498421247330130567735566654765775481849598198758035421253753113257363031076510852846916986680411339280077865267392837604389638888439529162881190411455656615809332544351984290790868442878652596921259428539509911579612535926556509559913025046799662640458206309882833370389556129950819179181065752625950257630243471586318724681187369001577721906661918297189659538434101520156240725930292132342581413064340829907205951144931471478611845728127327721408707257150397174871405857391479924566305601159304164656466442018275309741517729008012102501729194361172796624891504622880983718663559855326232921129623413432841310618143647006205197401060141801961112997550273004019334120025293000595991344907883450951080484803137425507806121474776320150956645435091486228314750400590197216885689112733406877860119219044974418558071170385813154822613552617598425809551325296845805982763893439638970474818425979878312188370292314932921383825627365451001337349350279510755630685939104738106591370998491033837780261474220188447218548687854111458717314414672385631886698175623699142869135445901130791873992087620570885508717577609978957099350494120762554989510774220492487269087870409111859309191644189630180634407072345938225408544981659790129436374552345462933814154001972866600556990612534486338934341838124165602048237147438354704033905146185300443475877748316829930084589594593202886712415671288147582231104568914616439518340188429359254983588657110794890846427537165391569277085726868525730328515025372146420465005429470259384309323307849472835910366331692118599951304120302569059776812382485824283968974357818771305851301390198956000504826385586521441909073132306238959039990405739053951038234821679642913632607527560329458210410792906040318735124599078687681074176178464322674731259618418608157550869672983144366488371753037336483528171261445428960531118342773355477312548943856727333648107832022278094384069464401035846421880434638525442087784304890411287421241668300126037663217722183424608739544269630289970667294688379401829538659701998460637999649475813834436346344412603074395173359645017534105683316535957851698635046356928064057791165290379208628386585331700545416199164652162381476271744743292758147409137892465302350730252545977061725096441810726408230059360901338850384878923452294605696737360165263942995838527481890671457647450959465470423573903125292493967422184598751285403235260166803800097126740506284060825370496358845575787290889644947936647040771995099656408277690789862433487298778381244997358579640570758239390434255356790536342154502579476201954811631998602430380325471404616025864071036652553939966340944381342256237244877036818286119523216573561969997796898943461416541095089228967500623384705868718767462701341533607315323593699738420507656382119502256420460513090838061682587818283953072121237121663284244421821967440356935937138866289198567705780451683316315337323254366545113579027276550212437278214689253359988562566865621256799545450708827712821176459830743235979013439027013296088313425558128342806825437469286959127445123856932590038629970669382383129395134331437218721354264156103333588835166847528992000467965132495703380014252182154518956242130830075492349428778361156566786773463753955899227547939919415336445742236165826712791301674776257982986287727637170204282123850359508466694797109616708666841081521448639768565620044295227859065825870565627920967072093462113343910175446866021201608472002950304092727371641029938023052971255193387698540925458181095710615193449377358780494011659109816998614728904422631285923198037599806337011161472682097993593873166437857393111956979983314065734060429742478650834402427990022065505501036550572789328477869373639095194370042837743595174893136468008623196084843987892577441089474101764273682302191186267621251955677720079438194625362926572547910037162486568681337509386388496414763932397322428556927253227269101506082871355530441520373644832591284882921337064299356118384151826078405708127863179991971553538561372001177854009374179758646086394712870936177010136359562317099464252891729969927957825222906965984702190072930584559360381567966220931491443688591264053553413125214963258838275735625786478381523954036715353654447038449506873310774991861897360599978853782065867989986970316000945315047209411810138333614244818050311149674684729727888767774059783724137496705126198598390890205570035492419466214530707505942796049963285298184866100103868643737989319558111558449389583480296234742718820536288892476004379905326550222970982283169857163102551533444955009930602701485580471682597374686039455911967937048056836638167324048690381833895673128385126278182602217295609327957654654549775469738603884922754586813334030901182026656127762833838241593013828570714242980882855802974923101624476409693302270867547649035232538290149475149501916814812763854759823090501327941075723261173684270373246792726744870293862225337925254583383979601995764485440715269180003351887136454698073291730932442457167542694036095196847592227967396543243047745821059761356265723604264279778797390195202425796720762832703371204470034276741212891654143888141307925212036311993505517371760155471927479822427440790040026796447531336309780367894769223470922645852777051750275625128604778890096692438173105766444584356549700772851748855355149141792529131044043921930699385484571298554638469772972494700465729021086276413304063407077116849952586875867688886735479580583177897871005035090536072153584704401938132745312871678165575926043483937717114573014725635824387945195432779108500854481380121699976474756182108104536119898697671882962619971787407231140041042679352723588285002328924632217104703628402172766637935767782938609725889865397060923060144014061582477685679099699335175104325937511879033475979144852635717456297677053380217488196115996798877943408752939498798403484458653795550086235613670720462320546591291617846508352289963295463888652326807636879788818323298034403130194923105397947709320422908120916745046875015415379446180852660502275404565642668352589027321452518728004613347820254626656870942163620234844663559296538920114125682641848012154135246274531525154966283151637032422392709649137341106437872510273973852802126342873133513203529923178882073649536138604494707751055835156822372158606484174416133847185573072542070527498491046195175761577915833489380102714396464193849645429769674301214715526222038029100823641967321097793973724657594546769451002791783327189196854510693577157393921121895178229116272626728606860613132952276988544199877174947474806981104594385533170316138841543769630332859559201116911534413376312696518899531806214991261251899213935582910961471985423422261760444054259766864463731786207049423185727420379632952445150465278023105834969866977116273590948829042153064980374427720294326615023979709920367935116987561972508863340743480938546669997134098846366826010394448986162995935896279360841616791933719973937135209528222951784764752797545972612830821423494595506566109870764023881869154192751638762818047200112003814102112503285305329933018227137034529639390094177379499267597672500928281990884108236967751675886849423913541905540339430001299323151952614608274765810135002755631769927597590745031274132929150396020771314437250349994219002298078235699382394588591366772357169224993781749253434007942143741847903667501798215446567663164218484270593608123898243594378537982722371416913908826593482918498747036666673996322410922101831232491272337222872169591780584075538091586745778903055650288721222005062588137707757264076446505329587713583349039221795119315209404123643879527903367100191209908867959089135772954423166061135461334538157782783039515138020271321066548759142748648062636199434999822135960838942626535091162513584832047046580307023419646502577382689406579198831710043142643662501465070442452656863024886474337870797184236108611739744360594687731476727237999983788691732092483771453116249750195913109558871177965154571735856690644664957999866182337664044409737545646904987843378659540791918039091485831774980014514302719755736665472857770663236377669419336570260246419499122444860083594900528287329027512760099944579497217503526733447516433895442748354661246669003802012975767719173337089532279047578422266530253171281502781015152452613988282911769489094234204710307632229357094422969039006081394199253254819293317046390261760712971255014005406012486735016547760489321209409820233565635090172433957155226288621495911405727389513939875866444650617769968266621188954724832045275636043538160302492401171618753372413856377340825395231841207203430429721848308255338767342933286496406117592151702825735120330935473959105407043608806116137312777206999809030893990135008312896221364770960860915100422351987801824720346349349129516116434927158290834893485285098286333107039205849481044643408836448096569098136394197939035283466962339603111235969130905020350760222923452050135118539984249144482719803660215829463724537856896379392397490368308239691784989570175564364838960386824569530773591600937567782900920433405404888829495351564117823802460371936128038474994542292952370859626863765007866449614860733266062627774146271701197699785753081338286485967509152014971516383116296925430785811206674997486645616200781286829641973798371082431348109743928718312577377534459137139740718295142565707210464919319129220304904859882605932349968738434202793917672300537535010383401006075538561573726835088301033355027896989893864873881136764894664009056019134278313662183964936367401264457074193207331554578372674489399763093082266930844047996649823159695858390568577457851027151343796328409854999760394277987390993705368688069652471762121169392011004283066752853516771185258001056119776447690816905165933960755459772703592543880672215815898852672953851355721286927041642779211932565299707851910124039526195763555812091405970406893974046313373545750720641984524436818924287495013693153846967942943265780695733198037991682938017426558556112358039995665977437363403477996625394597627682524826202119210450890772938279337544283349038457229258618905798602591520375551053881123395593886909270932951503737871606357255244758096295697060875327347772773982477935793942080412126717008856989701401094092978399171957832943591741789055892515086025993531971683451011152681554354267828899204618021125011560906454908477481894984835536448798083218503792412077316549669684469709191755116735463482094208256011270269134988095924932345588729486847890971380514615471813200244245145676324792610523770378843728084699638995405216776362376101237826971625465573267621630903551661521476869279038223200029135826744796066708298250573198917856621362761946136582884906950700144320204300586792651900828885969981521688634280118530042224682232887743197885566859616241491482230523129178493975777772211579068099148934263702923073659253720996753947033979076872355799663025218955986639074785897955101302568055125375127162304678048411170585871274760129707400535170402958733539797144839704199608013652488456576885252152607269267693466655689130810525355084244565534409683808426057487452910327905362221924460269093331747387853351708314316178068918068795990446195430500434636433412909774534573584114022748413495440086387321916871735646231810128450268682725144285499589765734861249655420379551097104868699734735100522526602512729184720371952433475546375873208839605747710138944185638973721565084264415679423253217269635450648729806627515005135853900199364901711475563946646809233925190465069597999314930111879978060992090384553854771651438177897416112675947646170634116853302031358915475591312084518413512825796754383935184054425754604644723885057543043946101490136106506737384280059664343106194027890452890191641308022423381365324204183676788701842126706664377993806178674152791609242282047649649219902163793786530857424403298998097976193394859367105298732470848125367561872029229613371308991670872662550403554334568016928893956123753564158447389018482212393203969445699280451730672876862948293098126148900239217771542608933880552113832290596331837937830707466619889970561475054971548899130099632662698871764981719231171197319503310913762765927906014986266484166360085054747174488572844084143756773506578979135594917666870706940429730402554948578732269816451520670098214823031933486140438272044454032559238860917070627755388341058955858812657612641026925419064485281039980634650441747510064783815981008916264556828721530085628609759698440429624067666519299202057604578873017997495012984010351149821343177215969615816948662083032864801833571919778869006163470368005200589471204117342177020315009063688583594425057731565909294723436526006891243801481316071281261704198701872013521616552959565985427029338269663963921238691888518274786111937016198899457083498765683878665589324302537050321709182707416843596754359999225879531691060253716469921797673581672489791096866148179623118414253992878389312884253458567915413695032475689204233759193441975750916800806343461964480821172285909010939559727656820356209162490050386974183482072276237209953109626700521675289764541578708365552470144452093032773460836252962308822904900395472325315699330951324217858631906276558040736121093074440388443577021064626488109159655733214438383085724349686610171743215588580096440654629140910028079662659335508856353718635438813265415574238709723570383365982160637529914184132894188114962864720888378167342816584750691059162499132990566499048175658368224154443532793533438497784060656785116631722419025455404339803660921541438831250096093099306393161855616025010290932435587349817725681344873837889386439154512337700618926721037109959182680720432192552841063167720834380030563484229963564148200904520472902522352346468599916997359136072585727883975312519440842977849178790512685586026732696868701094654733508029456956468374922161851920829205955507713189598468482452637561194867091426292980248984365636378400792720265258808941546095919413976150521117671173266270853202396916125427626411222112294536401031803356624230090875424381756778211050619630458126314007239313821395869126959215884844061516158843038479559299620879432507643323899358839011397184287215771085052106669112233093903418906788173905129443990416987168517291977494603067900823569107933654485911948439273229225159400620716733184051436926698509541038964883941940753684761243448234197652179164858531350129592608278755147734113179936211253881585855963208116475309725226297865988743047285043707492342409534663845795453902899318202563969130458643386892342286891233641744017114387748208943236812611248904231316708128533118428435310797162115754999914587070614576867528418680800888054468874725955972733711106863586523957042550075233847410822786247805125480708094232854547032122174144277689305973286827495965255125198299602233818597554752460974602419397634970000332973193946094060605448782951105359115672340919356055459167121555548453202918270890680596562305268030303635633070325618519751215974927380530331948720147916939877559932740816795748061874421431468934773204535827361347808536371352052187389754326446634277008399038474202494757666047179189122678211171784071599802070642103702072659121832742493048852002185188576013039921974746709828169883582977560781536508447579543835711699978848235487392253824430483556951886960720293458602075207814669036130804791301750893570108528609503977822054196922935428119991762521389945881814489540925008814075207591535339142695301560826161797099634968815670599317285143058507680423144210993493197072654573819042321974674339194620076427045372863105456409141286062169182380819436728261125935453342632055153249413632233512444120558503079561327363596084511879997840049850061349279751766525714115128346982524088504557285760084504686033177735663742669640171863694577167164725463826782835014596935730404348744939921854648162406649999685594686808685764995910410468832736823820372169118409527939382704749673736903173874168307185303262526226988409939197352549163521557917369044086497420905464111700911953870486652659692183784608000928345978210812251395563169603294986505352920932352237118226499969661925616131161109664453160163496143343355498836641023866493514664378545425838740866828744315400225014894945511723187663926231175453838971432383438801316909291883027721648222286358208753715932867270700274174342421855552266585104167078617304309583100264858210961186983469754641037689789635734315581628415904582307308505414395007790402810937343993848339502616437686946724794416906216950903833394252965402285738241893451332022608407926512109480926481104542902351858720276002693914667484693100702984113337298658613494018294219279963620237933455206028188332914925231040870310104467721353406927672817700272822492462904629489306959402667508331098922896173928070297300716513333858062603658261111762166372747962065201596592383657223984897544953075360050907891360151375558874983012516496157544329474389289505265367897777117240297589903611896386653792650503388112851150885208478860755049101072167347658049916049688994098439176862186228961621523371640828327809773367047607949452234491359576749122326447932903342484795628530320347145802652801563495593094548086123300920854843663253224965372911926331661237638710765788606732291864115887574107736353320887056744353305351312547842628348669694499598446656982723378486240348150805798151307261934997436179366566196365086334616129705226169257433204209841288705584471201926071279693532124411000568730188741890476073994352473694092701289840162532020416547772280974339316325839993850804184269340205336355140344296140375597911634845419493827651798813873234761949479093456565571078011215752695065770050518464735800042361765686948673536064755396382828730240695364226464411728006389709683677497662082466466453171311600267926402446825960147178339302915373468171019416228139218684158108721457196857500061965262375350822521883884600739595947136130225317553603960195758012372720738991683039848250025532726276400574154572919600888192587499901392855511531900634723260578776873497489291978903360829108688458679734632988080741683833393245810156612961632547736737637983969082545626791516259127541706062776606245936269570812118414656724816375335957983210682995441935696676233271813984672856708649375503509600714491873330908837805875776774103514939953017645168068880687028847696056833823169577409458445799359683816245665039650725487777034471683333668771594942336276834576721663687724158636850329996389596824164800412295934687578646036246789693728908526372140152006936811417033728895923234259348724393533114086807478221905032988600671280204284529551189681414004314373764189178345463314890115525131652520465099108143543463735964034972194325163800855942057238748412097991116451934372969674080625217117838555342664638390175037619368760444930802672658092582077416218829532097387797349059850030040453841835169744809887603652465036568775987082942635183673792530102964403853668599540834277892613420169153846969829394662059775732462991145782258705179433741765338104344257058221164754865293333045428035914629413757155816129404595157974722044000481800346825794632297625904569365875122212175397079937555703123176838022068993766702800460434820671377488561710759835464375037966590663278569723591303112668574673367288999796902005372793342100639904086795008738501282523472291739602476494368141546366197222168583896783175636397202352389842620671471124524018807228997247500125220893874818989058095969371789053434359188964859631380724189971888516730147378456907022754622132077769247696814153972775833043392136987363850405179257587952869996825592381770511502457974798023534021760246654793249687333118593587031171858201618865282225248676988087526790859832546681902649818400310437729093788149044004218110523134132366403311731252668522358842216988488369198964746525612849800889296183320465937436228605397715030005602892660819932846621137519151463736351874155082326865767162309173938297607378462614872453611524862012831760882991221112932961168408466546144216306394588558535769470831938526283952839090246751421023521853174859012063408680119900505252563953608039187579092552366877452328279175804097045616159625579813523713743832741706501397531035559300705971850551080462921770218611368513248938759117407900622396628342587908382212766915922145924713975055318645623182751804045274176447678550719191620061196082750394838645488820783139607778870022800937228139877726775144063532527639605885398490343724734344629898722118404593880879703550840887595923062459784138579305144452238025554337348199834296918117053072924216865400263951619754242839609705621805635730841605979727937121164938659078258452549954622512124661330549719574739039187871160792797165703249173802552059277851451524364603575376517727831611986103023316991172007732891561339786988292962483442510384582715748869108673070650815462163998067701818533804715919810550090711616451802940128332063443067291670177283371025569530491086112037209542526912768940448475744076029760417384032473529965213490049019216092886494731480632833860994147656868747682733631435916291468688335038925899859394295911217257143262573859351057127456994817179627739052484157805444978726615658726956193611205409083808638432908844065830812592875588970762837537387003113887470973657335343937094766354719238665970611071161881558999955278087584881224054446586161610295810039336804451924607870913646004105120732553754757622479121715948660427600041410492317037610565578100805589853512983559422357447340222989820048395846130431680827526841400988115245114042018951129615620821210834118433743383054739375288684593319277119799527092026121042808483529466876467894019678450912256945458319051076376799553289562121312488773896482000645653889869746458777014092785801423193393112157550730356228555073486798630755928993625247636858530556537996406143143633997423246904167864738627290511531040165411337992889187681308485688524704305420754350484006651873095889442088413889600338768868917915614664291232201594844795657609986599023856100301531347261569314273863027746856833778119725223816923564658641039474480392139638148814187173821930650962817219188111943298837410753377355202553020460825739844249604629194648823146576837061342757699526568132049647546437656083582053594101940800232535826324928214548521283351738093622925359268236478155901488719524962614805004675284154930185883534042705843238985595306126052191814309764045087455680748723629094370327564844059718558336863760383841574749480075164922249691480336454490070925270921893288881990942409197158830109182604815921392368873740669048463277062010692648328993693410277347583144284716609357094461065218447045418602996340600654221615998371124564701381394600964412279752496966760810291916306117141245200577614085271567407685999191369572617733365395523850124370055328341221599527073169587200819495175836703822965101524181409648961988233153430288057188058616260164459306102928818212085757532290628906960986388093711047225298338926603711791984174052640124698848287514328398914366635568129388299329958247109120405346726040198594547516839658736608796567499824567348818559833891920353624966431390791830315047729555231728429487735935073119238497675427333560738880383975145671435127001992101064032429954927108519503020007138012222559325108699528923691186169502031483271877948147632226171136732932468126456171426233268452514965685368678527636122679561281814197658608742223486061046315204597135976823668521004753826543974559648780300862282684315755496664200605161278582730283051211655646327083615568190639543788184747531232921275638817386573115559891983672881453233484677763847302558580971504768280478999995071230274038821282336977365954802436415525762463086956862511753912203285631480864665331521415979825011052721621803093159771787270762539236919749276080436050502616341237523354687508238005380490751226421495283708738239021253543099031768035862577806900198313548509753809364897303373257504148795567548793239597063901348002702009656415506367981311968297828988517184631635475141881386722163128081160521508401627695782849568747178598149415202947241628151224743172331901021444282547264371388029668079664451894074077560596518159559282187279795662631116437212984395988665037364739316129906964199317693906552978789645819643660748487725829601690416478111104452994415019593413878635721958765178741536643313163540567098930344538003315728690962263534989209729215433473043126768709048207793072281780761367505293553051348342735210352119706565513697895674287941506988227962664041303218468913956256151294630556124196336065656121544601888845863228651471467554937268910910059463728011428660324140000313596915330673608644286687381804178439411654998859108317124366907315479012667785132114634000772214863719276476366461727138957128337263140985085004947084870992705644162692653695391043633859780914513676360745618082708147616576863275717768627473240662045436030670177885544654601574725077619476894337748460939753553956010418705327908971430882911209750727655141526559598568106068984854574402550820533002795168115566022955857629746349837675744731248994002926130756093688466657284920874313238556084005446212086370615759463487109700069135635381621325717696303786195038797553242949440122666860500498180465634102174394034187882945946363187268940094626057685956437978380292602571661651279404329462052399411699080274781660680034326777298144573504882643322618232920636440847274923444550510149433884608354970159956729465730595353637295584076626507910921749634010361159366945559745044788466458622335504424712785329353564787893114522997314498010001082143148005558785927268514854517292056739607692807120170393055383342232518854472612308178912125317332401715092180214388131642475151017408544403822595039839947322125329772808533385346951522677434388230772165212873388913223562237393973437917229337162475042331895323637333630173059376073808364623074618134641389698802295409420000374016216721124306374137514730185979533317026939971427840997932336570215641536195374626980434443503633096217323602805755369523304260880458110079411881361142046070267922621496057284332822984666076009837648322639270492907229371295086835817671276531307599651771955334597721862731319210360249527597737868393293384403766611883589811512307914921125812893921712063498549068360984126756198285154962711722658458115299142267316215141073360572934597118033953000389632239286956782500994838590475605788602772733114219609302328868178231314491374288419473094353786422110318544140256788771837214441870833279528657877507507334043802495909980623427456116307778958967004808956353294397423243084706075694111454747639613350782956770616898083312597751910105264268587351257804170751615438219777446071026187196661762704057013011818174111319268962429438180459271078209407201633335871035949048412533523359632290890856155550275773965784320984672098923641395113522816089506159702847421630658455078365880895138513064001533159689920289636575250681117094970056763086549133359442754995146550299530804703196185713575629244601373288499716279463969731310208183925810099310498748395597490253434407799632410581155210941534681896971924134749706888660356974544511642390088896130497553415099163266198485776242254759065989315032448348086990359165900450228864641400463389253119807042469266034505131467598914929508827412767470100415156616860453641993307307710534592416110685845810348018731923350671063007641290092766152365879082031024112417176107395627977070749880596171413430859475963192408460598438743712099818682180707148660630944118701901799745293129068078744696698775285175626665798228447925916629235726965035467247201235988042364773672726204792513349649199599974587077044408759659637756537658642169445341699930898971081481002857691659751522512293189315593149374013416801573497567566382214723099030374518613765250736371232074299663983256492040337335171523314652212536524619847210067536608126800509825486489169970437318218902936901624713009257033110628868634073546045232466952480183138205122181932840367630584869004439440674419974142365134558218850488822206088652527921638342824000008573203699575317791044080940319654082607124154839972489732878897001459968996185983914374562082733282572802949461746193901093086840222783258139343353355305401317123666744073967229135299879140415547013181781106550190641292706206477301991202768679277979538563801518881747950523331999752140561656757482652965241841276626766675373432942159487463781506447419078270115589115668515264504495678809845908130958913166077575954974334254959858737251781661816962349426907519210589777204205446684376435577738537871324601345389561163686984378123783814521697012388550891266783275952475256551653715139657032030463164730531785520692556053280059435897640791148122096158251974012506312218093722193551590459151344268969961503482846972964429652523972856924097737510035198208488880300808089444471793442572476137664551162035467412481426387087788099909702934876682413769381348714134271310566595642033199128111905021975425850363631268699685302798704537804071767014766714081714643493010112016619723960371984337482293019900652697695285573044631309277779732497258938175238713968043774193781927955341572251516615375671856796638317323583919096500845303549286622688966006595113830616221185570804290264620177497007813452801750596002895081803956443449496107343737593467020592441414432454272259515909851236752139854142616695351830549528963951278275217727830954071267672325282638115056809136045237854972321212770394637841128000444011903658403676718741273756884916702749645507494479076409619707226772510500467316692168037761495484737544376045036517672475814247080577281305537501928198292666284241029331503966355929921691529776498710802263219490614360734538073231270226612265561536100743634376041522992143539628316616406859163011125172739201262889378829437203361156453921639002932582623447315156910145030392998691882592322055156212900539370133020147528811203959965877617511780585620547079358203691568063527738123517292498051904518912856260517200364062865917444778951705222032236864208574623726857613034635315850898366916735604476450352033648845108491941211857291248267785792678193729278107122141309576657409148539083436860658227247385072366480954263803296131200968978816835086386230255276215056889090959375072086986768216989949595599460011808843697193261068771748333148266283268257833934123948509542847457934333307428694077067008905120961217078062204664685101945917979478822027981711304196814101896560105050299615684718435433003523707121111971274843601643229921437925457766916169788979504356337804450268521601113602527076516073155028063899097807105228670337951443714542071592495502486834958677099495307855607347655182796924821750145678963086209746874239848022688164404837666595968345466346454362626083949134725651489630588276054070483603140227186880785316194172596257886958358810057718798052377746200040396302195855347432165610195348543641884027556860739299408019642743012558782680188409065522325911828632466569551587180343192002954130383406334453473545424180380665523493395476106830470120342132076978196236734748907375703404902696957665737217049849369498540571717764786883269178289253471883528227024608880137070207286997922517736759617166450273154150196109469330287521531399208637701108371448891171472877768075049368648289803030728812533211761580856453186120748336025563295606544984776552816648879081737037631229064419649131627228546833025333699282492407432677658171145389013588258639919337553976060670652772819556965093192947788849834316069221049046747898587549406092365790466574562329444707082261926888888511084771392357991931793101611972795498995622056103957297175248882525839955567165908215220059303966210882144235908121727231232389423939749537832139740291352142993682255827544298127119828762653808403073698994463950385848632893429790174698196791251136135230642554325222579505898399879815418790058717252843253719152974608831940277701169455527688793080584078362378909757837176021370198772254546548890137047214695498975854995742394701217410357733064968799894390716716640136994208646222320663192232003769424126778508375928839469508697275831091411808598332729574072663053520106056266099495748543378783664055654114835303655324516092196509554225667845639092776623991129289874093810011588630175479876128237749671778564677867008381340971980285084300919674447943272657237405510250604301169005316189526590944132659384397075948848337501307669117912807399817639375476975015958524907179570375142484314192664332913282557782018918179580770939778300251894400471569459810013571836632558523679858901361658030164673759430123463110517111024454136864335516664793396173000786610967619066762152980135284231725617094214940716788033172663829585386785629755179717156218181114813850868969961412347969992172190577110014833347449161413099942567398757287896414853187081521892921150762277618961053180609032528955966249467704333820533368551300272103382193642853190311989763261482655811157083598214817675297755748369523284039574458626319284127231526400585346387745459596228627186139225572194480312808143572425255916994393022837660664904268561634347498818178875259725821242658865999396028977289696519320788290909774729090312042539533759059434031086687190709197489511651303563037871585162129932282097771390934647115921128385706779719341818238974198542305953189511805773740320960676437441316921579305506355672267079116225906405288223191784453627410342973015273316899964374163334904780096917738208345342992098744169623055143757175562326420510141589783465268038271203068785095010375178901684646597055979270539675084063984252445911550790250203645391158006265442023715714763818191741722641492591906413816924680296384767590180575990069512404562359169767681877151269539842211001016443387087692775604649954724396106526099233511422110619331162052799494438210719844097287816123385132488478383181670509965423706936373641975408623518154156275243680016074744764854094473975799459581013945909681805702060548332457272011358439115416422131590855591935248479994141062624366396266421197985439066936577385003066821855260909366417884771783374843972297088296187204964135924453021554358320385619072595284248970367152266201626883958736728943745325971091973524422791660925725492908759334712207243374741999479135883547926708320006100749067478129926721502011786797341763761639854708487141134376650686688826569787030806080320892111773531238403575837617261851965519768850234633558051604557717930893821093435909116510127670432699698855415116321872604233578093234242949718315369490205555452188177008269647350362709667433733268617835494552786477747740224732920406555106053996176956832958660293215014978073746421643384338700134222419649578243832016971260008432017019724013904114350864515236154987274047345228948154594383967104429235065384943316422817298144808841107463271289447699608084340315637962329874042499398100891214646343580116442014505049509865668663929056292150608332737120808348808237488075309066927381591213744904768377729193805339567575517290833470602598992379992396335770679635045918651538070354380825591466721973067276297353549634701351189996173764335142530637700422541419976611383288796807043192975341409993899482851435903088225070319488736673577999404718501681991683128556231621459061082525440288280121861265482399457542990578307304119509851700575667259815851851724304916342863212829242844098691384908074843508669440334302736391471618491763792505650597624422338136300152614833639290314694094558749508614469310319138217690125937386917707262221248894965837221442751896807618252273004417917625513730488584793209732096510012547620574941812872770168164694928109273816752276308934595383688213380186932304301234151390112092483425174491536149573501184393004901911156525678808105955481619164546668428508916449655839109806861640041033814908348103694036641504265395740843211411146784811057513121834199809533207659320414238279156173846641775875107748009768053998634958910462739608279534703673951207154619147059797464495972112627254918042964947922765495775140031960437785684077878014551528079903717415952660808233830313830696570074253132841243784561347648257753222717132212861911782908197727706647442845040465161129058824335346820693208258481811368881565528287351317734622836454470141660462170377185968501071023790618569161457145964645905226796979953030776521899959857409340734979007464835588738185069548379343135438171519598854877148023389507901898357571918371227934977114536801408677569194759481327121155955168023525577263817572898317492447777245768826306803196918010907086708973254705574257009387182071707535623478033104693552493534829024093259555729887528332896899648728685473808979043272072055316812177173123263922115929205717108475893344728570865912438410362787340405382814898462930078070487552836418229703537086405333490985604545478861875824444270019866619346740407510118613965544857532656653429630142629232822919283364484239018905114669632482536058704402016834418452334635006909265442654409009649759987449194922613090788078042990831159462418419414656042041843634418755558967053226099009349209364363096158334981329497199736158767358937818639902717368468000358223819566370927028904369917860572117317763206431784341844281257384460959021335336694770334991260537578947883208499609654542517577023811688782187993035339015329491121551676589658202819997662485326367656205542068497194652916141276950586139776472949876089735525981165292417588479129572176426890841000831094225718045012289893000479962717766108240735163373432197843418985768793423305692367044476010433071665855543819888212653197781555714416939111147836213713089616396724111700523698946908051225380739983191464626257561762281907458155452570978447530534803242269859191265662348383014564472232001595922771872563941843547073416238726201298678789537162604195710896948950375186648981983525385930342815225947042862346636183007705236032722843215907895593471421839925415087814142477251019670411134697995297737332541379176939470545997755190892433665604076194829218630234274667428569216997474029845266118496159274253288190781214350583809649288647053887954590680014790331118414958892993061902264640588208918806686927832817912648404113656885645752888765634254185830767157377468955444047576559166663391641388480481888391178962778609501033265328899868108541927759449280215268036153039229540449450945898438812282304656530545385005275899692896969007660669018043617671687063508777198583470335339322846895024161703659028750936270000923817565307812659045341440511581365534638579029753348867804459258507395613270060722560421474884504101227075410629605690634569373922971861380123058743784781793365605862006611158242452080549925581722775872239253389958862448709379538438507595082387595841580585396989794101528055687564628412670691809813959004882138592095321432960218682647808791736082971191741068786852352414840733171712137070803639411533004653555251351128043865264100306769618811799808354821619418406135133555184023347046044431885951777976626140425660875210393076380523040645227770470971937581084688870797819632824191698107458853468105356813585758663889234155679981555825754672495217029554129509529649132328923006316040174288523886445389042965480206853089630641837681719174491475581542405208273001643385360693912204848401860060616255835637246438108139404881915152913971535657874884006089344993841568063628398177825675876871083629067839926696151145209874279160372188448465378943461775476756442357976738261395359112588930313358150598528219675159398382412630678285893120222953306512125848685424412423038367897904292662843252997231214353086206848471733358781908516726743866365264429854245239289003191192369590440205477626154600392486367936970218833444628648087699409402092395112838892301006673306797347877305429218667210584872871606593392312811703118825907540464983463270633349941152192211755156118936441035337065347896751626173608263554564135744083147370405060489801733473650837981831409864188586963139802359850412763840580780029898862334360510487299299303985325819693233717011310193182879048298066414625952099447924491047653310000390080436565960510636673394892641249423710298842476285600742776429543278617546647979954123028011154571885746847525294320829231747800332299930744951303132155292035944860439512355709089735136328204180095041827843691512572462160322181665979244182425909782375808580286903757567725811753126624815387294239109269206656755738736330821213791543879615680806972433296437733114168723211169658639176968539709453352131972475575098423774527419640724751289775880262021412138992211475149706240743856841641522336326469271039443650209334219156688759702044043775858584141665176163698466107332298276581469005132726526535497390306965677450420075880017692266836786497358004682915279642840045324796124584566325261429011746480058506195408961128488586189901716600721386400013566334491518386399940903272618538795795724099268821743522135995704118543505257507362919632982346503738717300542462655279420133332429029320368813263167896402722316406515592121392221729211645915038341615362236524462287300899117251567555374983901811289879571334544416568000292933773355648173101021870727738077430251033219724005428035895017448166388974653475259131742955969641451778358361727543605664131015177664307043298786863294567484644025070865870769937117778386911552052970745679290580837416369951001658738222819915672293190393609946951080185281364623682343323636678384423141036121715789840537766495348383278869085007074632680177537989499777823111646458677764359799116825591459685621339240199032463296482710262668555808463748317725560584954065651840418326672865355505468455320072628069686114916149164086387200559047854141572625166902561435224169726779486839546219308933965858491663436058555899678725326632741482273766518247177882109562203757466962046741840191770043737762220575856100141960002151591860821095331215356598333316594482610181443375406700295207434871108253191429589697665796444810252800750847963721227662757722446851707815988028815239715108320690164204978598275923376167708762374812476188269850728233903513658950230744383184266698355211019886631734477076392153094651441008260415518600477179481179118076779346523589057802683935241127791884277672861272019881342794371836047206787740257711318514632903527892159183384849493962006757661771423600396545509990441493185468782911153693521601042286383535312474696096272584510742118705190150864156971747960654329483498949581375832899848755279570689198828225349853099307522281063220859894044048476713176805687968787740216561921540570290050579897615603499105731103386079814063391717382370207489869109890946873093934345201564893676562832423061307150267373094213090918822084666073757666142483733162895721317151148987327081448080959365097887627568749367628742786419950804620000188003510576106605018147102212524336572308848587427094719113270835023187253189146805086107348115250863297052873679219549048657050292738804266711311555756396082501471429320703919501688004155455863883371349113301859536099518056348688375496303035934355184957944363102096021283239746123590015948026424812791305855443729742210212118399484094856427660355364787857191569662923026303328048289094293957760643855567574726079651843928465466942605501272211383770951469665023291299881523205381471282766981173755223031724829734475422168737597070323499539439422718262738300566159395116047651829203272133146313486591208619913325451759752348060824658463624765170408322818420942548109977765638288042754794391956364611070955925838542711031125397461131760086822406057908865712095038307421672971808110683009741015507031838385370952994991599897824569830399766197568848386665256631186603981885003817143783910175268720838840802941716413809777224658713232180231947935497860298769708853485651539614415999669130937389597526088914126289510124077236457852171793057320672310909969334107740923476132569905257279315618521573785342904365380885080036697907054963400849051378181525220503761762094792321906787080029572807711919197459904879477433794752654747046714142538257632721986121576356294905786580839819509787767416165601505770627953740777804593174774955955316848031485364362145009750075869602339703017158521505948367980610232127854049475061153682004148947442684108675999653695845024192179317474313811215934524974498552534143487013886606960394307866993796595713610654961481198822256803898623261958728366189591481257462464405265016226577010949448307210780161159387439223052109311936409560760099848887307353410311344621979288791019544816244193585426886012432739801071207385251917557594460055937010274253955128473665698980319686556316760041923371897026119646551102366926352646810536077922348171787854359777378661343573512551284358954800609314178346896183318739166746733893323819889750781078776340367609148130202916594463795892446817603517660656940575545470545691153247344342247619986589422322394170540761061852374361228394316511334745200031623544629333713026378497723751888995481572135465491536165583573814987455649642505375742965074409499242200918127779646846190562185659041956351454225318559125035623822689237292565038002391322247445720662490142810679599981185726435093910370713003110065082962062005384843232606343921729430659574497246923105844999060944028378153296749521609610734919345690334867196110912335950259055188012599522315857819397594331220472557988531680066205984170017148956452856381972466169124695460106241145343367333237195068285869201540542247744236587052738382047142121368126312116531983783564188495826155067005289411146157275502313524083594886078509338331130233013642889012022005107727146761093587030297612042511397844846815322998597731659294093122007419532240961887631559795518012499308250944225760541282666131504226698818539669010871253147603610154330469356416374460555522373778794960074755284828386470155037771790269360683906709702500716604303690705765920493194634523761738488604386308767557262981730989174239968639107875824364147774343624178842956296784967790383289753611277278296119959664179033924165962034009641143844473950052344220579048386166663093559076844157532639918316834212234713495186245906257908375561582407379402440591810254315013572650449814660172415369881339893396932988415980288216276664537689842576298307169451014135401876122774855016038133026235329774537983952902129949587927263202064060366043020912344706533363554481153106604443752550344087786310024074915484545441609001371276281906007153719230872705323788795205779263902781310995509344643707983860399204035910872859043591764400826932665960721933581000958500467485801386595996559932789187034410134086373328307353298432172543975788930895804601039084117828984380756858319774451055714146981147180238718840018229486303374249300740068168620163311034927987024735795410291389746691480678668647386688198468524364016685418353496252280295580655201943743763534134243603415925369465821684460723562509747917326040457824863689085697588150701971848641077133302769565389496754141195286526463190559611067835484360840907739428733115262656675392983405169526109862733269930289241478916258632181639776133859282013302101028701840821970495539682360511593314272282123584736534452242353854806432546501171076052574602568562038544778321649480458104652137650544215527895179021281713642152752354966556799423974194741801582390890687067788456891115041246329885156833283859744697837944902592869451850790620477366414952217708388091932464087130665300611173823826474880628497451636493896800897068109692896422215721157419840823833199707450161514920209418657233305162215857408983740881571022151834082594346343204694973227797325173438894191898622241520887426424302667943459898189692525988800225871735432221478697058802928195433022233940575099293118715469047589171629124118927705434950202231646257272508405685051570171694641265399567717362291644750553345100413876051460442237435084831744583678616038813836004900826240195938303406108821375624466082829270376306030050147958467821055221361857402812266300271814244393487605768780689142201922409368156606226990122359037310604745550067597672192842053118473132871035820132793989675741388696475039113170956010933877057756260032767932399127619949004527928636342222097982238878814058112691322384421712374661204965534361011242583468310697945460620439865544237018742783246605137991695670933619838744761717907856274375498014525174609236412754765009398721121165918541195109343288641398130039705197777372983668142420959327594414737896691535402129351202831311795211659577460545750450770772021605699784299696362730676043714921191929507083855729588284361602721222618326547749659894893757545709853635834617041396459596863796630121076741958426561816268005136108590503409161929070855905951156047192553945964305722184677039363963744734758135212378677298547126542296264880181138031830379895735797363625482017918649418420057583300926488232635843384892777814571170648055447185954527011577129152636365362144197329624835540494183306657828715159576613335625800720704638540775066941131533852569994720524736709996036162261844734967598168125384691955922000705178107712250624634051919305351661089765594210933161201211744538909817737094623087845150007885673397975498299426446548861308011851521583114289147424065437290175581982693413561198460925835726892965895831856560634270314425811924142451723782069111746466664476697546246296029280874835676580546580009597273848611827362595515925424460227032606769923165090125014400164600954729626437638114837020011095694049123984930504639260271775259929127721776452652732461085935748854648084968088354444008724461793512763177435741815324069234911840595203700366032628987707161497991600377228080515409728916505469713669221070525585562487788790876275334882190455778454619129974153519461769888572131382436139196594114301814879084429407133809248186896653716480994326536738759286758849844519299290216999158258378633193809495049954327722481263301763599300847673424104221466519003285202855187026772607299106579419189711561128756497863443553178797357539489892634235300858298191916401103201441672685582972758662365712898774084414042280245326657840847190660925378555031645944946231251904104908850321656297081676594984255478127278701007626687563632631327188051445738210694543418267584885516653734562585043572187024205626534162162330439814012315815942935755307846833369214137914876256174616369945921223952855066237361083956487821414541353256221923843100984192118412143488135487655496973329898019015845109651761304097603698792276545307252405318366373483160058055768433326435710308837503232772318341235235009954523001919167736123840993501981821637598843587488400979251996161403364052396001483776027512939644858767504416129493168843281148186656060575949218198882648394869958532660127443945484116933554093176048924143111270573764672807170178456884582381513451447303438133911803309350650309602096979092956375306729201450470541979955428461496745319044161322816079722400477515592057013971698476096074019003716810531654504070206850054384486525890847569468154969183919348855121938680565353141075225119545141538623999101449808760526496647629947463952496931826743103808497916331479557372233207634136136699139381925212708885985951605752499628946438047467342301817264411607468426962276356778930351678561525848432775159149866361503861510976905190081073736563912452453968441606806366748130331423560927156822382355922956833836898214236139570768243474243303409014525919518333327596868442172657272929450214404359151858855358780631971636733776994282334712314681768126155478348534347462482296989085683633252003240151223698647864781038266556032767697421935822002313539490633173181662027264246222983362253348186569220962546409572238183138770626471155246148882745526528411798900605650993124386712070518177216989142462079417474095979219246580699126248356200870254549173208119456882992488490686575655933642929664544013310487281466063673556150433247103160012322369463839699306794703482050165301177790387896479714738061571982456241888528268134929120096805181875930389723945319184441718864055982179464348687186766341580301430606081568699114021726868082379124820178753626778716122903060233162451054019386793623589926898446650251291722184910034018620744280242284510350844080198555998143494456754873332360710186635696906567407911504496114912342533379054879395468147867439261281749465157058790445851380885963336161973515981176210806680245591270829165300913288910947526545752176486225710106056547966048056215703519846012367935208291871859152411732443637889079754594634858950561553670419644977153031986697361355960546506529292385901250479271335407679808295838162672122950915199545840650223375586665952662974858874902799902785095246435083017042587361761339168978841768085280360191137472334328722552019716591310851299611455820070968067166920984245339293635159890530942318745282900542172319720675663619133119172636391698473828876359954175733315889740909367020496404368341566546941427293437927136750620526375704108123554703385089669426460355337600465537914611119573246287845657140066712973452528593985229147612687773837604599641031828065849175655006262369014580865537755594342972705267921942737590158029967020297758682199529272918412249788017964509220112589138312388932569292926055921594259970002082923080233559937817886329247871202660092334117175445257957207811895904633582427084189849676286859107016064029429500386372934312999477715873619056324679956054327053962841043670248337706293705336533912017556355287376646147319172278372404421059774109607701639518411839476350141077335664953680901208058539616438175686695460815216700660736995272624487821855136610018642533854608998420657159099536753362345158589505749563153005784158055338691228269008522778253449575645344423628275317497837448677666229523626971743301417995833513885842716257300148863970205732445446584878263470627512184572425726276899808153976427368841240679002365043063281880576517527543670453843578848115024170031697787266990848930594225143876514594234391214628346279872041670793720608460453372705884689973417656408255492357023872500885701167738362182798754097378129788370987382393420128211416885406588083105636197502208522687953900844193499738502142741485647438333041032111787230348317572444601922631842979346992625351722501269005348263568801499282435001577969832098579019285264322490313599058351368989905011082819185015866878725190608709930176530509784396419880614310290014890164231841608743506497281346305569169400281066637276872871136227183914411293094577923529135526636749435764549694763056285876447739133190173276563446331497540433275769849778627720898121941671258060990384720298829350591892070446952251846191092414951143141410990599735734767566823476824719751049240540221704164458866570034305885557223258479618141450665362331792367785901786972428927296030395055873087664986119399391056231617838391605706471636133326536692296486449252972717211185217939094400545664283059979738027018697880666309677680761178793362506013594661204450294538851908304722178285111121073004338887896930401842186813014505167182055575753723996246412334315008112455399509287246810720169304582993923598085410386818070024311526992657166203254566583215769195145265684486080288062440458587854306970226864177828102829420995403568247478858795236938385734550797543708081777277652311576248639616039624596952739761796875222515822401943903787260552910350848873527879564386484606758329185625261640150248728418901837306797851972426950894576201784933929104991272803278443776993268811746828740755494184797091208915550010447965930972355256314322100669418513875161283484902522896981719596351241414776061721203644867744449027683957917732896183561867510054779577454068311057619673654699661192776614772221023889996534484163482979474255244498838607128134715407092217025879682267352483311476581514309407403076465561189355751228024270718512709736300959564608446712682268380323037735177962266702526003378693786138428952727659135496747891883176076979396330156456653707794214453140701605061243100465065291855447837191339776872234483928458019780577491980826736118071070862065926639694209022514262320332409038229290804119439227885737962778339361843277103848855414299768882988728766097080746822687932401453110401165773440350802154571376165020460476882087876339359256070489245900540005234732797498156382079573675700377266045713677444543755827441661145185126054280859615396583091544192021112263326475540028876126054440203171400179032663308282779699052469068464170721058456960468662880028051347814104308687265862668493292377869822821537537360932901794787031221747422416313048023943571708999143534140437100270919726159048021775622492821197326792023693257487265956863771260428138864215844697573912401875933988112627632883994874015808506466787384287204296676928330830338150384543267216269108462320809286053639551822997725018931612540701334849335367922531242386924069388794268975278108033094298213951445873213155671375546037907474906334838185440139827831892836975850255830813260395573236410204948844815925012737666716946304312383445083264965258051847356096798446711435797040605658681046832068639863967928682371459857127944919727085925931370826778041446409954703051976733109353802483650501588864224724981358406887866324843251235982301787984182914742957306273106629240859822779367948500593060651254746046926821348448461611363845062925736596188043879212835258744277708759161168591679154904151479529086984824355694107464057958123174617488346901719968645902677357965836961119887366123965291558568602413160986285843780087521849564929532663253781480920883986485901325412731662744112327187202548603464760493680980924312494195313097595926620396332512080532598459159764089627791673721696115349159697788173461156974175880003625337529431626066039003169251660296767761957466841140412082248804053345310782262131388222529760664162443107890345042277122482708595519927994876372956256788238945903692958059922746342346475402892966420462977423008988701006990240589441993247724923646606660775458984934844885011452205215392675029579418209365503383903899408042912744244308959187755265113990768121164821120965316113967926991775092377299415592102876395662972885834139671713810920356699487673166057894555556647578375292786864188788077980001868155246602193471343918183226375892283694343092776243999955295000553084898894078336563369034814333381662567713405125027221309478095005985076184906111259175531572381092351152618358290533111573772363907043141260834106351009833605808017110516735893253051834284671008107405056814109809980387921858138568983096856657930700038069365831052387668964440399992714825650606739149333927757076212280564148946726579978924157823339201216014203488005145288177000426920017145385963279014874863707603401967668919788263177100477621249437970869242423237189306626790344013838109712963076463232372035506468793996404510891021559245801340441568154935800781261168553186627460815441303510288830321496002941532729684891726753501782585914939800948964008721196870707189897463527255407818618518022821987650914688796934135983385369539509624069835851947120921372711559172611395747918986726213582583273742206160628711878114591951758591151743952038206187433947692514340642754897164515828968431317608692608088119154004781907107297860316237245877145907403568383997338427248088039558567638397498771223990178658581229508177233400637716044329735798110829282795953892543956934457806407809827495395048256408681510427717137130792052396464295757601555046064279165490893643127550551379858167143984806583144225964499710336005378681031576224578982461832814970168877578215650700085834967220135999103041086124139304773511607231789294095528231530088974272043405173592612701547582765759380040842110485375988735788151561266443173345485076601830251598968206736978550971405606282650837469530375818654167665866635732859870298150199758985470083055530010474350966002751563950181987147526665602552760507155170257025298889095993662763919259042341522849896974945266008287086949030734111261970460754118779909264691806375208496704493207479545906066418948008973624068364369267259420911414053347803002172519641459105737300567249647757186927977709013456456699657776798457969777230855989263600370912026587090491827983217571872859471405071706009763909425501143378078712954781967183089002851297700127754411246221841372935766449443471397486105863921114178349067228229254273556218344543011718171774645213268675679716403607223328355644786032220245953668719033014128365674219351535964185731571557296851134247689471640425743217237786040759283870363570211185194049800240740725871885800574078303994868303944390798797862438976542569933773078653436352215150018642592041633919113031226033533273839777141597735238908311020603087137586780483423706878407999399974882988466982839926156700893853805056928866961277657314512357407866794947658058294780446082162224009210876210208565861803657992917546229518745505399468011992205618021222199297154582138323541516526897663863356654371367259086395441314248591780126073545881310133750262005164481444110597519047832654409178531040269380638177465975249431638131671563776356545637123623780773452744312403848829777969645125318752474297431475554761075088667690562906270329334616533820356000569176663396418176511676751266187265161492403240106104976123044704208349071776470634725511524978049911555997613779957543410024636069976301973066534997907305177605963310649141225073302342960843724052634203745050037871377905691072726895176291177193900861173151627411008103001353415515900880975142559259318224761193047626984271181983531241012957504449700711701441460161701642131858196310482681768091019764090691719660727367662811230978019926988320005218744754812587836295100030291145102354142002313965432775499346512903599397561076718447650426438239974253721268381369821676205448152056196786462766192397099365842197794506617067006361175691065944474575972191345293685209018440866345010606047160825008844318556832777679709399163700788384989648957221443343100283985838428509995934800018217719352709947994942168131267746768359001433516745476427101271730844671041835316570614016744559082852733563643509208447422266803204942912574483453497798662213281869558316939397900834451667457476123774996572250217674936727667095146509271181095554994884855312854907548480014848039739949047611073342251263728666078609076982607577582773419297146668860756424768142417138065224208107240850881521500507442077775581369968281880294336697840861467335798634695083156396080426981734464216938811713128522869382327556109782468142299587114059559751885495908313797958642483876427732838588124616193021435547467820297937657077373524651713582598943217392184994328950558417267099532520916974039737957700019575734408721000101916199047951133220282136784554000843198407281096278667962499829003905906675592514729838325384058655335370928790561133961009328608560950244842113022483469069720014526359196966468423052380655252221991061522187081622786900877373149337986895218416045760332876185724588937320133779334072641796990706676903020007200631048982242454895920451292791002009524632974512485564317993883242171669121415201418136550744569707204311305853720725362880915797038466974604679830872091267742103630994413304962636812665649424014180831643959089129713183129011130640672658856029325059736268973566914700666023558245030575351386954183586905444930556503626739734372042323132737279841672091153067885381865121246011317225183735068633527461371526242055220635907691479297693130980700741730599732555779606575434172229970150816616172606221379774259647680595917960013642950613857571919412763041483662481623909658384378928737871542659148052676145507693298747285988967370117218337966493268130714671381762445463519979040561646046624098435659338666400930645674418003754058421357392745552823197741183828197910736572699599556663439737630566823674086310450785189116582558675962094664438673388314492695914122629193447646303022068212561071747898348067713167558676119661351324705004997026086684329942615082095495500621364815539029354499687717114799842220664912341319014050747468323623013091802178006863919748470825021757458550904806088669539836850966593002173200093214744652621337177721792654194139591012878826114248525451999941360149858763540047285891535642430332254992986361337642485379039204660478794487439104807718208891164219348588576817955203239907483551090493110483912210340810620085976075443926756049892229046680295244481256338201914931058622013309811327770833402231558636704379774377893007044137195101631934171813009864484776658901650102958372015605980344684047092336152818778240894030320541510771954858168841241645381203831560437031341253379280085652043562960684154010907051019880652580905754026938821951637466104902182572561073891016117528211313122383626607786025927606504310145544744165464769732438544003750672730066302322355109139822558439357961987574316938935556388835570348608429243933793374294199676508639601731916940540750478233773731266443814416575214992375979852354619099615071534672460760145406519549827159159012465107985384588891269323496937077708455346781309277306352172005226677092797287234089066129330147098195378366802542481090978317069947916532357813596190716413431180855363563161549440860573827645675721566009554537245349183512878235523179178307604646346778825067145519683228686452365635171092348453702709859550495360106842861284550983405097877260413545973837289249013408243328893522003170076394103302603214423435929053031696678238831558895644918554407184856384872292194249443856575054612968401198660295874238808144628789620025694926018994493456457964984471599137821243939058389789562833566081896202946108375329571995512701486242481865825960963773272372511666997125060061375440967701772018779641909469527809045784083206895235644672869606099291101030786172799904229365442502066585926132778178206416258414119001051432719423563809890971964957573548048364505333852377106505967094557854450685536390102002219004039737250086255060253266159490181712399131953832514176186347803314376117893300847626741571775189932626605287324258003796528318879646199364975831332463856422726863763819437157150421378758110788415118980960158455082408887690316106443227885637294089608918090613159248039736906451175380334202808819472794989902148945850018755621637866339736618840082311063092190254423200321462309383747551721327584200346937096584482145552812845683497096408284802478668600697973449089189252709857640797940876316810433475660677807180010967447517608360579168882530380439000839546445178922041929997484276667296246828088819551220624876548526825924897286054826705703227781326741540788851166791636222666141894836184865000379365119600037428270984509388240008458438062021570581349227062243355000389769336604204722148683299773568497335798274867798577977773806844999958241656208138965065063662900092269530276615432160101222058149393052094681499665877345595505952739859420085649851766413982665460391521415104085270695287828592281539643474696508056301955352294465694689715890580958465114210376459582347012525605892895434038329139581617817170688756689159617313839999774499725893927282456768685031983654553826330656432908644342348498960392927071947627332462551789010705273105717240010407779293719236792236113437455035325791521905000799930704559291671027298275568553672476779217136885967996838955026654749548054044838680494473882768963488790904695348292939267417792186144060429563641606455601100182621286883079216375961473129826231347581072739057976658143258078086012416617563985049543291126077649984583571324020009543247015671041356544819145337131738500499160054529856651549199844766972591103228873113463653198762844962458625860590023400418956813522601237430638709673859128092772389233921556496927382959247943191319711279548776927067528992065722493194094722890848131975352224734420152928646847974480432912119122195326646285382213713569975334691964664175558234965137240138740380841659809717047793431430010570867939011806953557223644705240847505241857209710924291207449927579300241226825896689506562679915554909847733036662098359605544026235537167441321971941845536441128505920229324150937240224055446675353624229833412728358713559722100685500835909219733643923897416760367855559301329040667848101314378499574712140342421526631442119169651707565468775878368858582514935306730085346633542445234290344510956026959916599632560043318326521000525101936224649717480921397919286300243803758650111598504815997411210917013156727218389244147712172126445527823549580081857214043868759117833610410365989482105142885894268659780634545463085114180616029513625903979573765123933920089203484628213104466807353900796658813066433559358145559569660487679041569016785800564991306889602137688122905281214083105058852131624254976692630084258585193868912902852951754438464518815797617350030496480133833187573124565200405646986958074905670219530688788628895698284740625745015794307292152852649704185382477503561122247326003082007040432541186823133558967934589072744518212508735592772314167517934432683848008495972257526573981588180840605311887050604085291966181376549357281011997554634377351514379117155921630730162723166464125245795787181707458508108289181453742080060388633516621889266687238989480263911473588170512585071577077858239233237509939733175495789935573172663281280610214139227361189490713476922751765183435179510455916913838099765357121195218809671626042135936993132430525823480014636790831593347597151098158033408272456392372782642807655207993544568635550696363938184079347166038525426670423502594158391471459792062381407542618404528634151602586673414984158972960207793889826230270027168543148692853461505826374901828039946770050499938860517155496431481503534468651247850894829808956145577238150958716049707905309900751271517201558478708307794703056108841810644146623025911814106642924173881224510685647002797315753511015136962913119306936230968553480830345164321828674985144055778426157122946757808688424416360412758910404963740087170191136939771751222459025636106093410200156508334369515737942365483560979376038411159077830059963386510445261977911002559166256685030116312998842089167590556542468524370947227525605819152891213591870519599965181138410642259618174518086206231288140806928641936072782617127189099242577160530454664431146051563531933023142971573525778038812988388058278841268376995092427299758439737235331759126211082946854100574527228509240690274952690475782986155080686816599879726347363197891150110269964848670008147171174373360278388840405804532494028391725560773263674817688135112542105949128319405037833587375232168883285161509519288357659325738638878731524877472285913772319543111150011826457462857256924866356343329295264857418492136990885869892294262708413963213477895697303045636421709944923901025306978011931091050355723414129959731388264500554827404331591280643188945089299326865517958866343899686434849619451013300556188453838817046370862724187467961473393180195432405398299158598222414556330967625406113054344690991208519998015368389994467250669468470176388868982983510395957800058331433112691764378663396927908266007500228142841948361580176651256017930898134307410868513358838222218886159390806741032837310036187562083935835891055907841016040260866102950291331685127061154426960086438770919776940828259796801818714140326394003864935041345925527681141227741659116309244119282023888606585935157238709443192985154270960941112848304670265171285490255122709732323159879148443125242727106447498763490132796159630114515095025578877940310800268894308398266545757668664221501315690211062608884776370044274055218645579045285518073231632181310230984819975642706741687913162364662622971587966460562082688193949183161734433223438325112921459928528111052212323452480095071814559662369674853450170755901290448582992280034905620248365837502298504497404434363188270274794898405770344819033770543902902895815621009904965103123713688689723597995181949645241217280693421837057687795452780830676758462009495546354722225887530963837734162497161566439612820089241571994784334934424544239712031408792843780258157643489870502245128837562823163751261799652868244518429884982936540169994288890032852390979353784335320584724472646762599944660820443254138883621460916800773762384566997532088206305254867564537041762689943578071923602183854494000726678381946478353030117604461786359605312312887828268318746871138089567867557642354426604751736108186054107507895548372558325901997996685757201544356063885285662198933328485587300408886732791925040534090881740610021143340396020846783272399579519126323260762145902172265826059077017451872986238810463280184295292446374417915676604292166132357680833406068315641512518518852759689256034903559154475116882429596742800306963438975907456791575007287220897000085168858736970801903230091900907106246031354782061194409495997766055935375042575619095872841031401313009268860319116602504212620140787708928853392958331610978904091362204055604330097105175841216645250405627969387630115521821583875081548899466776285048833107589210093822103541488099149088960210850202951457146213854467789040391603896346762823520255669189910109366348157311606456482063030281155338266498547870769426420639884635573558651533756516909848158710316406859407115271759381960168764073199469143773355833001552549241814729825655273646128361016307597061172811098156561985884730164592433017535541816220633937315479663464811539960410681730595602050048459735164277002157282125435327471635861286003834490406544901129116395225802037834814663125175073288702932101042668752490862874116121962490770429530994648557762330109292869809888473781020409546318477598215430905141454498048928477702933395386843556621284984253159509883261761178301692055167486229734265058981553923680864920811601639365939112527413923403610473836277346112624619888356711034469462184136843976889355060382424885151823305847888385004073956594300317158802272648706901366212721356263801364799709600082410931766030391827510185401446832569695138004565082420920502367971077128728950574042279133783599830252386937985939002662117184411261604627711646852956766073225307899432061487276504176205823980551970286173365667202708256938888691333486483601891958757502036145630689785225598644192793568039919707455205019089155951927922613993007186472120625450126125994998826442629558434018050943833646073917141468261178273480513454533393959239543464025881484090809812236028171233079934994325865959999197163300867594225542186992934121723967266231001194762043350220592868849462353566491013697356401704215617458848435957761507632534281401687718979495242438623353210326355435805057082126605249170959581391265665928872705188853741559246059105145764418705518319439097415058543086635079214788102727129042481364913743230559328733950028778294552802778578684375987873353049260187042248273557394711633919560194924027397097568215823163757506500348309204623966684785825469959282637484055758578703269080987372241569541008038696548870749429914676036456928756125689918371891686615331026783775189971988326365715039999717538008413437293462897634448181514208568369595407836179495840740496855199435805502437480421086375127987062220530923867613099869242039545050845447172227858117078940488981403818866620650275257578231242031877244299070737335887282649360784117603103549389469019185483611882209855671151089460033412865877431468560218724953807206453666317667667088100466214193631771545852084357142235972052057929426648315802870403727579286107235215136733976564902585886592047285798328477105083412953847895934305651312776266158361839244650776954678186946584614974020192175034749829105426271550651292256781450546623597144694157357639045006807853043011594819254678373306411259373523787338978852305196292426446502713679460605970995743046442578897839227286771505288644221479001559433168995340565690766900134113755461706094674227811006836320728869180169963089764456493593312420909186103242661035355383031906129214395525112942413041168528092657479663323280937321271350932533227590638986374044630871697002762154867761020284142449436790862164690864139934325155720846727891599737736707839771643115234757855280541553813120965783346698117762024418758206952891463075405652837171091768209007400077738511573535106808675583966914254070185512497589948539041475113168757322300659636854027521249770916225484222864396718522187206295119672698257574971810511889499368959558600810617865950012659983295929739490878474764371654899614427518263465333284445082337290751357440913443006903608943167257889573839612977789903171205908520418216513084278882795704199387100294158088255378669880394881667277454780124474636308322830873185488938789670729175329030087767974998111078570883641362747993956349015499507268454888211956403099182670655787244584052524875866710972280170614017486265029379721458814411098690014160524357844940145796460414054809520261275572936130540649756039588193924847064336991907626007881118287833343703507900018590486123112531477430667369956509963633996757346698700653848258326355179356865690916084467855087427123586083057691189217509727546883171127198033237233067231354339270791613366453933396050359535110225046706698006499043553792037028154549661444736098260753191986254627298134010267670126482742716917439464060005640631144530727313341291341085436951193637267213063753790031810149066242433661058193514222024823386374800967449330925976719462974475818645654116848944725237732260596848691018493104476822834528327661285415973658025606056525156804264768252850738402794010729847357479038650787481686691488459757360256358386596327671064654380386813265064117830110307790607431240721816680550488141067179882105230285523598101143416052751028321720583636097003759120060630833893615113774393427109421058473971736256046511951511990218686549052466003284922872343899151465087810145626999825886219053020871574010269924356295660821869655095885038011896382515916168395076393418782657565977973986003314891996385851192565439444474658803966518014115979512000737053556055310111449796929551631592686469934121563816535791890330971277503114449073380259393324299814375866667148165182463988086113489834582801062939579428925434923536480644654584136800835969239074272467285841076740884200966439156172100163882485703491730631785434803600556445075230791581813825017267103852620630506939280578810629040179326124423488752768828335918605216821420083836121241298170703045798105581752934817802044394735536381956132419268739111178061152222536668677540753506537641841193238472532574917151419944119442046433803459552488716718761052285264732050517839376992714900476315686482814731993527968614995696280354923417762962407790308711500662532718096796780504913589815662632786023110201612423619395188321303843807109713601402146723008131613315164486774347807779147109980668661861445402979697409840542201307542632683712426357933949346468944532286522887006824694555698981718933268822735163069493711854577731655899075062091101169017503453572962233826322504214392865019466091932382266173590433262152941281114952621093857127369641974501937738595310682111518229714039058769597008399027245531175566999660812162827532744465766008395778871921791611391291264547952230694360698001148445807751891240704013137194069959408346890299955093284776171792949862975928085811664251424960172594411917763246661152058523466906566649137589802543171481889932211591452908873455206176401411091585474446871684351690517780097456069864211361801814462493495088534353575583787897764964397526024893936351962529617601302956026053295234345033703012937929641656384653736168446635714177399287313391172631353369941229284737797009864394165835072175023231435411633821539256504267057053697241098204668732746326166552489503734475524474354277971185565238937391986757940277817268087620624019525055744247753524042929187603311814935591030557372075433430545164360658043557383674173598351628014889660715738616372874821807922003394854314554197543640785865549300337218833093192706176412300566601264864419262889091637689004134267437600822229468337264145580954595235280564945485672113241703397117029063537337859109399776561128623545720302356523755034610424274069226007933835824926491458053415683813856220341009383358721744574879565234872657137416080002528604488059663860629575214590406665065575116738474447841790931983271527318219231065435986635411044931155567433127472353762779836515406077204869699109584128141944640737279272550168330482903684772740079533876943715202304507914912282080568436423906254623288209318770016774212633047061163662547788020558724200697303505650379572432972647126406692929885202972547199281299262417231866370995139865851777196261273169652824921657485700900298654468830377505775050689954557911335300238923665258568322513709437667726496402535624471230033256434543987569380628811971665824832511652832200432009028197583203683470035136848010265456851210060036876226055509617174829146692511457622423725739998678385165383272890323502583124152883675161547498522522644221452495988617748057996388406157221970129528030371944311304756052852338521197993418616466315530560326870227554759796203942089018227449924011356349153935405303649949439980800213723122755158998776962283430695478143083191795118793982523833461642509167408401345905851507373963784643794570408000511823426459908728462461191131912585253146188768364778697718835766369098776402164478236413848666642106282589358840839807503654127131331274758814401337545715503738198791442995005938422724423897650751026126201467335862094941579264116653926382047110617703583236131120142456330480895134690344675214209897476681048974278867867222459462884529967550687020059569986235713290931667379407344555141878491858470251392891801229877408099484065293369421853653241230033616934081521699857443331262121107466282988465012435547459087265407009972757929330705656152163380265545736087447641094802117472725520783831420282362932329487887795955258219662100353514217126706438348243426250772380182092456811248202284296491611452950346281491237937736966612411568420656261247665778325033433953572501037201302483464798316236829616763699176567433381603714546883297353199257339705629430269040919325026583299204709344583663591346583922483286676000284128901336496866223825731534830427511805579299683487976767438796382254757448910291970582815253538314946700347429526461471752283513691414514495616490582329742080417364591658645605875342897269874577861218299577354305255973443171255843238450493090784816603197571607134163701720477922344018272583620708563212223046880483698008899054309276027231122217941514393805607225035226590516924447888107735779752433491816554854056790628854256141488689926971674876503719552247882758977918955284558222968751082448425854596280535543368602717618587462499426965570222065443738093195216069013777066155028391848697259861100147991130229134552711145001380967210937597713118547815725513488412055885699830583932295320619052661284943027220431233536225104933578763137012165795853877494025455036937773126729255222406458463070745511624366933800673286455887717067107703325050264340948646590465935539675063633764230926899997874949027952708090706645039131461900595653841286331549175165656043361078870905111664215851324890080624821582592960261400923701047214449027870853701719634814650513245856043507566699226868244425485175072137544820113620329692001795171774562198712224546020707942771676627282993389987368412240906069649873126918383632661134644150090226402842314535929260806206829550101034920895964359839523297191636080935556724136062009082501846833183088238423005317602708139261869702259382175295873824630449225427476671827010779599389247786551782233974309294991363376094561298932130542116372746700975737820393647507622945465797679205444570613138566141454584856209167878348268422343316374190237579764638624587449046239622934340631310034619715186580162625417115778691101269165466601164916355964675135390644124047518543622686403770870102723019887698596447873924784390346978515710408799775937088826078124885222014462928273624765735784484208266073908157280878828450291054817965839184858806901824852439307100163135270122994942054151640350401788108755556780586009557153362243999407584396354084886221342840774043577129940751028889042362006136688611169408336221372785741272227079081203865472692581862234788494214089808530408916085229335240277297189594775020918667641117993832350676435167297129838663200312864506601429286180225554731593913120256986284866342836305753603451416609016757547638421460347949794225976721723162211636351494630042278389522330433167668864117722399803763448683852955428592145256421843989606658879371573192164596244482093116424713375690014026042241562648062261544890422759043678185428378207256167161725093352632746147781825078638938962675937704784644204176856422678189349230822359754675993037181881964118830687342026696771573459154130781933116499749910196659611548613806097539608490039081181890686569823500504737807451167229403999849677565411346512167690795020609456231815248453502918556325449242673207438170280641955177858226516799034862131359609670703395614497112498659803830098672664173201047241133309994483630086736295722583594413261304268902995873656389348262768695149692865629364094870857540500429215922079983252091000642046456949065944816001719641375573544288383627947841987477121792399100540162490364104182969192285668355369573625372569935497965623973141229139993570966794245890807555559423164467067781717222002941840439878446559238176695430837190058874856114722810948078232298979443712861893612156924453509884810377490248829796886758203816491806131106490061453398086267944830003315611447268509822838744038761368701523072202767107089091491011695969388463123421481694947855004286845560504839414442083304278492413952204529856448847759597031362959319758405371244388185325770898332304772346147023291019043260066643173726512927612200669113273260954783915261638827274369267505196336094242103228649890963003859961164282161675270584978904382943529283892497177131659269805089114892553186174269317536055718351885545893318637726484824433109476797268805150743609641129651370626349074239463799838496538500682100809283372987196780657072305199974090790137112148779389687161210274307881399407192044218888160340241746699705852124748221548573403990868605413572681114181348934163438509764776885606485996847875799188188081094333923125629206664577731059419857095159067862206938605626995388224592125221683598425250701026050938039394042089815736953170619927287892369166984521465447792264075489494008678712877914764226804328947575666651736784922307014727236084811799094840305713561110929669782359228445043757756057143747189365569803377642195551507835618002385176013788664231898153422902755109537339569246694621953378863670011030212161413652052007044066434362093812142273314042590271791385007034860373833633089653787882893240506336235769449182577949472412104914572510344633009887061537793118583646169754596135787903607561670383579745538285627492671303045488171067661525199893856676916585266422279454834684491860301030859131302393426317493212383229682245658126767073060078848411989709571501680189603384342463087214798998075910402709375455357433927279309014039678818211340347502856686945990652472637967805752214125051778005820405315986062539161655723557648047145003125232512752686997722943631326432380349712006930534844893661129072181690234704372058070665534056082891213138561758223171525740740275566179720231213774457413703442924058079566688160416777909957543707151442496601743949699097952324800527144301189178668936718647480240838925361093681608376930622695739651175346709320817784946157396918175398547508819826312443589647678430616838707662279571959047830707036268365771363704471771946552790632299375722823747094578799399135934870860992901577414203450931272515897765111322702103227793357609801414894441342150174313408093054628948422778548659035138683972805076928454883881104377494652886819968045513280679305129015794986296717022728038900058985453081488345820183637028026070446554735223595657400342017189509514805981190603799622789131644730737711754958397700943199147625595618322059941447544571078317643523960840504962361366149669961912712860397158795483898460718943256494804535578809909359796067201557155551469108784335291059301268307962616812473967451527801650691974138956583746729900439777204818681170060095857443399811151602911248889444373160672768578102903546582495941570500214788524427409300734621847163142144005911750338010763104964298444451591415821483870558622947083570611000022156731176463296425804787380627919677039807750442320839253133121261134071066942733275415120342124477907601842839746682386046145624530943052902619112899327349651748636860233018070842775466618097929623281663998974576487272316299236139927174555273535108557910595569006617323980425821131460467587407101775308950915092369909305644620989606197813708406205421534471995553888101013095415868189769538431656187776254448583147191054955003446900035212726463210261322677419293628755451926997246708148904223545923370380525210863736851948012269617162260026977014038416500680305081219906101320272711481145877192749439486486816659932096330047100914135989915108947249730674826122241732978583572148062067131637435183208632577188973121004171549217037479289629756660159552931311743293822814996240341072479512317965071150498652409364806598115090130121834437604485125426751019325886930240792285484189067241427030392585719295213124754398463715724653970910044571314555295560576651919873574448240618826780922683537081640110106630904395442828991290980252244048308048519397576893056610968927330658795811340952054735595865970651815718819881473649300093445945412709751943333662962357399854790102813342266796057078522475383339546970234955605316046106745097947594252936885692525693436647542361472435107872385314741417642588081380010577978208798421032932384069675494571030701792473227063612260459762807336122535798809255459086251254355600933078427200338283204177813159310951590527260896398815334853077720425581473068092220572202711410121980709223731129353933344002475604470892740275851041706171025855867674940660703189960662350463017742430885379273844277420515721139349458161831631073367197009268350784745130859159506476827603480588968019337477125791359649462891960726346011283657478434567728932093881235978275584117566658875750776784317826907393394302170484269571124405564210910400631602050887014752496583076814684433296908239944895914705811035473872607754623213476137950088159315280768028612126701320324689913580005218937219503624098422504994065176291327006428784048509799344186147431617029924094378897719368451453128875269822073042300547917210337206944100187891789543724453398868020379966656171278128428550633228097037184635412443603326213363217136032369104846250056365134510055853544812039899749707615532263647090149912436944955796704602126460229402013209799222896576192046017539478311171494950231483980367925053164907888068878060361183607527961764234067770761672854465655493512597790971081137833035967993134179908375777224726002774254227407304143292107238455389769310385775316106406844554943622452313047849918652526514279328162107285194474796525716644165643221611342820058595947800351233082944502468343147103400956350019895984288613409953378595388643227279334047520979260894894484803374095437416640384905370838999820660792943562678857465626804367086249890826382309109350630392250513245864037011718333565353620682768001198920769236967545161000534535869255815684711138440312434318191046590560273132234722230426943036841379028380273655203073029606990522935587438461492622091915464889668745872057555852702553688544007915852262792332416153893739852970300944477246272060593591756634981435619512681642493174796271933308296588712704102356519289635898977500786455142948128119933256385208768935314703525623570261917629084742810259507206755811465473830620496020895402698618131124293868529984736931336684983814848991077288548714120423556935438534501487387986055394035384081692024360602596904226200660027760134949147575906668843718209915507166617592151299708645372438204082679821336573484134313121679671891845881261878843704600212759334906386993442666170297430827781620327719207898907237600610889612921616994775250090081929899025304688308666181506225574240259176007692175449352679275391779999062456136902075661586656761391184008974448263128940008234982836414883561775854669781819475821650687471773401125942630837552851792851606366324709652829591405537733819746942720888236818028946122001273127636562869006706913384776324526203548675758170602826200528810137125682733769742145798520998813614761523100852379832597970084904142662725731818850897497870812942922726218905893762167988030092257814301474279744537758912528897891645382549556608318546079678724075632021822367899537025943805779660729353574188628164609160486148646805638436039234298082576187504340961603409193473815955203026308575698100606649956969452066993772402517410495543993338958586420770628525209037698988344887651695647766886242519001433340171034435477458427689174337825948571147195248249437595794389669287703496463760644836098399232561516440571988972050796133229987304471377360883127838484851658210849650042235515801340134456103928158057403629981957100984154706093792013093617845256392195853076987665106693539381964517643899735263345789503711234244341200088702954828208390675253875133362403752217119920891319559998946061595217420026094790497767915600974983756246163965759889753518203371971959389219947865371931575828934622495351100529461796543732538394299650246345890065136239249585904073249562327157493933041253372464618119289601358400088478589590819806174522326706561259384728175334874132858974311664931814649925568654605403766029500013020798210259021004698302295233931688926905154128991434097812631006695381057704406084567872328316464185881829367226463369016956128979750553107741237802314510350963305205128087746171739423340197820762867908307523089567378856877189038469791524070586291229586932359671631331934370550329842101109916223325351135566687020643090615464128236539440599890656911858119690856650781285383957471293103891467534024755643317307953197682405505365760081826913487718745387404280172648952337389861028344429460682155917181168835456618610664352918311794293609496328116384948783222191410729228523452457883936457186244789471899210547287138721273297764618993286240348954058667525849362767689333776746103258983899656756542271217812047351129018144113872903987155564232549549364568223525366324236486653260121589014506262236299481190035281292115987094937191641741184943372514721198536361716751334816176810285004049328037573410574640573341496161214631043998475761196068222116875473039929134464364235148975009272987869531139159835677568943761880385005012772146650046289390582995164847841410412735730143142272434811813121163659711702573442708117398256846717911520429268819527163054924319854495756224155802356843662978906773507038828737459339728323266190318210442413996276381946820760179400997532258172517729329911705303348502933317488479145775768960503460148124078424798830543187845076502742556291869399808632263525712158076275159000377780561852386270392120674797344982083924153678983521394848606058450996320788594338542558853433473274465878644446422474688789516642013471004681486637702444818713083996322683631336046111688773144275168764866190922954619811443568964524822746165629287516760941671104970039033391771032979612389631646473533305668263898721573803040031335251209868794263909287430387646607302251029397887425514775926043766052925508185908676274580237571374253344598559422336500684435474838286242414942369723837415578358098864729350305343989886150736762806446538129200080860648949546277455333747113798947570364104824980343862654165956095292105144009888357631851395873302952506545429878749291594123349181563296648650453472597104584869522100940137581840697548944792922988393331853239620596351409783540770416525979017486052068571330008731012400550873693104591325417755721245848282809444937779999978052665122357878157777567299938329745480182244251653192578789273465060249808332653805876281927379141160748489194604725521824255332260765813915826652183733128020189223664861829545754150093816117534194446661820597960869327113230543772283503142122836760546383913064706482473136829518713484573716865517509394255388350645542741441277352661724596844893754114437240683310215525599183193813335909923550432798391678058618016963262776374701006709205900571458238916440532993536551168163688492969626556125129749226408809938846879042864515209587111553937582782036450440839557742943265912027107716734891794292131985678352911969316841016533434152037083928202763095927623994374201169337013090636144671980213994211741638305419375531086733189428366380261540222442707653614280377782483436967914131899891790395467702835318771327039620577516490131164454896950373479426386894688201587098562928924849242428139446129081879428105610921588962000872619039897407485621192830357547993984165672832515234810511854089892119676505232133825855079522387480878964172625408903072800669465464646363189127501147999599447292624153295972064269091170003748520905595340334316447852817309432270992088078924718126545390273196478954493382739806580151148060782759122199629969520408997194541842410375595286338024072921759558307624103988096382698437693917474494415773458285210826540187142329943970096228593852945324548038681436091652802284475154059715552386038389929080204360423002284236475070145275864475783481081765448032383624656883856952963745617357869693625432780135959116494969648637117524017920621329896948929217664423757282153153529766018386525250021226115932779465704827090558242066042499777880565839161851249309072563596738391464566935280772232249648144553952592957040407028451210626846703906824312256284405439176527274528156696872478653404031690744987960930308119180899653518350939572893296019639312009548813777408505340897773651400744481732272391766463609950381247670549524950529372766646110904146558423962194744253380200355877138818405777225574411757545553735108915730069221758248684146757515059782688832030591328316557564354526406532304871545887133395701552114996986434860526628912493622825275637180266187395987551042436019592743113724653220347381531829103747145591372744880214069675162280455883033979832432472326770731302106395179554073062583165734608198757698039499673091997815873982797200555511906294806373783767168877058891523321352374320022703927404651659261702071405126618335241916006805158535207654959749992972622404999187883099694692562168976110800917781544452333959976053529054512210793810361723999010077667718931322755025544077935235991983414802560888749420326111482056861985140053710977761270012007723046749051067184991812075714448671119254843062871209886067281374416542538488302271016786514812051719570779280799089459048803098739867300573145795430630866256234030906255518014912743171589920704008260903596333430296240062068910530491128888365632084270850019889451341851357365067956018084238473468925666032555701891841570065693580420424019214451609377516110443429604097829527521211285478023237287545960317620055316155662938170864629078141073845526330717646872155759743974127448256585325781403551621961436755481989688061616289425153993192171250198924084237381881054853674703873160596716653391053020195190532555064317691386298639051533400656292005653554925059396414212160001147660499516910485248988489463746001174214262956431821178167622437664596709848757708864843980282978729733750865052115217785709654216470938241676404524097589070304059491880058917169498268187067853992473179129775031942201221738167285219361789200558614545130304831142477874008919692312002997337888505630550682015050773164803826018199048484450144693759016460504848961674553026382268417977247754653704363220762726355550226937359811887773631824502882970313894576065246589101520331593006731196756698048849737969300377580142141065425865053083957969751383369508366959782742574457242952912126101367413132580289271347760465309917206952074781179058186310824256195590047908467200250463602668429035007176727054334008545778648594294861319564948070665018041363802375747548173815577057634524112754678284839713585946669643603960825900178520716054647508266872295388839904012878357008119646390486327142040919699868870547480672474747982122460477425526582276643196387290984404155120956042684526127276645570628502871298092177624487312891510045503808357089782533125095759492877448615821016821403974028467037760056843351623322560271688837663131950198077554498921582461719896772377492503929793844414413111595967253115049502287648405417013736290983182996826762260083016872622685873338089962709604865228501976511544626032506550111005291572878343091256813611089743044535313028865815928677659473289935887553794962358919989793787905387687303607927114293561132000891476069977136034175975058553952277832177997951225439021596206671849336384901989372099311567439462297906431856786804657388849215147650820690774569224165058419785591929236114056759434748503556190749324657265359545729952131881644986897333227553838409441990379180692641697000002269332087797200224782453448475685987020726340917237081303928098896679219736286845747783774603785007879975635874803090358754405722553739324495117789115501742179886090201855490107735523261834859971132187774670331281606294250978387582534691201776927557246915955893381279814772085924377971247960527578897198524978212056900791884489991824814647536019875130491463589690662180580162658112213323159516236945680728093484343087499671793356810808607119252421700694588308404096553117234917344990862532434078283151429796682204007172459508284887411064282400057431486216977172731126421900980369077343325406856076827782367506687827690221662418490656716403967361666904415802180846190204827427092538775745791913280452290381826382196849955798502810097047942160369209673858709659362528167899669008317238977644179251726708915680604595259375999963061485391072989845385906652823527151714510545660115123143632744179643571370012172347899360959865310473876470480173932656431910388116610830572011148663036170795536421942676997409778085590521014408068015578150540477585715871688992235364334279230224737635772602883402081058329286708102710495526112596580490246700582936217121821015853867673730206099074476833504518105821483331742733945014627595864339545243625296549747160995101879699947846318345199657954968141747622790065481707342334517229985992792402169041950830469426110498190028430809684714876396229692016946763119386300073490802802784051371446809697954558104160233823029926552051500343213808510214977914031580712417188371794317388758999867958625141604849065029560534643092663659729494458352540602392428139799693857568236334893201950902208607226756866995943819271626681348131628195336005504869700111520994234550361875331123452840921439560928346889273756774866813973381038982484693344391678783852927308624138152094758426585830141101847717466917146463847962198532245893372523210503993107026182887859359808254728534115072241719014864488957225208361063920451798874719722388078550352198274491605117009077888056035495646334085813372146377296970574513880867608552196830220452798977504717851431945965292828366559503702458534438484732764819437114151438922395516583240195781661217146232317472748331684579618567080267167785933139413690779956166211752394432809323115465499749234613141533327846890902142844075761002060517457076032162355315374539665234853132689119774773892058665587576211779376684314647049915979835767824223771472687443052042200702722514537777161958676780953362915905711359257921229765250920553360713659668668101567796652449255825760057018998586221238291657135205538327757662890059929184094895549011259265001035492471301354443332445305323052985033769441089909826740881883797384187702720179898067174048147762727689148535751876046991787251970958964910447657049998235784817481192906734780142052108638086573959110841247595152095193038290794188910427333635463222793681173656545718542212571696494977541607976879139855879263016271960083456406320570036013472363146976857965595579680441099792522764746768376590281754451835296972681364975870023142505797716519643086202540570999898334420489982569376123024636782131572748629324892495301295585813353323100147478489346294780703870417902133999845282808006333663840760604438610858082937655804408582980094000970715874965125822905590201814677253053468552088973114532733933612224676041659909338582238698484732947503759304798176938812276442928221979111755601765547721341070565002227331749135105331984266852060223277515661169007529445672693908543822277409421797737477928469727921902797184871664697050253871261695402277896646670183921296250013476550299468495943602306271744540200583347935116521815764117440837638614247384932881559089339070625340697146018466586747417652822445820990625810212974983071812507824434098635616338266473494634771333806016385020007999721200045254294274169514969097343526561943036400898118976788143639047965870102571465238226374106455276289464732484921106413682480129072781009398912457960238769679809785295444009692044063873400288207063734533485389970630043132142668104268911603036901543471850870544177808107064554491563773334715310293370872538966547991350396707376686910875596802369618196586033358811109323833452699820782383070210235473862196661359502388477113509761542598502342954019992374895026600907779212882359540833944620690577476981340258044080635642209653957030249802100080158800899861327803669536409259386795088643725375571273310860579663787760829552579697194746639185654407723523809782831155995029484246993307306499566517073670580415406556898908860236070777379311981186661253597764538382462688969093346906605620701469479965290592800795513177422534052321413514581720956412947378360015835906870044387698460467280198223723321767719037100156020446990759053667142285920887649457896328452126352575971356896861495082034770685493701465543383840407615083024918025746526459525837124402974696308910693605209976025047745049488323715932135597611035596744968610286082366046708682281632767536259055584441523622535499133419744486238829549757294836941490049380673137704089840806150109870675013858347470915842626989213009134610566154440594024126546984162905648548299798613336520065114965095250120576029484423998844702099759474958304652744669167958603276411275333342771571070499945750435744129830497702633678927884241929048685181049729007556443740505634931314616651205366556365703186895362410419105825676417925840321468632421097388453242270177920756089527348422337745376332807980143136021475102422336601251571863624305847574154950848818995062957110901229661621415071316366661565329000134505441537129188060909844745790995158319988967760119461280986223868439953075233844013018259831124658182594994513107118285626045215326070967342760337705274852698371536254958923435020303061444568093982315105975041688364008343895559372219301290928824644636040197819792268988389374038768368147003635661544224222594402670673729544582788542232149764460134254228448948412562562407581780364997442606279549032648941811833668049921171153247878146031355165053438721131586594829544145143392088813313800447384094497107039783540623097441277107545455911208582948408159181497093060898278456482447748639105934733545049922927718766373650405951756131307254222804594849022507222780957066456080312569571294923748049701880332489622159374261311469058774598840416932858385793218886461737409774737381480584299588522406559341171532892147373221325602324880612350209778680091067956687761892243272457709389536694158431042429128660893615662381002256091311534798214775798558682593015110658453076737471739650219183896146562788043772881715200598239931337643326261776490483118258147047196031478833083489450131186510491845157529036135376368688513183650935666881057518749398230249258225318602056179021908482315110725068310271384315413825426105216723669627799781009675276945148715721979675804495870698982471729202512164620742022475998871418322473483855059453607806674547730730660638522245527822617178570823850427995267634008227244038674098520626141160854643635935931424247753144388177019220544502197184661327434904329257908159411961496138397323901994153526115759290023988711298567384524909429366876893819938385724307008886809024666968124579985234853668349549878766599771622278118459038074389702230172463096900280558982369081142186662072658033491688329797078285354141248933612845833822122618772877051025696639085039995981578348149615968330363876936403911346176585161045978752459147676380991678392326319798516204863433732165762826739144131998180634998660014284198760479841668257026536996444534849438989800552783888534339869201049613325335620309214916349575729649284265722945340484608205464904923704914535361580793371966298823784847181221483284515815962387984313167621588003668633610232411462473582765771963526089843718773236898739100387785389239820368996608357415328076599464598785886292755092826781065221203022919816041504217425119549531014119930228868276974625462653878032666283122586201063260430360959939541781279177757873762435074218389234466540247369024000472779315788245761220538304121818277354678832221300732236710386518760012367800584583476184392320434673591827780583399225117782082256774487466659253636676906875764785283564955306810943322558665559171420966945591235304228138949689097565781887150833213091622566047864345010141285110066433537358337167863805746553369881994974985878344817398951868870252929786780358483312623795943260710946901008685384479015863454410203376249724169476974654767894785374369562086751274928633725996978788283150008422946603825828010421559095529250771847724481289966824893564042645430653908075242737011913349399948035471569191615406984718600860730525440912918471964468000801032396148778101168373790551458952568449379368059647244178161675721101981887285231562652479080024643120527042326093516425777554396772330708541645231942171653834875875431636717068406904592195120348794458746480192261219174377172272523978559904597711582611487896271606274873731989859018053335834918476416775331905252135147372396176621470027902803756265856110095973362983511708730249458349451263183255733175178044643087535063495974901853518058874291849970358795127491554425510211949659738061157647753402391057565104820760990642644300142913175752599920291883066056844323973970106617410221960095199405279427240455982910208947045302116010900050964656393016895433909410163246875327879010443053817949184195547146333888336576854489724908891384338530346853867289840291482005574122379897741483703764899159016053741406968287902432809556956904889999296083969441009695573234688722840039290757128896913554888306913884551753593903062455410577506500577366163568122509168525577816473747079415590854245160236880442281374991452150593240241081008679949081924411880567805429089498644088952478950304178598104033194240037007797470027804589269174797167818734806023659299019111205726920607069286829278285133707164394248133042902594599077857612064572066323593422741768867073138144161993741351135893036232332137443621914259097024435023507626573069929968363125907122091525563434729182779421943805498544451491026858254751585934259736047891800090032535782070199495347733474710322873670490225722003831639856318577990733981924165534223433923236746724570118587045392489062645711728870061955799269573391386430678194229323886033928604843809913443441293389229604759000980940736844356779538763756448385594182216321658093461320273718824764297325379424424684890860243674446795831383116978805048178924460493245001056228996623705672066726582450767607290885523836564699268975911149661452143570388321875028596750566156782982557791445647488144199010857243435843408850143505020855394975461383111505602342724665021891176400374226042137259837578378760136240337063901974983311255927352013693713719495198580003669936674008483455118753446770041456575703834864732828757786089631581975623353241409708892648849181875084977388219827138044226910113710250192218075139586038433388532072391158718639793894121548286109638671538056902201262978405253090679032632986222946037880323623803753958549896282033529824962768858264178881045666391315056344624793509767536830780829186399737910549001514376973687793378485679358511044550135353133241305959678153818065520414574352311097706584560112829721296540961711148292089168634910235871051079337899515335161183089714772382107896946457348413141796710960752281819546484341930319140229546327337252916782618401441743208421948692663548152233429726703493346704303104900146382329635306236828054057292303634446975707498052918342643900400145206144673787725252751520587323012106911639045781418360445438255332910264139262122915364738992624741812006619542202404982375206106112167783325220803509533210840911986436307997068630923243196902834926954772829602706054403958083985817708638066275396345390542347156173442906390393612520632232456405528898978389054296523172459735007646390303765017017444855408052477330282270786258921377277332119737435463754227809729754663890687520378110743663277533717167822068030938134515153618004694908347027388068387609316247647886821912679980879748516525415491386931483379634872542073936832570995280117123308608078825523321614111615083803244783824577059724951949673786805137132872556154051924441180252267500130398536357095752220953425069020257667614294363575173415771691442393537172108789310508333515842699842882865128625970685526253989679019364476242479015808994945135650985011913758052537658520603722854939509699325703584297091796189587914119653855009869325407054363395591846098706166273011667355525387415031454777968576000436109509773035547259755747730817731253321179263512823299927095795033645984954705812909878320685221613962392915906466257679428410182891218182991829666593751690103010233545932764296509389752817449315857463605084458860479762698741034234062763402490519388774659309652206518464132407221677174606939275623156923579569097496019556648904403652991402337285196342209421574167870381782185921408674699330336676555132218891068718713985041628845242266411010042676626712378237693599533110983222005991273328367355623452257895166930858803887952809589129835858998337739676683437634120892062740104001953477139581959523748539213494489796857135188043917545289113842706594280231033024977491925701809750631569163903742770162049413828877387970257956520560812550697500779168624770042030255287232622379082805408473194035840799384991056390972081130608216753918138658574267124866663082626341997629467557578233235186974015695041147069379907889849802545332887554456662151313640512897247582086956642141684896113644943898038894949158361529236248133151838635582012810600833143362567338541621650387994176500572068934774268874408105056920747948652622663535619987618222258608417921412164277285246356762248026230713628402859510348802831901294168323478563878126827544878479949030620068247451675719441072662209486746307798283791151509670303782322664080831687812371603819485710229925949707474785136836553123852289296178725464711273821837978104021570897163627616377190569872674416159901023668392158021044893005247416489481944149485113757585733323021645129920467132883761246588184608235685704894391032215072220466129026306497779180158766464717449290008957673710742505549835938090949825074855448541444789905832835308640041625522188700632120932972330900803652932937129192893565608559279594947154150297193670358916219995465225229183841992780618742325438966327874397966189670995821286574989728054775649648584796639760349092658234333439335108084673922964707615831126758507351518131979506288470707782304667974581560428881499505019844874140904011965374089652731593805393513407928674224062454330273718821778039641856908474296761691549767269538462337168581950667110774291333939626532309271384084698686460498282517099978744787781823389787194993212869371414787983753868320649356768645066664816733179702626623428156355161747969214971006868859515314614334955579922704640380898529648458479456060306288028156792582671550450413010618615918742942553497613496055540026143782489862944614085539025687811605678658918288881129234526468451703793671698566836953061302846827903917543504812941987799072640031844080970077763548962665706307833488722086280257519415946878866208743495254267030952188724481993457574729333457047916623774878220802453444959468726568836424033395195559086759444887964386621233890573873206399310138847428800601974062609600391358513614842630812580439656901481780132439288562965145842241189285323258923952833666688682912158255332164727544739676800513170968749740271452160906603695918388002082401507942248831496223163559786568653679866861909302738346763082738958100286145904092458832914924853715284566311593205065789953098538676625129518361302736093407802465176388538292900369724721267961579245611174477853400484920232950497262860738763083998922031039351746022309058967477115305865575516136900052853492029085829028136282257607134013198846651707090120608476939837152201450656564529278559894956543180903874157286041059689147933546462459008685764667415405178808800529419725018591858825973351791621375775925038270348192166292227081171020028262493386102640277972787518457057485930972240084423142695874944447143246893619597683315900097636125905331374930994397331608330065810571324211616221103071973448305143987659264408252111413289293438343003704043546856677647576332027374397367041196242497108366956722080051382393835111991128008717114678687063421440853285699484730252112738937488799205641755887425471282050715523544682125767206917217942755637453871229799282516303263360869238286679568624807066118606933340513797099922043736645669288592528835452215491259636129505023342967693886436914418909959991287814860036811683597758444656382283343512900885965576868455585211093297400584321064572152224383815747740737821321878118153287853390175319199934535124465452221964975199779190674789993202678019156584783650731628935960291155871485131601357056365019657142868037461641390007877135858570855558082441244975454700339396356304506122330891867683921761869869944164493391548884822250574683190104214529732016637078989191039231681022937264829487127492701211873702853747482987161170600705393425659343388865829732021411885549549013444848395669309544963483168747037465134651993815616253449819074592036279623583091285693252288748434859259090237900106252398433482680467733241256782488788889738417143375859044637983117525898501460003085951610631981631176113692689863379693764886131304943601681632557775265067198762578569777259376624992923908464737567580560312481992096870871204974815506265291590708119606570988986534703836363814164253609569321315917838906079280680633245372399556640372292324434427774260151638358143282951788381634380871207941561891151516398655854749128336517364081264826372375164505021343584886475954185432640043764897007311575590450029366567665275049244303860385045912313242139686612555042312570530352859957461396314781344304521619449737878096757797404904579124593062233453908847903468444505727085372781141982800369687100725684905288606204549742338312795431246797348192345102680530429292535733179748356838688429965176769441510908336616747362620124550539541782218781032761257992864967205160524298392751298916903797220668964740833411306774836385199565889058684518097492863108797113284204279844083284047195103393014486289644552057859728788356621424278590734712546899018910879906753297610493938466812953759100917672125378879400676629924411929794902474917202241211893932695930200002755120110618618538859369729921806598115199569647625936578175147720564144542471695941383160388516539627505015840154255662551184115663539216594365476170526241065923936042155772560558885185955067159725967167933409699584685154400255152924537678021174860890580527230098137117127778553853231876369941249873727841211784015180636808478347559348244594452510998181136424303091977524007029330386797791447503583100815552582930572445026252082245325530038630817584001376950005735784095228304472575377693717675888040217569280130260645779603995048658259880260538228015135543337414364620552724800658687081999444256968688200508367732587547928961069217869868583954179929788475242218486613880756899437931991537890841482166370142290576492250678577233989756246897532883178910294698962473220675518280544793111580126043557986479964418225441511230256167227573822481437709366330684657005040018455487031684329424910603809916916770133134635142171342430423358563732925541978379237570015615453156497985904768658483200729691069072709345736774025879896686025362338083980607901556249610333434715729549347862045333315885700063269444074233178879819077548438974526438971851451179228382141512231392789267114538378213979724675618358434714577200097000329781813865808885883049822776108892370589864291967213296887919481312269923901609249471112040841066227965067857553938437760130530216631112150114171540498052084436363395494697913841228976281466350148501811616153144711945541477128170224441037037471957495288219068145604682364711931670719580542142148908979986795737327676937959670061274444316529314405991289434398779633667846893722715705299509976749520549222884097632130753946257990596333270501661658504847023687746103015038839095333093244446839670094963108793188965748007899130216597382319505668080112250081762894662609586463998921629148383267578579900668899473127829791461529600775880483253899413908652407679051530067809132262582527951429175907653958486579595165932088288064262290887445409958201607300442858418489363053919972193317616409437207992228315500844111189872321400889221891461796706698782961550387627156806125293725423902853349163399939456593663854764114925936343758820167817683253425922005306155853459492293714943322158860330828237301683222867871131132579843718523735341292310440955206996150931237879845629554361826826985606263162212907439681718523935262377917668487038243648276972537818607291960923309515106422580213047660159138319203724639783528853518652861373524617793389449795727685468674954838953308327012276521605976824845381614852763810494109253243595571726513588259894056092639159975749917761132787846386337722354677960408517730104562605329607112141663251248268032885890724651044000940877614267558685434988630128545481641091994569600253519575793742236621256219412017033832197790647024006869728871980389195560164359433748040447606891491425423870192794526678545195248161857877764341625571419662465887929180391638866510516623385216030731857454845035290481523547858351025637761227619928037192302747011803059847353089303969720055952994137077056047645209916264121967289086059915154990579550955159832589693373435939475090029165941968635263873617083867762612205718561100982989837225412490944345216162765611631134707827023248899067847922643439889836445445812551655953920321396730230909710088777449316062298895847026714789727136795185845375041757901072498054501625051074231077699586750672988588982328233563667691547722150678568958615486758185825729223634273662473425389901497703393348257866669087232409832173415257639710658204357133588963726403426809934552084954055273418070786026560307992358648738825237225522840134700555788193410498399345488552091201163724849302231633112267482572686132137474849640690568882939051888506177235074572595206156595151449970817407416956825602883498930912428172234384407206656142693647905542872371453151996684417956691678079784845024639064815552769478333737801089305008790098558881836453481881119218592512879447613272998592833236976158359397747831313155655419482934160165774518877593598509734204606001008282794990001559040630705681329176957156278788301180865415984998079325324799614998198422228825407147039390143656514770119845787367437764156763516737795911581067370271784716891246172876328286719032977931327714124058657565450774022904850969395109227954545038067464151739991061866355839966084714801154255968485120427666035980636178511589596205461886791622715823811591226558181084853102595824603029791998328434934154185401497810981664742545918585416961708445820209734694080156093996017495548298444714479802398234371781373804950583249722230146364325197801300672325319558401617280991616298594825826738437471987847693117255226375124472996978019607942648808620014496032130322290793794003447662080682818061047276565571587688918145635124472301330839204611365902604193089580925015982063098745375308526834229764619972789119157055355464864006587158786638920590768944483626793875768657250777556648317633912857239375813656490691326797348207432734288479537037594179863275376375527992773701891478336311656727877884549410215193364794426642473824409928246570492181057596966027598648595349532274347815384621136690818811516598235049142665291189824635767156534578579294474386829398926565997288549735840968463941488609168573479759408468329158571643257947113196108042741830673147406094425020800479782096832179270907397498585554907494017507241075737040474737311815724749960166354216057478845943314581043430555906798931798800874726815502214334472502008515627090563294485517022561651540547416250611231498443240104645893319743648491513084520425002895782535354317257351284908711572273827666737711766005223640850797778115259230842616226609330206374815129216430611852446094358033072083589366567220777077488827237702458326340796067306708008067672879597514825955483618361866715956247292432276832470124911171700226344487921128230719349527762547503692784130910818707744958870270122793790950997474876876051017587713330226677287784223159623027426646570990313074171772039327849043087214366120950698131795409796314347657783246993921566102855196503876418384875977701629102705282328981281941043773413229204254802123292505052240018719880377516087251231167704366039532715983531984583994910116556126275598696198608908060109448396049087205935570767711514986654664331647790901398992077524277017923451999118516312027847346002932560855010648615471290885301145282621924267596717634203352751045220832985562508144266365607944108455521695132555483836651120328756991483625234845948723577956468310687985480669650055375330309255990392218364100829411489521752798950148759099447533965869941129230473157099166283867483806762426581770998154879516129432952409351292740799434865413263901219845000816181605607172376619026112486954741332948434773743583904756086218536084585427380774918589283626124087133241680518820051486610400293665898435211011896706233043065864083329515065654957545824649424125304959754051008843113189010485727496653331834047709276697537561172887451193226663698385178512571679721230188506508267469199557050496772319310465790760928857437410268214563052760296186400484273478133033482572147088167390486198103743318388626232946242665026699543912469671083817395548175371496224618825191676704312275167188129445656843897184684517130552039977695449973584383100983996051585236071057063147078619303338987158104617809437647471757327326104884931707402171751997691349261943681524583736407004250744773925315344435434269450675303105654646322081123438755198355370701520260527996363864669077774110860533915614739344510844127341306311594610260610722984069520896648813634081650464272857704729917565577069937918094987750219473066295544245862023559159143831583751044791150832163999381944131839282653516163458829890283023195382459249348635309836707948958599886105138900565024139257919492750110705675284690521118540887414252660211964743618492015980294001454494282687542239350653642501606829753121666078063788904221595336208372337711137919845307476085830428869134302453549578569170487724152186611771815765918532694458571711825808319855461609210474632930958507360894731855826440427035413865423643152929837031267999111097047505008239020810395832645551257458920869403041407579420476619067087210032347367898421819935199899605788134558316876654696610557337984209655164279541045467780249155046250970486303861505734582080620182044045264552632596689715692096060223405946005448433341249052540188624160331051585320990212207763544276310693861084468485064690076620714345631996755710952046720494975272718321355963144916428519174800489887133094214881559377860170184347558322040368406201623527689681380068071581951265538785804058427326921365614200265802824796631971832703636456841285097437007263144909031173108849984765771675761239546917927503966895623847050512914033627641429704154549532929195494540930537216939610944347529883953622403510286991374784725048960302243838044374380616424845103435795717558419877305268567659946761134168913506296060317241536982420269649830350464497419351663073999289788505994533776100061500278269945069618468000772666449498142518833262610249842743827340299429955114482931673968818603941021395140853688453068968491302171781858988522792332949457573833054187688419703505554883708363850487893106896850954846729810950885119080696722779980261556662356764545941844587385893129826719976284133659562505643261199156625176693914248737670617752900443801587149112145278315751509265327918128160874416555439957584227005855475097662740337030506660142204095421380063834004723266361382502043284933912477079682963558793121212420720991944516209381456410577710934422729935401651875260636527805717417762689774937967751046195846544430068953636617026747894211440699937491622773159496425482663229513352008909243762809385566979364513071514032640460053201179485928590680282257379749788600650304752852057422196525549832435183703373088788175226970122080766235792017478514886504082942138983416864483243812263100169596251598819021226289024972034614000933593659279448920812028873950164149508134091889058269214434109314034199024704298321183222349678167295442232510486138358098014679476354241586964505525929916077848918301561071076022761782753845341520698540981614162353885035609909508793287523056890041058417884727077216197873648136277814343581453236117404280883650989063830090965197386849907632351623169278153351369207818758464894569422483819362740800843152053479128853442932183985863040937585728650318874610482444195338118805682636435489447797392515061321434626137638206689835676121922408537913217125736796241067123444120940512977599423301858722454209672197851216913270866838542178688869275947246900713069863420623996994049309823785325803526224420357334367625752808405737751616238501250049244241640075555926650573663549207392392135374195455411516155555900752202108857530635495941998279022500638085726076514782946214363831010932493007922002067981711620467390612907409899746604625621142862435336735590739758392093882866752413411789055604234111034144266730069266521719837910494603365050485971915551193852563692570524799188777518046720603919204881827735847330977259605781017824577098440681081620509694686192074799566015442379208202277848130971662200783049401306740559983200978389368758958315278519737013559350375649109024789498181269774110770926200593549342024172760561166040906437061573201639998741832759961492386630083517146081193303103034954393792337156874449040613191033817259787725011741566871385865472831628585830589815102908448864978939070925896733154913603886834482101789696775411889977342607008118326098331015578815569196543158142958198721808934386040165560771354779936850671070892361151367517346617144941914217265464365056438476559684548069921612971040129804416825247412169722621481888912851302501597548087937635353489428391329808219214910444571378446916083859312478652648489426500391776290500314265776398097912204745616540608645075634775538618874154596309034473626224349751033499283661620383817678574377962941606493132199904230503934176630129940396758443412125705879503357576191046579540047590381028788963997933268900836765471806780664104670808122076342450569096867223772927633485608622305118613461809722314447957252138321809214859421103752032263506416187490834179737583394565989876435885307438104060023192101675560864649779213458981711203798990882677828271085142600300796456605353655646384409563414322623897758163097524116693623639054809817776374873883161451191547451419073473838960587364656290751219482367467133013335402917834333167939304024746823863721249288716128339756770281659209827596329461738586878769420973910727522265836612020346148110823040272826532525904779270746929992612241002123120165960618574403956445717675676177847458362490486283796852515558028002661394240266529912500048277858805425978759780665302575042031353389646210848417927944242538578152691793196133901682168162637143543526947099319072472731339606086152535069671025571677239652985816251384170159737170971869564327828815494555281337657597401954665227043768991157842955438785251913654687820959936252522502556695556072408281553261071544664669639616910453043785844414574065698316966565290032119262499916579782632266849069030704486080953496740626053071860102971367658389156767681318845643316319268393625157935054816959342407299726284962989332481211599274508067945308362325968047071714667952275287631816178634189464667338555294573074451041814089260366164191858548686235565293275349628378385665754019197848088690019621160968152065961608136479850685374009907950032666596599603673372616345101484343523932101593796722012987952666315811059879099480875135096354135606002880744471512982038878507093211332356354292631329485337631628041969967992220547496973268799588453326734563216521862968853088129858153742353315024460478810808192190778716709190127390959105742545010834725928974191532530982823907431167629110529569932362310147018997823042501157061030162253558216440202451841724213053566935188958222572205714366653013940056834675727312193460005498094672615935194585005406644199881944172644889736687811357430162712324236839564680222302418868276780170112473811324177263684171424723211504740845630961615390532466354900874654444496775649087315078882852374504373541060168433715662847130189179526786188844500336072971114839081371487504235613410406539704675528604820780885366515214791788635797302163353653362084433433352132455897030765474530684710792201568273277007533940174092754904660611174234635380019298097963023301203529663118879495191962175796892488009435827154240127067096301181343114556691785291865245020862068983673408102948181759302519622839918060907254243994475645215056790907015619242163843570312979901546152072914093671627489317721803936896462579612668093655127154754961622900331626881801986274284644418342153645980106731241348145797593931533263522163055871157593793058255709102659930898297956147678629598352596369185032855668133778361402681392713778493616965650286263299929356660173867048293841125152069522790203359055515687398530321619687738868644358123255571211028721921833471339837113620808423643905521862659550660658948264336790516449400115446592898196481835719853493517117000641645297216201133946026755587272915689787849009844199909359935207328527528836035252982638619551608557661925878131379980459085860627387584369589234832485432832075050969020065397228935718197054472692064547820492424774685881550640583414519204574209931730738430808455513128072675335137872067818618597871256957814836414575866933122182269373364266579986013594281629104743188069822904049111885699358270440552766282306643278527136953396208598016803809092056379200176602138951847519057690400271909570101487465792930267077916678958693818473166957895502110163276910054800594029256995901870672709866365634335912809461677410515720050848503078018975711605271501416368498303218769289882747765045665033706167551983994985622695825391365558959836049904066826909411854027957155400818204201429688851440765360536768597028238161653640746204383971806744933367816358572081378830087636232540608171720665263260034482977267913028688261805257095345594623390542315225091725655549002032530053766488964723130466075284788850081903416790916521355793944047566566196076489102320723598043230316310164130128892528007358337644694619076673074243517205452771901931566959977584926824283522291025611108817519118076340825553348687407462032054705927226381988517228491770122201899567618947432696049550356986241548800895412557103967307779927337602560860614198206591071627739032374801580967826093084363406299004608366332388531257132237253463798124152770350233345818708474916381223994721739376215949986432452271278151504337770287925942112215249496872953880911028783160950809886090796018013476525277079636857425693490157520146638031299324297194695822411627249850290246645248930364812666479966017286695995912955953713725154140132748580055240252591061167316915607451537636834896557772492671877954180926611109136732094840595871001105816941195988864500716389956401118930814020301313557097741595229968574688767686685572824070758086488555681178565562864214786773653287428799990611294317409743428263862996357706045525052922856347293902911289513559783914156959078553206234737116395007545457934798488249562903491557358804544521700457510789442988829049814170127542878546268135483826113247045000294455094871346524407061056966260825561481567920592938100961694185845366784072280074555158", "number": 8, "group": 8, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n6389", "expectedOutput": "128783422115528889093546474294674461473130071902977044766431709389572675042587455381688755114260665254562805464102334382534066665919885013260019292758612746320018161311357678306033866179636802860108374120796820300523194404655577187824379716392989701416396410539511579718688699771060776631556820442919652634073816110856502928101487417921494682733923001151319170161374021584503317777833998408432311264179219925712231238615209731428440699657192409983461217199022932555233174970065098934487623271004302453042683074532325951596818665766111397479133086735148280914831671245784932019207806033060907792508804399129952866642857621482474393891412618087829478111949415801216630410989239650384781987050166624115731437306684492627534308990325096915198663447188312238599804871318963344527679531320881046339782840905709699837177686360381578358134040998080519374385479734089922670191411142622558845254107933409622576269295810821557456383288240330148037193577140982506344358128995289266943916690987766977791411145803073124914239422514738515382891047149041204208237550034958957967031459039616016074414614525818106753800226013059159871535682460599567715274476163317009713698193429531550134669290201765130824787229222617363795477887462349910647256846168091750694851495941720700719246108740996611467570098835523196555622104001750999846150748524410924935877295678885732478447999806105670247960710445633523036633832869973629850696371339229627810529688303252349786713804482690071101036156311769187918624166401424735866122567227943485583734458181747189012482828395022600880206314115092523843656031101081695526629495224379679059563039823012586869341040028123769020527378157977719104222181129416506374817087253683741993111555561041157284915082134772343818726628033448604873142668139912123078273040616688865417756941994868699693279573987882720379779527879928165426318282465781591295188338796686981552011069213170408125988967290426197363329193685975200456739608795323577976384622335600103067527319775983812045648993812903351318203805429617960454549137653315901629066695895573200637472285748165704382142669005786746301719577560592077082941419526215865068018428887651394168871384324254111380117418767201278980687963265578573067808633671690383944167408748387375668565833363096785931260572948100347046869764243803855716235258578963417080199649388809631549308327733768487818384903871436167517093120365834291130743077426535103637936363534074060256769468194255107579275875989234485520634727497836422895513795791686322563241482305290325225412537904065283586240161403551527563257391596299421763293123708140498526701380010575978301715136603113597749011287096471104504460772032063591758985872476382341390333058887808456286190479429083650557221899258437398685246393170721048973567986936889175282548053037067364354897039532934156121711705143795699279436949971389419607878148611887081606568001468441538188961982738401720084366139629853338501948568617879990949254092930022789006832121090691506022351514691919868267104115973581001092732372169553435691029764157113528956562554165197404218354962943061340080159832151289937829741752546799170359131048910746550844591859759155245655924319013333067946351998249293785653011980910561459009052672448619051327660863675558458681670652291496568933913430595709845742801150579799361683185676851804070033716059520050796492307653466882097834721885677653508271925014506224671804703170096345713565122222905442500885152913868470350237262243996242634964770469485717400630334330224736320094126915145984689854000568000281750447983998628693718", "number": 9, "group": 9, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n675", "expectedOutput": "1102536332173934360205789162889298989584967039807927737734214427133362772845510958643640162128687200078953613447531368372189965349798471130014288667807195304327321155496506973587156028602205371760357787153357188239004605669158639777364766427330135118337795943753419579658336422809300764067497055044480248523286903265275352294386014786579349250091635518638090344446313648742", "number": 10, "group": 10, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "POWTWOADD", "objective": "Chef has been given two integers N and K. His task is to choose m positive numbers(A1,A2.....Am) such that N+2^A1+2^A2.......2^Am = K while also minimising the value of m. Help him find the solution", "inputFormat": ["First line contains an integer, T denoting the number of testcases", "For each testcase, Line 1 contains two space separated integer N and K denoting the initial value and K(Power of 2) that needs to be achieved"], "outputFormat": ["For each test case, print the minimum numbers of powers of 2 required to get K"], "constraints": ["K > 2^N", "1 <= N,K <= 10"], "round": 0, "sampleTestInput": ["3 8", "5 32"], "sampleTestOutput": ["2", "4"], "explanation": ["3 + (2^0 + 2^2) = 8", "5 +(2^0 + 2^1 + 2^3 + 2^4) = 32"], "testCases": [{"input": "1\n10 4", "expectedOutput": "2", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n243 512", "expectedOutput": "4", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n32312 32768", "expectedOutput": "4", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n483439490349 1267650600228229401496703205376", "expectedOutput": "80", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n4258990275541962092341162602522202993782792835301 1606938044258990275541962092341162602522202993782792835301376", "expectedOutput": "114", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "FIBITIME", "objective": "For the following program, find the time complexity. Then, based on the input N, print the value\nFor example if the time complexity is O(n^2), and N=4, Output would be 4^2 = 16\nC++:\nint func(int n)\n{ if (n <= 1) return n; return func(n - 1) + func(n - 2); }\nPython:\ndef func(n): if n <= 1: return n; return func(n-1) + func(n-2);\nJava:\nstatic int func(int n) { if (n <= 1) return n; return func(n - 1) + func(n - 2); }", "inputFormat": ["Line 1 contains an integer T, number of testcases -FOr each test case, Line 1 contains an integer, N"], "outputFormat": ["Output the value according to the time complexit"], "constraints": null, "round": 1, "sampleTestInput": [], "sampleTestOutput": [], "explanation": [], "testCases": [{"input": "1\n4", "expectedOutput": "16", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10", "expectedOutput": "1024", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n50", "expectedOutput": "1125899906842624", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n1000", "expectedOutput": "10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n374291", "expectedOutput": "65781999058765196824484391311972043706763936083007181323263538601401811690587651614790433096807021213852833812713019769559496576552994552800059724727686690903057760431636411221657543229761956141387200555633580462866183828547821067927264920816478030717230118599501651412331030344262197892083037187108822339027836212776718856403016431729014413694048662525788858654248785986936424448860480086646750291695232945111592811232109462168672517069422567478874310625818456095412201114466042048650552479234044915770865174198047779112601318491742056427287329694320566060671440186339317777976489993553750027071696732952003450356966929481336161458586386514484082440771759505380789753838948922771476187746626082974258394513014628428982400235563191833017729542477983006435187434839533762302134443915332763570874193117660386227902813973686040408446414083150977880157928831222940161901985574782383824285506438595399840319973608833999370185719406842796206817941786197780939438794972556062723568296199048178506348601604749888999574994854335227394492598835302112859443491112087541434529155605623949984250719977268040138491570520240442224089028396842174000660135333668525695293821975811410151169424536241399416329854481143037093512699414213876279905494542179344899010897122792525906291021731704387916968439936598657306233755963054629379181421817739730090567508917998070594601237724443968425039617829149514588126144903571707103780171426853571614843445136296553967615207214058422144556126154575609289939770327461946393366685833961908685029475372499169978479728574382913286754425699755441364984102656388531353163917772872714075576541053631980874012512220869141978318223837641282739062174230293277689784318974276064552050339876965910243835329636632599581703373183322216769776067216347051401096185626035579695980378023629161829960260808597237601055779052336293584227535117683978868186222129520166353403755269791402515624355552212053942831599203024908645962895462100928529832010540125138096406302236440750244849694041966389048755012688934746463064484037588770301533467448940429979269233188277933644253544256384577040911253614598008457105579103276177022900325170751429880319761583233503091226119618356132987451886552038724798494783408001077673476659672400440530560373659428603762173320150507755353829775720727662707736361175758074115130009902388952222966219390635571735000254931631135898979847473478908896358057879970956946906776755477814281841314798941758662391797893793020120368144294230335489782046388463996273308912773394568128238353312085519472284765701079642931015455401113594018567842934275111102099809971337587062309017916603080311486832689158816434091178842381667625208852818493872966073012118552713261610395550861027112555789970339833748262704234331708733420407863254536963041406724768157876459702672873561944356544518683333718524567305632358315928158408742015380441666061841067644919166657153724653147218210003087579300544558260457129003632011361947539259995075417359953311253292427541476222578345065258183225405768319730868529967201138902059845437362871996551098655211233352506613136425769611726366410008430359059934598636926624154765136512538911837239042306724222207998594120799215575966464623829991242401874930363951769183265530338184118698250731230662288985729736945215724475786162192769071992422326952746384506127464061955530715687521429640424017552030740324517684252707260079949436384051538550091055241270567685299332659972263095803653069377650626305505335578419062088819655338031030262277422538438327485125274978387924787183275858987302985913959790652568352221531277187422302019696752906646275448184745134907687016613976447053347083279755103753828084757323405579398534116808678600991728467160263671157887219190961240061700695199128788745566837402948112259159002076274782030452349435729395695775872882522771415908080191639566082825623494867251652865062514257668417452061281376067205661998576854805254937277765647567752906424706170018912780577429857387662971023373205941930697075237801528465933398977357417693944672618961176965554140472974703408834291746995546771817439169335081445066676328086536419519525431560897214069303447732554402903519113192944269802763760807437529685756891156316629918479200268935814972284730447260693037599278500566725181524314720451750184221965743290042714116085252833243919955540394177727472916088663150512153680768350908494480110338383969701402175325936659425244192505998407954743103194076230225877639681682283929384330439505982133630039583106334071070527945445662190106457456792072436344603431965592523593008050837331626784252339556556648265511863115124359367396472326320865597306056827433755188722954572804096898406185916265660624064628513462269222374726420548394831956627478607492421658114909077066586661598000899008010446613285113730124909779197349952337500373790822250691871302550578515016537690437198476025348707257099020386015349560330135021874541787723248734321865720991670956217013906437348320871959257136765836469887627958958962273570925466706108624256877467233772373515395969742872340473316530198247496251886789663301433573225363466464320790729673706099191758855549610069469011340095236307881738596887755380548488983864445798516909277797174464065796570016317923530062089882846157413683860232041367216066826257057528450365935986509672436500662550920967647554557937033615699258282546994481422293187504061944402007032206658449826787157847143119231745636267373591101681676214869375978004652562942826353905399155701588584772742463263311773904038528661239814963430572359119487621756185929836828813352631592852471545737249972191811920259542244983804754874443484735739458226922379740216570481073371661651043937298172977235792692980227430222628099071155813180708865304271742477448436885324280742638384441501679397087670413321370860793086371193072354567189053365023569870017507347026411256645381307837047583959390589450262151080960876496199901243059185481777988936453775018450181175684006788849466740119200988117540055024596871205388662469859538312209146881123066567872976426357461838625401300703916492374717342516680572578959757263781346997647670894895364597030780631835155264276027549337272865387716174240020392080026831570652647216501495899089249432602936088011283015764809259628532030418250472926598355214810376255662885550860760583976998718511155758797682840748869732071880944689594670610245705245059162926298472055263061192366545640111616036779830948751180240239655923201549643890707997642977306203641618205657652875020295214383670796617846591377796428912848956513667586830258614102625284388011633045020687159563190511353070802182228815059304295405072268106825890712683010684978598380261277331369134687145688998198640402414034739240153262561700532603044794699524741523268344309280401068480793733574306389162106804411806943549193853949195662269731461082180558787637359802198918725928492162141804731628413095687701458359900359713809850336531701948390583015134852712373510698871716492597803157831154961868624931296125179546188848992085598111196662019641460272529974514489693067093066837182418222071706768007292652645574946972916173938309628815169065821682171341009196863816902870658088090469558621548046301409880697772064476273108865688416829299710582640878884310652927058275590403626021450772790313682303443419622679673849798809598751581885772897810193920676120127602697680452505118151413078507758450344648246696331195443906567623934528319542108898108676162448023084012337469780940580504758552917493555842335998534210141860197617049497242142641768975675561545158891632687576057827178791633922073283539842141388603465954680863587790925245709873511337126259758797011127205578227951995341205250157365925457336712904093166640808190071050261040945499115696786197138617234700575504296025438849866658365610178800942311098975148348915828074832736105856714054112425249538463563127516315949226783842264365293291015333450011309929569776111302323370963157405418846258931802567952925349754751171391083073113389153618782136476395446539608099952302588311726446334929339324320788255507005390565370193454515257353514028859918201518958667300217576151409344767360402320526884658882992425949149964408876748938620617692344869481345463056975285764343862285261590741049714608158667066209474499226832057599422296043506737655870640643122937972432108838522753165418288145783404111383621459989528207563982483351024700315100983643930506401655430911391274208357022427436401914994906618694556573259301815275042156477110546077820590360393482792667222061532441832833994274893367193793558141304758397636860533047898720743223854299013581274339545078482278935204417300373815375553554137313708091472358006493197442892649015647242880824698035198961710414564424455505622368510627111113863436223590595650139325218693466422440978209488912878578233229060673122619312820067375976944861602034311888602693924999613711939445639540231457007500975622043677770784667914579838624552588739893603990898101136225767077646153993460390172046422220072964705760106758100421317953743503319586425845645950856562995294462817694008075018271736154445012519064489407261957364568467538141256589980028565944586759009390555408170930409652855712092338344605886674995095094145101324095479244376407224713841260091347005304681351620506350508801292118658018435164923486510360374474105522553859036119805447350934266134530023396072892179970686120434368627711442544122428022545163698154219934522287115320700351230149428506730140379148711516544213318912200796562319917570195374468913143151399344708703921395968067469856954102099495926775498067564566618432045820817694184229132957343367767654433814892312581200513349645802816052032363741126497788441868015861252624243309403164220190052640603401886071668013330835930399715681010461558656717632896597951685912429073689381784538510160992935211775937418396699964061932949017176677315151592209564372093580894059627667754921164381352600688722413912248266381292711796006808241503358637320010450544557179626399203082140332954213538170958529340634213986235882148074406785496390752441506145502478474930637166943118324078688735708840001792415722726021047515484874585662094041801748302807040790586213591402394137393897097619821515316067235560862462748445567037818237642389257480757121195725978371893259174335234669094152047654847435836332184200923361653270448194522311314086633953207894655606998766918857884609695110436846595764221642862627056829954885243091323125546905121737444674384944372716241606850699126532396830543159400407515078802548910859833672739317971476561503245667427197723785567021609367799541405136789597354900543418475796102680741828016069257053795529756786674661538039951965030466133721540953190617308259875745175172041542598034386469779923989465563595224026238411371034586716645050942100767483458040984059263028237164960358189555425904381616631711671865832645480538459569092292831237936777642339602423244045565827473564450363874853450568887858257739241979003735384275050231455568159970186763209907602151254167842977293725882025728372098431871403308506732120075914333096813454669104464013855892990621086902240101663627865621683315350053162588754826926777591626038911617898362390868346234467399839632470252320539178259674168518756264453081455156653232470521315119307830290161035603817694868508816214800567262686120938886073285555809348912508391160760228854699610720287487242077431412779176243349458768647753333962705632965408138365057315583276858507570807579280086604479589175020230468634043609815951842043506703410474682927538361597865523418859375504472666415743899122802003499387797865607358898306571500451012676634755044474580013523225956877310261052886880789662893746707663068858102973484869365332848587638894256662481040695300397651679018893833102011020288451825426502807956046367795502102879991594862315320625537909503100657714369722457716235995791738534508716766211205210407158630700989364987731087965075621700655100203052248980227255909447951226218615859823681815795334546231044224485924210640864291918290881302808068781206376508300270602833007497488151455750912579613544002674148991819838162025765484971364177200363554352993669134618839341242608070042127885759695353483648587575939087412227880835713567967113704726255208499072598186408913508245059353458232744824458567975766332846946447648540457398735096322125683801510179600164691367281656106960223179934478726609402666239879493225908089904841023893930047564552789248473856241740612711044241953070627635923623307953944162221295669871218202744820556947101635011175437548253863940364596592390007962902118253611098113332114740879767912493992487297832790764577634976589372467258070360836847910112034008371422192859302665584427244033673478359450201179035597632031907795195582172993632488365088809648899520136556296933107916875231912084419601206014675128419820623144628969841478603945410654561174830806685405553113494174113936284982638177617840046773367143751162785801175955766310688966998820213137139718525390783471348475822821873300419335791356775923832666672858737694740208173158359941004757949476137096902675549831575952481733740957894570597146432569071542553881814832734936801773478724054943476002252897654377742601231806966292303468213204607061703605726793574655674323963120657693187006318266041939301414053184398187198552652333183291102863972742749152765275073051871237553835973695880004984299231823428447724614134920252301010741366093784874725172371812964129040389450442664815653860587321166755580903019201461127963461080142632751588470635050307427321567030127252224342873472075251598991214980846669052912590355579916131609676489884323332284110530778902431987441321184857834482971298525032935472484537359747258206544073588721862163173540628148782904870658899866869845653849765213608624798235915982839474432156176637704360934034442166192017041921282500601454693207596378283941106502560209525052015583856337353862833022052343282273543046284468596759834442858676852231134448419341755336929001770203259973746965069151738938370599409582594222119164306112500857994660609803693744762090701451507042481916471435218415109777365677594433873461605431945992392873553982049857165011556489136169737408528321952752924239854514026071920025036942628434641449295796507182492808632685735338614562272430151903586272360617203773034240868306483801983746599989173262587101035833963968309189390649701227617998337213331656761729507013770243538207633006213386723495918375743996599496097931046289036787385359139193712574101438254605630514990782982463058170866516860361088799354514273532333881167882091633353859712614309356122085099933832442153556518579666169108234490004551754937799205782226070308465801007261529361516580923496060041797026308762867839465118828048796739887985419733229775711386693260256309996979131850874050454260538642652589178221668913149093931941357049154565243289121686035299263241979324826158768085092034173211794049112817033305311456023327203615377565304696387544669651040790937603516253009767953339947444827229550414823786190961336026192260304383516613910231089052921574310327358640464143712059768425608504636310545420621138871144954822937493234879804398523494112465099420250433720026836205448924657878867948133185547789254685010208846540105945574758331988569109394968498930933614781202829744516289214475524146205886297547314253223495229543318549636122664169359069255952347420934222753893497441939505672607266104306258811034974089061313756522767927470566938048889797606882444304619379061242387900740981058803160903481626602224499395168891518034057233270580412353747142826441144086856311298537507603809948129901089014161450324073907654507857252210999365482542171368479000083762383085634152590374101443844543719333296594835609215388907191274758477248962174730813218308645960440846063343280088774253484419862768403223644000162254159274393010821115246455640450709180098136092459056485350529899180547000114243812992531285916497242457720696822314483835324815907893093177636108918301102196519945586357709567374256623704558418419148207072763716947834871172018717807560519981379747734972467422030725178356547693771539548153833800190414004395724505712320351507971947183864774016494084579501100945058523318099210233655215320051641033293514289856202159732146924522577924639938602682532441657688717694868827209046083507461707503815087411295907777628287263212793213095613292100535982149707649996674734021768273045396916922414692090047511300600794408237204426073788671415019603431187175404709790744647869820146554917226932421828948153183194187948303290431125714859244342449296215499460235466362924951582589065419372386125781179052350151775867637265146730052385499489119724154109899873625950501960047766620674928826822384682004531492524706279126380859255180618676432402449981036111053589164222019268972870065712734279320482646884502271230436866715162627988608475691503544336866891382446599144168169093304808825850273546205434477281625223281103458146763986819612923098004126364218174439250989303872538680392927705502184362684792736250501836782255595324202674135829852770151685589469785639050571575937217948209614562117521955722686175935672887175833604947635554527934817203097743697057331266519553255950139589343847502509769569614518177873196261304567326522998034645190791860528067637619843266798329541436011368570758606328252095987692296622045152167449010835681751495433774653516706772640067410351450959915639313181302812690840401133216818475505842148542391119568491955277230117215389181728414122507068383271543041482002057629345801003170605325208293887669486418931090677978127708068289221883175746873371472767939377225679744397320376876724505566971407402547792146360167784877662607857433049660147158461693766806949750631504524177149469589885222828260440871415487652368768998261644606029553972188639672015997465411796821891058539355403345094489522364122252000538423401462728020833291349478047363428267921729631787939585446933459391600186672654734567380763441040620947131594976216572680031258936091738700090370693783015321353073374220257868178045389761238243044358636483264345185820261280447245478222838772417938600936314711803291747011350481204335914299225025788328827486772778960091656105646529074120618264928858414953601841259135516001665808302926567637903398471985315508298973114524156114648206484820582759713571060473706192551044022585116077150388033545211200362573713869320559811696013402540522117131424282048695082724755255158764779822972225012860067873169607695921570811557916301336529666723541500448558299935297149148020707582796805496454598830638863338015794918575013043926847701297280606213537404417698228914122530022232786800287462631871165856301522275386159967173855841685286005233237544262198197584444880998062763032505581256494244163513880435401448865803551407984212844872571427469738047836754208720755498133972524020013712682434505991876959232443310844420350406918583097879793094549207411633343818681744670422301803625575059055736971912705961852675422916869944780357240226625220938976068860667774513776318401953613829718795145356024724698695191605165919179556978233969356800504956063191465400575028309792022135517902822077742352448206407553819737919230994725968224044416899606317617981712215325225303215971390168739533784747393807236907675809188941907001008541596618028580536426067686298647621907826491249824422817590473601917543820748302003622803356879076590424581052504175178443906768927907909941158676386299195414848144338779136898997282137351745545852794202288652874553044692206690185911842942383207155857479822812647966024302855111264277140380260462571819247255545482612576546906284375929389656447586141889413731958582160119979624721776203400568980673419232764659151767535735082368244287905093716891875602666822818969006957323246605472944883625833450181998910348525372125758605569379036997022424255303486403542896316421884946675814478384527733580142342282744728569821780523000611644335046162088652517969693145196210397545752977170325617998447213329975301004264504167294639150924933134834384133207558423757605007063387612785706458995721741651671241268456061058006858683201759598521535856418281868232523333541143559318839634371968959262134378369298039912168797353769099144023565560170160294985993210469400389340923245928950796248292552936870592460287281952957940728512946693459625998268236347065949533378351800612006575375064132721512861307799344860643740739261138145091595111893338312554806314608107189307665836000231001227610229257421725974359510123610934159002544697482931155074877399686792556852038453771386173088797085264049833777771701937058624279290158118027644153951361730189351887679753111900435217273185769499963559465280918977923349783712643334049309082143090021291194880578996114732980404890336750795286206666837393970273112324373869707975090694137500747850655191320605374933118157579034720145109071171533170044700258646424474652855227637359012253449533875018675758755064193702409923247385444339921321025749711385715273561588781971314591902931142103250547592432832748440697001918873136549619650044261100418425659591722381879271106055792039173643958920273188826635775509530143328529177228968127151831724283309643158767827234723086117771639807632015886857362158227371731833947269236765023132660735916824449871625676789212064814648879198294663856297523350522922129428643025432371220196928132373615783961276485165164826307574193396634843934602383306430673240903054767680492892235537887325650006382194854226879881582774978463309444818998290477434725762576397677074495925557384993052171472841890641533456821102128472162234645361975465288369596862720005979577491736532664819197484781416621066517317758202410312079046009966001406447981206405551008321661752658358838554492610174570906740336556000673357087518446333905995022887228768520148795295633108609152028113906236820007044700940261087719754801883555437168502326180845017535113413172121289291285534493764139272699274581765743765325167058783875927158703434167501050348283561770552167069437606437801982805155141451364538554850629799353614313585469713994960771744644377319477356805816052241728940147366419487696491068257667396735463541626243346265407317378724249522213953756000534094136564803526632444101781613845766405223506266041614446259900361696862411010343752769475474136841877321008807725012963659129701745460142127913181664904724908681473799038494251221196807151642031284881245308371708966758953823007386446497491397175210173049340610916276496843152909709177712790168492277621814905394878821510911009314596872451157475604645452600111827774352332485647516770970638819589413750126446098855091019087285707267267522458632683535696112748080078480548436566459370448075912488797585667218997984495198537059412683473152957222911923535155725164050176291970482542106643875352833895330033755345448072859252640798021785554374735047887721663913904809774673796162535531733853973715357056890239085139236178511113462151719435723417305065781863548067099246680813880454482641808010226179339200075283866820447316476163415817683945681328933694532387165689728158716362808613299448693990300321716137061949024471156512773158021464723851340357342229075832783386328518373059786719054932984904012276979180953519161550960422328218143918220345865741311569897806941319354557369675859296262427264191210101310303126799927955543302271127293221198846989830519781101601633234301268511112769444873210452754453941324774136818992405176065242114124631839239097097407717694040242425251337480229408930037922460943853667967521678176556976170965404169525480208085368432236103944548074486039659807387148636361920201385951594963946217523245591923062701798637268158428444675770033776626318206481115297179369473801722620849625347070407374145434578398388986956456506179092149391890878477180993933638157312058650404937563489476310256835108886065509171018235138425212325344510052634252238179501613849945990462273727488793952714479076866270587974345265724593745900165055865818194380723163315341449602830454475876344888535327240298319166617881119378123127592791355895089849666570446822277339490455671212010977678851684221030460688062162975940082057095040625917492116955549203476526002575729429715402165341010900947313005745599323667301223265274378379196089237260684227220211013984159497464988357736030403457068134294227899417919944179287994344076066089777627646396301799922760017496063685384592462142393196287425776227177428889441248337942203817780949962760494580562215164071025881013682352194489579597018425924377776533530249981819012578592540993042345173643522864213096593762799282328888658857557158423291204363031470231746935772063343359770314239248838962577816430362094812333977555715340417292972224409326219583383516762509554372752941652876016082004155198778047095392707625448835957063975265164546553660803620512011923840444256315731785577617120844854036578788576550049234842411873712409427531061640406287850003898532831235302650527886668710134241787703342059175989495947505206217695995992444948072693526545355753378082192085819898563501415191381674866064473332504996445561142664946970855889682093770349535380885306617851183409987767308365636453068830779950891864276789155344961919918359104742607740621308924788786644584211767544880299990988155556569048869931846628910806324521769379488288810512383745457768431199413623790699232748759138247673457466694033604793324369999278642009174130799773898213379741073230804176448842459126144991820200530009331533315298454722180792833093480990103757648610041786135266170703769993541187639754594463383724648854363695176238931673352874977741727563130031029055048751027534015105836255014273864944450402868689693972414219527354292860753109381775558838455644355254153307876167893042497241336426910250746971006540176092386969576790694601643514872346879957873786896400747306003394224046937055232075442329120020658003016758517688182318648346767549500588027994271392412237138427393759876309135288122221806756515153684799265810084438882170404999655212203499677743732517454153523775985904160719025862332533794153090310893220743147693498515093853302599986285979082622465539985436253037060194571283129191549437963076382810088777133466987815198241079721985476245638825300382574630222442195421601759416965833880689727617723221157908128036144640522530485951377363027372144473802198480731377523312910684263334143173772455597539380798199309894281832133059969158596161201128149857740987545475030627324177823378491827723401082494234278012766282257247354657851784193184944938590666505431312266047851346514970330942027077128674496964242110105261984851809408500966521276295820334849101055858762273460274138504263891608899076803887223532496459600665516556450702963896194632028199229749896147262391611937693053235266124498342686926488308495772877571264746602827339665427761234502709282843692345032897618398728432566876491370807064462318948664199431939404526389141661570149975123871941250767161391328488769536990552749832119863250269567556986882767272170765306099207505895257592165024908108904971075734347706363002326025945301779910631244952987229701915808176079197234503197671588926423682469801014592736707740111205463720576098250302695406237180814442290692467439411371609761580599350388102330737658164502640273795294918092893486993088117051574784322158667350601736259778379110375745710506574959447850251727075878140961709409671313760381165613400387206798187035637654916375921651449323594889801782433977293625817603856868577841615630888978256491477018899983556902295410170945778858502695491126364807011774411717901369579325590637725598989120709746960109725845433106246331399714699423433996960610372261280957250490860826460673521610475664736077726212520831700309724193088698153264762335930540156396889177132732550822919515113628041941123029118008326357248123900462489394365784459547058016896559345710802362096892329555707171213437041973299486356693620776434916170301741763662482343767609343461027697635264183438698143994364944092079255015770196417236467626728119017813360208116448469357930489613926865370783807048549624771969170732529845682650641359096598156479360233333172731768285523767017780249148845458555548263962099530885242898641438415943054095960847439272043914517751820898058951349882427763423333931195865740384965127806533348113665320867822456604171696637253714281063209188125936076335655194748113576613822385828475919053328581604438041293023503001815639195099816353352924491277453401979720864419234818758746349226027391969378804999470126225937945795135593703385527798714308010206971043006421525175353085257547421820437866189361687980027045425116342001095353366567499451665995585385720165146411284290426034185768173419359451149711372905660977616856142956341168623007479971157192742444666726853393901930545991702075421372855718111830626216418944041288326293644529830221755971853640758360381275311336069521431781372628578490634512826812131758839679499218162018621622637097750112128572722425902264305986781562133931728650432347411562610627989304247492665078282470735721220471564116464392582348692928337093003983194365629491132031683401672856171100107664451188329249929305287636056134695354241695084045121003414745818769809313244020653630702864844250732367863882710035745973081765540651535903919942341276799991136791237395204810510421891687118586096520408730083481806896259327420679110796419991578595522522836517712363885424853698650703970653678769141162477458353254822198935442405891698826845228761031376177808690729999271321960014704304096764050717253019717758888119822653781990611612130487743305145751328954596625431925902680839345838392208347365387662374767798187425961165463847703393811294718514686371590798690173065472683440649052547337276825942676201164832235531809511154887759298954928137552625424541937218518421544019549310118318550399758167834801752393531088215323537553587099200051148336788104467737944641976219433028842339964834520942745068624440616006964244496264400959293451510541344295189790351972844910391196518409937466594881710865278439402780679638201964126968194666732151991319971732737515513946465814716396920488313983797864627297942336864023333961369730360670661592133424438065199258793275843590226120447585243966517139733370047241527269246111093617827918007887777625246913637152305625422372582907096447066196154605355296620944025623593429228571633188465543689219910980985554927143019885866430123349852254935738618423753781939590944028936000602630469360805718514121662399559233188648163238658805413096864365338473967408057655570125274823850268571015069061149535305977974276369493195417042333588675930907363849801688019574799950841476211484598665434227764261600150312260994453320947120764178768675240252433683243922507284337769082521534811861951283276239834995818244105620851679030126391119167114638972999823159068439398355655055844174787092452546651656324580132598219397118911507066334960293768187335069765724629110145556501029445843432461147860904765308812603816597626487505386330293810593497902196432898991333003652547009666145697485186339680567528172643321665317005664938017631142406006713299769396494597056568626818185346210346284894318352876354113908443295128793604581942116571057806720667945320420931554336500786456256257425125323270913481586820457545219843246281270108086001716703847240861403755511870975883339182901637019284406989317847766599070685262207127389299158424035364529237695461834121511001320961274511719281494095362885887168921373062186746198619953045402504796893895594912029994640042179134512645461405952734747615948227790378772468721773052556352520127913617804929302853676534914428009962850420630477695959415962623004178370684746759719968035523774937545906605463251157209129065466739799213045263097197654868789971216808233956752897088354522538073917834608130282539834097895506307650780219536842626101711371209296062403425645742243769096946066235640350278027601611605611682024382060801139141613410917412568616032216265080974510158109492315871256009945454058857003898791685306829795558086639051799508834618668437550018431798663745661886678621527773054184448634916488693840631247457100152442097861219507365247105397565163422961282967428393159792888911248020334341933074767380922775994359960771346985852253364490573552780325576884645213615749464823995948181644842780806960162655421575231416047835903307615241599615422335562580924293631780950364908910120553060109909522876346608622786627819612656742985713502266678985755775686207754112513900867971451562426494268089845068431094542414892826609941297494754939329024313407052676712524324794390035709966562429990868790840136427963187740877634700187170522938155727118644420809282289868451965793501110076165369239108848833171834208876396187421049553367967740853567383653542152795858858907324916714915251668054132383158446859708756711240930700895645639374165962396819604619126447126940956825582028745766815739205414571482713698763124376456017241300992013534239744558088626952741065022574125539481098808766115718449264903717515447700440122242859165017947761848713708060483212386148175607823601236148752592728468991583557289916411558016364538520743837069288363747623017974609759419854751474299801981739145731844173687869021731732883059855411678448465983134632829437784228774154864864402960957342684914380688966415248688805657370458911168690143858950925156593552951101369063462998329685211290810560302838035257395401721230394666702742607556206217111579995103731805972164866693553421544353190280060951052829843644195458034822911824408176971687618402315882363861125687922282353836767343494645148053749544526758562604007672093476075870844309028285791538696724693532196869602774387771050935655635112810152233200270870711389908150534281693046147162606970693073986567147442516481032120806710583995488180070629692046667812906332884706286458281471924125215260438659825470090100349367012533319538862150758954120440457865869682102942251947641797936161303214903519438746330305718019601946943004318827769662860525993654498021781699859761240421107820480675075348376558913788073184689394325846732020466629607764152559629806938410167263317659103701103067886778599273888300338664027259136423394003710061820349922345290268593187619364244058218649799019259076789660270825197096786946429696828167799405515821581252339328784782818928256616183253200175152349152603222481829022072960321507591857100373655582517104521200243102960660426450848195790986797214996609474948250848143392242866406985208958023293887401486710126922553746290431780221598516315735844567948099304452398961140308379506810553148933567653001628526642996362468648125229092954919763151628436445599195708200422190456631373186892027571705799356901618669313848034896936164067088837238166185651744239167680992900680608876911201912134024737643493836985977527927431161210457925646471947654444574716181606133700659558562077296546291802450986604087895395516607681870030331370509332384917280964002852188293378561797159606721374407829048861219239962202152964749168478854630064466102468217520076424899352925152765352509887888094790823816791820446723273539967167860713862012227477399355351013020451564124653434739223378093360672635624281875842843992861741703952316896141337911763004983774243761044564302246840152709174831197345264508159958358407999377071007219400446771345643541744881979594196939641375549804007705103661719982990624767727469738813458961072201803147414272753854237090489771599865213134788937630318573776958819801157821639325645524343219205981425981032880150573755794347927389600411059223580140948903957021114080920010750352601523908801000247670199005878722546353297220453477614185477620054281258720816459412923054695905890965696418627692623938270024495110238465248455618369600925923297366604885818435916999867309384573947459001129385986901705235685492349568859155811739570811974390318597597222217591686883188992167216040053787178740483717977951731483959963405254427615740474617170842561485511389188622004337105232636810628062588760977473336264367550877825679997711455615284690155719250472344067267204767128189058905126381880451971663777785922880503642421327632402130723509607697969048028816071549638467227857341826023829794355918217760147473165244547976648935089214108538065796468712801333527803878169215567714889280612560866800909155676249304834468065067266724193176407981899832085540967143475221080296773474262390427696525967737215154430095878490825283582077947621264580992291451541520387337703159362044615124220497469395816696768608213705568988075976632992868621683916791790272928841051756572551448917226350400416121964405209661916062455183872509924731637078698421454058894612976157887765835193033798671213857137652799359566714329076600332216004244415445400859027542704589397005320147749613560491307081628254066007356627569471938448327351312610309706740421446705483578624163671545823281738915182778309536761115807410936171769725322559043479980033359422054745905256196905709539246120239707988424899723052395268613574972634655241351851839566574821987710020940845016428904715540340599334382744180823981763496113700009930142107391815658605103077757076548618673730381724344068877213974146202960313896121707530369993127574862911381767669943178913430722246199710316443597842225197885498613113286202407856663378103180753966335556297298963604568027242381867646631114950767737040837326085650736731312739174339960358183264753432419669841462832969198904307542311555649392694031509208347654449862331802760110949354965331177701628504141301536759887011771952515783505490445468039497668845143937320377126420037558366410921388163256731119003655497958535347005446898887515374007801508901918838274486682580895731137292073452342517321825947374678130674852596072508599512874425163483551339169675844992012104416943895600352574713033726118660116804203022627727704829065041879382484391310161248378632684034678431321252276449438097956366447845727012608380754788845260128378194669847297705386625910646033115449284736245881501025803213249764837969836210039932734927289256955469227128041724120450744647921854141971547737822628705657889858586952315166464699405946007199916491403643234138108733247168460826959323745441355800898378024084080287260538126376298165181380811403912555030692920099732720138871590460956449046977851239205855085886643417646905590518263282343619419371628849181445946419504188869638588651787460399981290489506964549623651123616071211432738330572819830945597820367376404039486988799927739080039540924646338988865794971286244029041086223763052362552547352820257738675489811927568288708075395757707913225002606663490959160699656668652652369741753348988351519741496067119439906924799309470853395012713839316114287044006418684998428775966705546610116177324177135145380153231877147181870655383058479812072515214386587686276296551893688622029396743167953305047682889124235598254752703058854653472003431931012911677648742073748582777811010045597379196277310803704721866580879546752359103047492500171842355464638699290572930917383406278086462077207532567950242411239018361044187710928056415504047259392826017786727940357461216529452450238916489729137729778009814057315827120980844921994072366233906425799650719788379697682400716085118733299787322577270352065583888065153362620657791235736123893355029309850548505226404908766796868787777985238793540358869918128522280410251198431329061581228064628917330046984069524471166254749807935900067556094941989436729846892381718732363439296841199145891149615051701889803922610972160710778444626715508906482081298199142036871261788941881859855999677516898544076898216709726932817842613376465959430837443727599399160620023404920323000533279793977594531423640247805370025518284317413145467090021499248102777258497049228663738570400187590350435628544255074371761450092493934175394355391458368366950421992853998918505960774998469782688971088088404435335440204910098205482954353324205495079648412611014939779816818016660473747484923593040059000466509186766000369595699111459095991365639571407007841418090778767999092611848046026103754272060426389885608384685170700388388374767246049153669016654551173874628282089860272198313768431502345088711720538123101067188132533008544569154243508626768972067153747052730830358092277007124853955877046920584720597960523509263023405516256940041748242149262860692931585371091398979715525931591652302881336563416155731139349963352751288428053252450282114175048956307127597421020571762020072193556031446978695357766214986153243989805634520399513490921894879685701885144275037541566324491905731129402962604026671938928088702371928983340935349119518426486746225485271268309582429951455737262735684097464419321226399876533930149274570528151367553826963582785598190555320822234088832271891693512251006575479915530692076133288288578928524968691456207241161219620161982154232331013572769334788685626986949724693121869894283303668307649948702492744445675616685548256587433488836926950054836899658801049309007762215797342814973085459312799976142607231582869117008843184271873685076696664288770838540626130198642397122827900674616758535952562048487938969466573474163659352309018868290770273077522468995315408869968430543541394843929521608263999980575505363937428842427337417023362842251766864859358190337144978809132820236294926321194811369316254791253007749300764881489582056016739195480029576469527299994500626135484443206883574231765690936104367512705723916275278473106385248855457179782776645515784689656189819552202242250360892332432708523517888345042434477698143783591367999788971057588875163061412153397830202539097590701181584590851572452930571076602863208462475402736428118724956537938113921423493777669075036023211643510147839655522095261060790107615337344744609879972736976195990516140447161741948619814240488117557863529037640358157322821437490193684490756753286689954577716056606815514707594037165839285032026640696496509791240993490698691105055397622590718866870574810330718918415088014085010213908656759932454169057213013152920633694576487490885702535772042721850883587066122510485742219354395453558000896331723903299656809718876890597333158180149441752509909954310586079988640652663387710110889047928482128188933687183616843883956374790366748756846073633685630666167810997624075435656251599354495577900001389112749059505883454388772938704924036981985627489814532226934623535984419723207243751586080336118125387545971311091259822569800046205505740626770277183116201423490458190189516266373226510718607639064552665116746039478252427546110241865149179151101429245412967825996500662926963512176184918425412491570637965458729341623511760718207096558947025427761524884401596480051339902230949488708516555912698306277440685472549134802708612659292031616692211655608471279055461276546576398416390954441341744184426828816826863527964548553192653909653106128248624242229903601177110780474271534953863572038626744509843270981347257748051455391367790295365570300807718115262109658677766824405032079652116147120508854513751530549992151206319302072386931137732433251673174294652240766819583982831832893024198597394613243966184243002078203416650821279083039133992251883596354870003225229397382330110847003617459508000722403690378688611950108620892919075705868633916143297307757108598972588372080041996737270405699086199277446207718273246669385713591352766237120654331878748868106627607895400217975449796960979502112529692050375933050087794033625862092286731551247413277107369761794566908614198562446774528093764553017171175093625595032370325623978781296713906831018688172867779122886140731676892982171982681392835371136688766897487946412912977806942315023269306723392397824557288920499645717889042105429921598768302074203391267290446666155412381017798888727650629374389867714431977361140856669494820606813362187536332624548366558323092896701933220440711267826944816363943095097831170133132199611738824052280119882978471328200012357056579822608179970447300051219044901219199726031317866960151682940744120912129589414477546767396628468139955117066813696735912658411060354383964197772878130787995142208427384037598914549069246219108016990595190422780582654605423840849057945518103044992611223908302101241014454632280718710042729795099030452721075575083752447145469607251351991649852144599934720765733116515662580082776389431351795645378065222299753102606329974381582397460330072333792386737641505323152129736853701978888360695033582380482965473475761067486636646272402925148312518458617589039735884467405134351121735560551323965759439523349597254537136339097455184712040171108721286505732637212604237082029685933503976150322412590540450517996480666590927457138907704800595808867395552269815575003956785666538241505858850108415632675106886657999369475080900964759294028476742191049215449341940915605126818281622681968272612652028052761590460389829083958373745107116351036559128266152473121243332860566216980025330374507716808161049914996716179107066394563611318913863533101904855214811451899894953947608762965133461074928953016803563487811467666405516113959597832269444513474676869772238244332496458084047451407644906267495104366571149780009939769615642617913469770531457148213447615453801944684018017485001563971132763601953028637864942701293331795422584938050453250472231474506429996011276716626819183672751838484122501748258525446320918885506281651581086053610259951807791573852328036503584573453643767023827952772986121543171033216333044924990563865346713141346269118901180269342595153045008287110508176646206256774219720035567294366686246507741154372417109540596769386941803839189402043927775912486115545826155853384720146387319862781412194954446409267799656765452405723927141539685090422300617715352485320882582398991362351487495460374908049821085089474923633155001139682890704723576780397151561588861480104869413178858734901564905361519377120300924487859557810875448735994508028171494301528518450453960089119004207468814193723426488452905506007843060780361461585141739473023008422507943457475662973125101963674563018277433772418577609673021540446794938188850782236843084419902731806972851810378074711776297061159427804041536761406364257075688659951104791873710372942718846387134724225249126995902413598354701894412256227833372322296380837939161787407371878316583017602504554440579488552279573077463658208930881332012158675800320337872401124997597596539468398120336065550225638216475902835597185156394065423613477975254826438777950592925442776700402457461098284755361069269876083322742353748318195773409395956929359635075578479845310651414833079194338334086813401936568207250712199131253340502400161876063766962442075530705271859959593052889719281823944006712571563682627549986794999042647136210448703967176706269343288811750130965439677719872724508386400156861514139818777072588616859994184372209222361300977092622244968749494545216234932597797735732606810454283730028876448367911243445966597292451862468359048921613719271021154343129892382849736079180404997509513570832801693885187745513063667931317302456781327073938697879977966204042317552838011811956432787113002600777929503917583123247689423905053637510091144596124280181504325664993982361789586208296633739009188338742421206322037525315982152585804452838015943731979741787083923909666316756668250882994684290766633402375001113475792279505505022282250501603982668103863153651477331414908278211057522602954368576998014611889396984300019164697835557442107006435503326140329217686480481174024203704557382225872247919808504853686107944759563190129315653478140856762437736323850481267414538713184067597150485021813721267954367441747693404140987918020371790603667647991197040038749811113700780839774644296341794139132962580221310889948535960222673118311592750353387281070848822213055597031657446990360182988771952395481520173435105629410003759843396913727853321422742766966432432582492931435124519210971319018948322087111441906995048639758787207203211015329041692477381895794327345375065259259280928523569220865276797471151619970852206674224317373304845366951042461172193190754097306182067999500942007187345845067104772409733799018870373220574931561169994344144739622348583824509928275274962601286320471749411705192391419156411184258544386737072918051177693186958292228165050684076368111415137900543101369976037673009228517430872627913727603912391735250326194001835041998458567917530959933249235332318604722216121474795335145071324039856424657720844981065914024351605774999309963475116007990142001957380091956944940167361396483278548259945250429755951691787319488791437627268991077142337681011667704099647044901633528733340223857231075054616046902964326605202036847243108514075612055196444498474935119675723648463841008082803491203215586125676971742331123675259370538163672571788715593646492186273806965348220817258162188214869446396106156667456959167367326287032369724393786166117569203213005601965883009595117082272905514147630369048512065235916799288074042844994843387653110764445423555634670954827113837712856974921085054795183996734663370955006877288597126191210129533429917371392951237956854929883128411536204492166636276112875056248693664114535451262951356660682293922209153786752314671228468908774579853046264133491556532133682051910046041477285626780290312880165155193608208406119390015114546807342477455083301650764535106208050628554544976377870400297149565739203705610476076180854699603046227535104301665244902733395768762109482736747281234663426297008724969447902906086791799686826290593468019691110621365578465192394420635893033163673545712296411766876901287150224863989042827106826729967313198712807711307543802665059709660759515426145878173288200360607293015660555046950909245560249003268008833751562013857548177241536116519582951068755917337778514259224674267069835625080556069320812292795612279652984689068186283703279553993216864634967497122733122110197505570495435031887142871673412301685090291274952878015139686749311399989638473558710305851357965385192182741808160952764068221790968647834445903122183533043569147228680096264179488230631119251558106386280273270817053852791984924753585719719834678383993037106237203439613217943455045021620719165642169448314408249969456220437152192682906240021409501960792009285666243142307058856577766411533767296805924042618384992102214522292978348286591031879619518343525058739130795986459935025554764536999718668758854988007516472381603956961727472884792292266756507237675266292829734287433576566221549342858097351169435857013222166395389564992286730910958480927269198538275925607894489867255536927359747411947960417026959779836677321615952487034305616129952172105393928438925021801179239638661219381282291792678267576098657063180243293238394948734426925093623689617787129873637295972494325883500026287724953290307751865088517523304237944365915357819201087329767324062154510760311366027080031650987276422140163418976566361709533004227379063828176538899925442976033711133040321939103948485262665055764391330267649932211400962382762458307293297404747556592345382885794061854865929658160067426693298447143554282658050919023087738012401287333340243349897500509588236184376846393399870371981550947732007702078963583978798549372833751902739786631166447478252416099211832691031776791169747264266023957280473946210844879229670527604855364638319237201418810995400874098216450462258906335458137475953514287650120988728580215319779460169197619066171076916776590354081548522109163064528763857089513323208664248622632559028059655992209776412520510881126740018802562407456166476706362134242183053979524223590345606438878521716574372735267581889375829505564310748319669479443234193623962581514026684950343049938756453434123464328959469478023970856903549716198692203997572813079715705605455512016402093854601121339259856407567583767779346987135464227055838615323379111274596372728094731958360758381465792582741790237004674026676286754704038154862615225189492871061128738538864732557980273692143012310919629695550023867671253210716789297932314968329416550191424461115170612854973282797201361584296401229886190068978799976903625304505446007012726662712019603188070187729227526239537717855844870210447226277512651580815578234666706878041106787958293273183607697330857164347214706903917202438641223434331540996244368384222865651337855682541317278094543269930083888730481854034724181860841321399655491220050630160175710197802080435004264792509877796820101708071474287524988015428572869413116417144748104946169567570613554836626327384433312003902645638254800023017136209186227337823956714402055920173321658345846801615854188227094714939747444234718797279231090444385819674058793898569289632778231606038407766179584521525786089001509739506927041518559613098488148070376041580339180634237149279074439671736532972901340168926097270171795826224717100445582054616219957142832328125990258285314488457566873880723197384475500628935487378065997912060664186054303945161101833726617924191838895186982773517199740234418403766877395713130702220188718299324682317775548506210643954700683282540838221010754904212281696058862961342760473992940049898737303254924124449636294673445522083762891185448682046964305239650908509585885535010632992747135213072447075076120305839623922316395671913311667663628771018546201504838352752678647314936518483181243005658054607090734832442558893683575960424594296549394421744084762137828567386359810289977756097817958654220231954455888841301069093832651977994691637983358366903307051667949608547451541341187083156243751821925458597921716276022694333924078651905656510653226733654547699801084265023801896514003644703137697257963614990886957053801428882191539222898299543850977251617485896245399639002583860888562537336329517287394819275298643081596936661919744616056521759063352693603398678306721416429700856008594589486349119785709125455231300913682606100769836064008140514852172603897327453469201965850110043485159739302979806310621784255075122864513363601322189917008798143630413326984777925436779424076343877974865655768542169159648746748397022728387262145821566952448406662536868772134765878313572499596433238228871962086550885120694683273089541862406719111708918557883415778240597993587823674230586371390763936634678889152218165011863360683100726207001292036003077046394795005927499870954529163482263851061689979798284273036088324661675988079013194649086792443632812173533773933571665977149520819435274100605389705375392661926259575881171842194763980650489583881225405485383843373578616955198600484227570397519601183805603703423286800215723000137632484577261646896310702890660132457220329404206098503073734602526043533292076196216897381259173167668434798429339129696106154189675905614919579670858413072127440614977789753327039902618862293862484902248622870586055361935987755104406847069089902444708241386139640115378677340695067675130658731522569995341462437783776026734091040128582767471275865125900844139365666198164901581712480845547420799417805020807027494060554239112897810981359942642532653372631952696002891548362431386549036437915344272380205559785038551671202430653233439301569189294192349204037884918208428026058036820534149698810184590992145651967141495722554433441491875645981812289382370625365350750121331275147078747641688045419867832318548715462301668547989492857156644194793065652416955263918116148471447154740403363077175101336177078219193178268874064915428481068762434393082324210734347999463007180384168338550836141042585955110418322310958992095326044302350159958671158864295583929345810125499642470271991667285503966087814494894206977163130062969330858809283672973980452851254093380477911083098431955088417654931357657068820543729345390085432877031652786094790403000047045807801308487052698383390099609580113984240699173120625578696653944147800885903385294390605516023347979248169706697252566377869789582420616413540390096080471206806510054436873710715550297172510159267680973460315058586061415114693386656732952344506823270391365990886403420833269639227361763677823361358903134573301326567356827003934094950831312143782320488490403989771535900277363374485948915641174920887932745487388145725109108103193440315044590376257303394084694477120481123863103839496679775255139320134873962787531452911759415632191898399654964856929368738884653545806361591135310709824432605572575039014334390909834233561600848313803593730737848371230266921234197027667408054634509420109951403584892499957824675971736796387406251602381406721190680973093869580051886099465633247289537887953868335780837508037366993064352655270942231130801323214737407664928510825951918739885750674141444652696678663194942094190040394323018244768880111097035654303421646122621350791203128390237649028498349506103853471758688426221966603729235116042775701928104957410124294465521572772454505156466836133935801840262126670605195365788213296680340084994147809757380795874251038022047888861904962818359539559575250778469189909015227373713497041417961595420433835552456195385302438284085750673911646864613687963884504943249229587759893960953875607907662546670259708065029937421299963993586093020595649177077206492848925091733441290198612757170425422426650217858491314570744444626992318292776777738224569827628337042795710727706705432819307832264935644335844736986249867328207946396729188318070443610509227922550513334159769347774219832520467507661002458350977113470914202053405652350534538685791714106480692444723885598751574530860578959344989530254544116810386609424474563300908832319269771933799682495046479143852223578412173738785058865917574931385365383215648507355948200892647899980883357273803073467763090189262882903246564465150707315571850583610460103582194520982463319066782950555789519066384743483354833224593578057198823151813864760426350617001106576796476868793243736021835324037474110249057552649905205984260926955264080254746594350510981897017987544065000309369469833632376770351900803344671893651992952443645592708343166559170185189544328586083307566762989802310319642640270814765131516866975519993711783901820605387513295282498663354927874878693289619866064118331946188808362687950256435826505469495390010618285933481054194537207794119004581193059776489475125610314042963999212904252910537263383032481835875668562370336009982395616432482799966217300257084176256532674700931965750377623192230457449541888634314862439583404909140896177277486985273847038858036356689407031080439530823897978117918232552349506416609238051167157804752977821907090240597640024218105192059436115498428449558430478657575866212541918428326842762107070566359189259612069736439256955843035094274720082243476023743810988865052648252910060430853273978944670595724758812062726826305786653136485922698429520742143304706767665748944089698382544357356680286856555837502604068120546078871700740000635928580338855313728039020832463310880011367360868168022106842380023059850188761807706030389084645695717407600604755029737200789557215018840463370729674157178348730293793446639448502196110941490897913703400998354126098643060951389598954561182466777661589481834561973128553128037631110317694127349330279143127359215738283206831617996948204862245154868915344718394243688692928702125629199049593809125968080660022089847998114797678227414910802603473679682991122873116687450421610537083358970014194038809836855550806803165144416394514280368834300341672786537354897169370075504142397346580231708933633436848723689447418532516601724884238306697481619682616569426097131971163706799011344380065918151208221528598541469488838325901340451774766518105297820832937300228601691956264831445606208191076009596801964231710427436655506540747072815439312333393371915347493149884014140054711923963970764540169446609971477356353389891655739091197116742375302747279875156773638693154500420079468695192923861082616111343637188951731687550373843274572389654785424523962337178924486888125722608304205070176304932938011728499242389585478301152581344940579791984053814452409933005170130477810036918514153143194847986142680542961286117704133267037188485677591367807379949732454292291823450451608638957963184998837898604701186678297828360200810331268372512814279416485353397511252219863495387781155456248532432140631505862578130813396785701935073822685782808161119968829694876565830984116303793061437365612047792452833048523303939184212132301197033385866570972924781735189116064613412198370519308231265930562597154204061612924262869042193441838509599218900031099536077709391131319507377373848907462945003817943417068981513719056152517742214693000916628542041079260978078117752283275049874449289851577859538102391301377637120158752020395431984297947584963521274240628879889408216603460088288774594780455500869495912593789506185173358256468275669606176073803731487588251965285466620172458742952173878686431509453517270610805691486441506852534858684669908257570762462650010346680549092692718379726958149604263591273877167299470207496899063962016666730481910974344962343693539811990698120172771754137852184979502445796488082704543046811382652906404104802074795144847120846522455494817127204540946567662653950029190927263200553193659500424733700513129948519982384979761015565495845377752833452647872080852963107884049963424315533371148107020350066810153193376477625232489152676745496419021423339792926391742098820970427248910655840400757126091783046791241955505160175466885826596268052460309760180626998033761188295802110275428646354410916000634416616792929260255820855858559651947547418710129971167475803143597192501176512426886229560924036815149204051101427245743255788815382838638418810739068720001472992837434679068632012849625331871007624624342506145137746972092348298275666256742491324099657931915530927894899319727624566169917860918507415908254861997704891077730409934088841961556761361752055788403562882871176494960713701711478468008919838334673462420421876016500334769282403978183437904667083562299363029583082480407314496611165847504071336562299052774613437289472581349950570233062065279670395929844781509039140413509990715161942205935045469739430907857388187941694683820592610308263488196442291577726157389263394752096537997141113461439257297013056913112323050472288285850536044412602579169069070629028375277134288721654334495932964139561400828933928671551869970274257309241968863483478427179350411575889527887996327303869725740218687756861765383416516496907425611806191468113486345665393609568233429601327877582623541472261678045018010534949037343840173243132167862871037103908452745318282935648767075219388494917507413164384666778158746046526352173273309169181171556552062959289532699678810914963582364733721984821549898975617721326422865608648006589328019680626857893243073313058340322678920043186939101265648160529947043357674055550293520188314617831745370001366587181700163652514589415283840476920192760388985668541410794947867590155555142650150181247226417597853864039988143681208806463910671409914755455722949650422605921078300502686957941950331083925796828890971295568017923835973647513075822302155194395292166971577408569158771420337620250709284273877940148553631690338121563757137036730510996783347863319666125374569511854622497119229915676051334967523992711066521815684792668036179424308230463420395394730581815968138154301976402554993422836757185301214706929638580342979233888348091163189993762170122659995364527601538458389514580820940219035254699267677744618169276821851690323008603588243427333925094125209515843617172530288731021257841528406973084604743110577889450117926806182202242108640678351191794776144799073983744369197386948399916107900502574149630803273327568958572764465128106650137306122070467040267148529497038214476388007876642937000914276818672810295720358610239288230467411321144654476872656017853025531269053130621574953522765529373421001090224097185024641308932028190816822425608351949064613319353657942043672256294474728350683679891321830192585988656871985484834377442600075395238153266159629293804858833182131950318419914743737890883631244615238742659256338653353326500975443139986292860096629440913951642028191932910738835158329146442133147004876825440700333196911522909760620820750953478569116948314046690515076094487671135010598911122078000235579804792498091683087920825890016200542223932648921661521070759120373369839306809354363827928706805050015516210226419826883351771602259980251364312391970518970469560277518648978209674257045922881280624679308237413623438694512327233285360471100880231613182398341754112847956600603525462092158345049149480206773762566082059196630318074506588949221766481826410821284517286908474603971108749666259151514274459458235466318508439757742204652407905399993555421292437041388443623935195925561213443817591818751927650362456134467737573869457039446505573553449827580375524524962714726278433282977843069366183293677130475148588709256857295466390006940291958418947699856655099065586704167443841235290707392374504381270722898490398212536768552591303840060589824127357507982524076276638999231984680331762175917320622032157373415596836926908264272757465870754367971047333567520549341493537772748947077050903053891118347992875777159318142654556256151853473625132586987453420659142370479135851306942471000475554711790924895669587121477111699589289933295664915924161723429510180615871284450133584681875267860571787024346678530634312234775839589745065170173977538922638531815469789113698823830348520782457511890408704693230102142976008975268175771459516172342652681059211253346502204950207313418879449255010631704749765041225261271142028098154409557925292093653039683460501676575954302460536428992151200607701348174723297868360849948334142378718555327096812117367242784829948841746498584914249000167076592890223513780879607587607743229305266751842645799617931833818384321236769755512185287649618095177023986474876704327502959258945132119375882089593672155515943892461271578007847662008276283253088259538335757696364427325155049311239157693179653849453443892733625221873010726917169381767727068956094302179461883096853514501333555368140723433053308096717904123266114910673897725115072045706300481641494042883714658584781617005876310987714287428592342661059485726359756680502180584545372165903087149459615846179557409489106336007817271483844605749003787741086386240004913122133898002267643867990949010196226925493786001378084636311248029986100947367699648154189942937958545882137385155212603764055646588605267230663677950891495001381151544394044636849936560407934282239749701694119255233521146905314764957795896280007845187900155634523507500996288852328812968020684575937121926727513513641540828810475704980796771263460982605493958985067794788701630409967277596541459590398222273845988385458600607941523789526755302321911781331463483109030642139748656431297167622511458626917992097997110978326542734156986823075135693541362434454907552620789763894558047634919539302068312280613016560620617512025226312156850699835972912329786927602463527886002700922314655784102723450866017043478085565115473235691283941453869388137228705063235143443725884866037454097021002129620547847975924834647925886702114303379402348085806762940901547228787940576463155405439512004700813698427421275701529676396220554174512990068054027632321244457417640467849863580549418852158244883748883568127631088905855081607375395708964838375095163839625117781680669771068005382273195299363256125262354686694466336796945993898196593593820541756584640830195494277870638161284700817497806759114335133433355659520961370825055875519737609534263921574656982317936670797336504171712702333097870842634009968990347435468430235585693155663509650217380957898320110823635566571141371744607131745368415222261254291456056990401640155370168284184874495528452067410771671110682974563499531095945085717834262414386639487148037616280148519739892963779209204905821322194547360928477844567999990417593425488036455288194459520940538699892032369979744683206280057481133231946093397840270706387482004906817097718950183819786574360916455910420364952990044681705653240749147918584057714898411291842415700803626551507283078855382111337292607701127935406783058104844908527982915523794907791090639000762523792378025890204747915237588230798584333858945868537935496545431973379196327347031699988312995894478951134214711371860144384099342051185001409814503216844035980342582333956271542088953566637371563629956118750376594269897594739014753808745237175906207364245898792344155861572269894294114245190253612635380891087566183252370632379356080904716056945868794603424096487215451129702351979943331629376366689283328763636036436258329370237389102857531593978966546003763232434508208353255314264768884220990692429666943918311024267949622726322911644791168254278817751968672990644856878399826532239665689181057905235551533532329379903383796058456545441138078769980042617194703979910785646963585927685778176646341839535468196728236545724057605727233791625682168149267000616531206360370454551447019988026317661698748236142347026424822071239511791069401909481332301330812011627449755826824472245028743572169063505227143001650175429957543748450980999286781946683699655939417923790695876264143650781503951113341425122075028089562081594551234317183200147874253787120535737865280827288885500623265632910473216910548909163525032988339079642269795175825221454045925904665832116868961573500051247019038188389657668305406979840139310106977214069380778869679428559075448718615327971161197730020085846560614525678858274417259625119768729534107755711478733658054261493809753055131435129471274550146759821412226598408781249786356301154628106223189941501617956233915908120722911305598630653613067724471844483834372499669675833847060846523197335740483417427823276981524140851463781212960866033040741473090745732241525128985243673643864299577346693272398610063469162838235670773689646617830727989694867525535868955115443932624119112036892602995142865433053967672542741994534159334188407994954535890317979438314922050942938950292637399148059814549835195669701127455447338361972827841211244164472720722982626060895030411392822992448296942728715602423153330698321316597851871005624503088304609084683303054570085577217947412077485911548486143222382127608480267479029477947598877795786494130894267028802436346784819083757185055517886722194806976845150257885395178232804347048905968430318146724199532091527913800487549548161608210804216421947193864244210025739232211225043356615917268830348503053093442084251570738425672333160033396596323867685060919879741671381834147981408161942994481760947803246263491347590914912028290369970457567013190334984475094927398262427309753219849250813000443273493453501617901485497888190992258996668697373589960447739211887497429519472666756073694305264460176650087827563385945968577292492524380909232519014346738567343962436725914150041551419791828553869140791497934839862576937521208533082426262053537776085358299582568063690559673499872071080687883337678275481104342128776130541395582196980038878709472970797409893363830606945220715386899881427802099065643747195598073608206483342488485967040745696880834723955641491752184369674497383402108545529795246933976940036131259150207492356797567136092209529478348431906089739952551837621404495204974893566643060234835358926275311343989407545989497259376007631225298742259327104687284590476996816315754470572431030549833864820189302116075389562257692153039456724212457406812069572568998804183976537501861167269905314071325540117680699095332705565104568722483672669475821125718299055737790457658358261057973117299129006504797314844341386008613375141998363829413620792361916101148396294204537997172586906228920146721774988046841555024899464077662175869981005337309494330093172259532028431520921783408289381122460391819003844694198891075910810705768927444516993059110634012823826663597937599959845204899195056393963961239481158093767901876659564746005714262346507652528700481909436196523768588104003999390681881663436047010978513519735469461738597081461565520652354621800774133323954207295889430950615515519380788520825326109938064580497380198461323237910946692442308660596790591617599673622927655641602455607173101211062959310048490631188927555584202796682119481791523214072602285103901834421486148986923527948352933335824900312282688123333107408924928289787896839972309616529078416632131522120989230671746651265892984224034717969673400895945472428775838414220758098577962214366674023028494467127759145184028106031979058386840969698839871162118695294451770810212609245791386251798880084438158248197427928361768591638188245575256755490870694910479965514303635621021404383191643151822405835227693368357806912467785315568980780606392639842327455673818327544781079404081318448444510582578608962497947661956467952812755915828215775146782019154381977533056287840298326732439218239074616840445152693583428289419734936795677295305346070345249478324549985520132124930506002346655102700956329576862232666838170612767068240346731501793599998397285543620283887707240173198203078938314734688290976939380595217206140898701746143444089215810272258058228867210497609665892015691920225893040036913936010489866591702969418212915723388018140003885273797040236322777824664456280360334543969927202656629565051705783824876019227256648251354311599455586655288708492885629848030067956077914429987875496447989470087044895311170092665118486990263799426354913283555315438834055199466210923960110453114924905495460534304084719849456348554864176415742819032577744487091254980872406299899956632363412322126550170719922052967023509044388095225232459642726275967025896755885440354598001399126760082384188949820847269328184450064169144881137417972294454327065367991078848646118655632171340044580271041575808221771189376869953449169474674715224289877206064734370603462714087744257183002817344411738813261780696643909787195448204470171968111848065721412086685443295493946277349816339858459243428918962202655306578120496815723844453136800311718404531807798054231485331522113395656588716017669805153398311066701535956342914321598306615107328889072664369441186132909793122266356008693578682963612391979087246982743750956034824300401108545384855152026941821722655234123474521783739526354610142025940169283515057851219584525153932910517646747794205336721366554201524255901218452450891278965893791265311586094452152855465956997421450759209357414090079728200929264484208250590527898373111866146339319994984460868198170104432434088611408190142526485152701869048736428410147707743579190760054322603029076245807769757401490396567853040185355574987382352428735718162626746144678958455975552240035940921553554195432512686588115095982048546090045911831446821116841229864515431923202401669418927630724230900359083812375617386373106666911119606279880735429222516624828754368663375115925771097314516685610090542050674132428349075337000609295703837287114865879383270394247056622770596659689151133381518578996515715006792284138090309472135697699574575139053831258927255918052185293536845872701306938315598636865142876018225035776802363453887601506152825647096194947236092151360473966996465663198103918084180800412718685096684163095493478621782935299928088246953080544643955125167604142117329935443749317981553925644427153891862203918528482270002555286103521113915677763308288207915550360755318587510166112400449373670426406224731510608967504204414279455682691365260603512666634593283149109476145745803748803465165439172640065253391103209175476765392464401942969080816933557229692264111795586054186004462836501346749788742366121525397846772552275312808086582015866044737045803054646583042149767729930080207276892047028008343901936893209968134388835821597260179883645960687984113401219269889608593486125365834899025910154424363418375850959133654903977802286234014010185311104631697423984179810848545732179709019652788127404796722724137779294313754273404461566202275498487425014765425810606375632710934749979141373111313275095079021345475003869936654197444693072140750986194002831685592075757794483759653550981562754597776445663402045791958617993147789897763617800797701099662848708104594114597467672121495078107801760627452518109575364174689466148238309587381355989690386009038136940439836100160873289349926031275680075246835699076376936008420204916821510525380250154196062384290104187917902344765699539130263054127518754841459877500755688899719053617558213701296368179264475922913721750757374712645794494591292788191773223566842517249216264036975421311646712229960217319542130830505591350595017532777836761671824148509245269157508888964147555660399675388053201778241695486402837522163941023144303597242785723830023783752258359900721626729489239287919053145418814946865666769116173474306096569562907110862960104317916317585164609943379877352872868812903649329017897468422056066556336475477281620192651196289367349901837144322536480598369145752114880050903249316569029466184838078596327112317314796823671832958642359745312631908428815940999998133437031974011674672377107334367390640076517081527880957714686578135651396123838001901760893689429034998844954642765916591368773883899418765131695105999432177490628809385974984120562942250289262301191396046677636917250284642334215583945617614397403926047234605474992923476888813687011306466368418222007187872521061335250607613037317739779284612589655340023869199217473890451589669146329839482023690423352426739304068198455831861174146791792822582059964397232579944573512304922778978560771123585438540736376754472428043759804193558738525830685665832757185727101597145482821853320596103114022833744031096392248899317137565794034579319418622753163826084805037663003805298646002042515080716203816090003890616254818529476722023987258077861086163881957277088924250031063487499615852662488242244315339203558938221292294010167297922722602560657087063882106253283216240599518564651319874850193892724929322485370258379381371899041782282400113502984599460279835861325964870411985529284399351856339987942342302315138221959375741746774666332279511275656833697041246660893862662261988384633298832444709305182992519352542883485728810191091459349889931325843875623114349400964976263276297901974362149261485622478310881408695109455744157960104972624793614965599563910250574805942711118831611390048632954276688497808408104067828840347916200712898931907214609240106929846472373850087788840452643238034151143218153704065270339032682776138963492220394175223729108881125432744180552331272789242456330183937336381112115433923844922061400438027291078487618419343234978236988354542874375724841238446145602655501671986004025652449608417512733996113426797549045541887858405625624253458148416072330699750915084819160182845408057520511050214161763713060337980622792321099800627959410366105498841670745896362279851780278220757227967816549018056991137050770182737274260679058929693945261869993237889388629071184521774415695648698806172586013219857771440206553533277343744833012187906219541224024611020958934241127533296615161264262120251729777087760352912478073550230896504403642759038162979043834040384370087812958025536807867249960049950547135950273811560236995170244031698314625357062068657618052948839836928508714778051595733811929282971145490974834269490687542107846542668621042872576862433217064868043491837614243190945600611611049709891918747162770812019063965139122468859001408928474877616138688083256658149935613358542181178499127047839737142252581647698958190892858856333003831507403804482745745454851889396283754770296641712349368882078764994971253649258982633288619967674993974136237152338819900363732087860736260767468119818687908156418993268558932970432669880968986886659717102515719522068536258692712588162519656515380331402069921114586090442025202644498981458455442520957647076881352512002509895518526642848526673264180789957008189303118872195671031131678479571461331761673654893950240748236250764788331154392068611202407339337490582337019016486481568444151311109991762602255897658362334460647603546006934938239196061665318637752118145450257188320261133147343580604139467408340089103404330688993934282190210700252177799394996248801368317371585355674471458488736709073427745599085619963172629879221935669345683428517369787325047603861160640762583332619705843220453116296599715137084413784282749405177897489962187517983633617363439097040345429714392437443497683443185556600029525926084303888219292111769440879048916161198430145730620052132525753587739201302034737842818684956870549408186321227911947229999098716655169707887332798004062227991185978372536925743424932592999626080169858884990739400311134305846029740296892137098813660844918883306651155878213112481158080256522079195005937319428126362002026055185139494915568443398973825166115846438196741595669520941775971715434042104058797053490872513501488711233151559295624163242464802772498188060540982165461759366916177516549249307164375038327245185607959364150395058153381716725264230732494888773469765432987357833987154321223407188263626611838027997275805605967999542612386123616057411122276531605985049616826378047523326909675785214300718665815777214108470614875693389358498904718601982968945817984309103535555436700284695328473092982495622781941864002265665806245291631981006866454474862782779752097817641497360097135263392381061149571786549603333192136029360352298935142768340388405783682642069015795417249562176891994158355597313955882744145962075503308381015894240458127286583053678125099636055245970539452092250468141353690630907024794303842290820008872432667224905721744946055250619838129081421650443101081911255386804868358665057599000523999561669544356749336972443394175075593389599654465748758411081629372616169775943895138731942458164612189024691680614503070849624972478887809759903076819184619416700949658808574566809907514828628039273102811494141642857870754717569754293297059447324708989913428952510874241566830922148807068598108026750030714411560798575661678906352206221205451836970446933923421660566247765182007856890846291808603413421747913940352815848176821193217938292017382729171848915097747605451869644766056756949826666304781534522885244751351986566280477060408463484655460267864180822183708327038795533182961144974301380037499643930111784400186689539938883747057188660402709607033211895596548861585368213149206818617257290111840387434241879230173530310137935787319602386588272024391932263865882956647809709305385707064209510146051423972789350679720498782340401609248573449495696169889324692670101581127406161849711420198144512269624712830185318529300629566465890458458214097022652122868606146900568713047649462194133447872841982048998628976860963313741746292880063459765444378752258513380804871257562095643112823282566524473297142701640012399741739757147365118996894494286605995426506537112535492311682561405400782422252457727363914791300408792655109659847011018321578529601874118490446078746121477198337358178349173658175109615504436763443327214002585649831470159948941591084377751977504592367783232996035553865003416028323613865748166144133700469726819682093770538229344789887481831483207239190061297380029415618651514384678619171776834669672668333059531063791372932210085415609704402089022921164026568583403903862656610176297455311804219577365437738950310878174577667471629660975392848582622416940933210307096125626822746218636938219592863423211197847836765137061478758588535013782568747179948825090597561880150563951081671470422075149205413096996254904121353625295636201125631308973556426000269571323811616056516536946276893332759323288231979971780818932735329253083993912497534713875792348043302762066883334274433391198350308196484794519103027957044022617157083090042574310489504341218732681314851368993092974987722974486278097448425031961075842220536363525595643446166344790605573371295071559517379352487736194221639058979181367728825370604272636533839832727275033737022463424416171620494343011522003926221370965252000544770599934519186379719067115585219031355177652302349912182260453471047478878610774808219496206809985482575704565473280043564195550770552465779274977999519834653775128986588559144643621120626438092698918312758005963529832205691648273881031958410857695555494344204981433586588949356165669476776998582065483321912519142586952769637288819801780127067861724009011066620204225220595072888104528847433233198214496674334966067374084019509700135458718623315905932246762695078878664316865426814879753951204067967020194258356744341768535891499885536710021482383382362235096362373303046147662310253208381593438211807458885227699818878175673552631772245543261392704625387625688949764686160001741068754018304379253473793481526913585308184024566130305394471688356183728524769816236073580166586162144759379064832809278226358468321566716952836675739652887139847524045382293087786326158822934557566501452091710684017227063463514906472271201621592339455799855568581304454662683369143759534217907113258188901001350837046784647888670601997581468417428669963342147349197134462234726977673284986487892692764742917244565863618808284223749806002602940889175147797599077394337025820620462637863210698146332912310668708775934072578467833601929714242365897257914872108856060462492161292038722301138809172876795610939695432434454908190459541712451697743359190702151835947145163052755420555588682962788450800839205224327746730078203652305199865190469847758178160732054389016719208312754761167294998912847363770717335032482415838878286443365078387982118036859582713133657766353493808876569465106309019249604791858062419150990265885375046673892702166553489354019294467760805788210504458376282340906764639829953812227970706660974600928017492502400043025264023221788625067976586044004940043362625844501502340937850378696351632495309565675527039171614672219396804524822225116927459511183113250474508583769640173854027938238935232330596705898792477772799399575141201269114920047987153570380977870594087892947448368130285327430010061710338609118869660418452537418858049419456694386497742687993009960821791483617749065348317166806552256366998979105489544322672146939619041533007587815698561156444108309530095675431190086825578008684421804910587334477131816036732636552219797896527018883267240360235289968113191966474737553957186855433560796204203431328225869294950623131502678682573797066679549023297484204703648132701800491319206379979474248066894317217599860826501212260498863054902647474647402557773315365757800556039263108396601793675585614641699417812292820589738425927922342384593202640368694249353363933513674695856506677358166561440226523780615815106639658137305648253000682029931997306981849098876208021787876288228003656224534703039940679397205849842270432166922266780980317342342168720674525154932817611476399772979986967913252119636094469828093383175308026590464688261947436181618465673265142430265627842578445463701366187469614308722476777440992603532834699022036167330857328794187900250125363750031554829330319747102162784276349819807991130341389341213671751230476131231564653528175561707504118922919803362709267090204228561208154690723976404989489631290591362459014180167769438217378459027177935832524147049188033340042505590328828620568656304141948745610604407519364536031480416837527331595551124733835684704450481850517452623389666962199754914468287697137825740717890740737863451976202517620454546673727382830228671092082854126479525880611159401766572552823413849009088540313351491654676300952067522771312498852861704805593107966322702719906342030880007040994710830222676324561783439495410254785563598484552741023708134032630603275749236196398783962214046741815849898398341087574151623347536112568321417627291477019608319188232866376403933538504284966836136850771342685512959839679304167731935847594991435545367945528241660801907688443061280327202216456826547485971982574677876823168360941531169701970395651201491228206117737822339624226682679457512563096525949264043192291985754417055348671280854158423614647850923981084770312867147799451160792952181494050446323131552768147880016410060425195082823267248318040067199192161185052971465003400471694327788758767574863132859072664444907164731999867940471401077745979743541921600584935036536787623577499042576748829497069290071008010940294992157783961505450135605716736104306169824323800181563090384317043600531613986202683079746125598194162251721725657927297845398622810387370942512502431305874877284333493087261622256335482577097950759343902799418152139262252532583654511284985879714743750769788705807224240483766655758979782161665841932203747647301853443949289504075784787371585617373453000216065029266620227953693688716113764661225783607239979969368374102655881882989461729538479231879592025538100912963668096922550079865591990135790955240410559643951536401005575210921783450067730314220506841267313271210364928397540685351414208199776779786811535015680862179015583364382054382251822202105136873476800890958740145882422065535118391732613994526417028815424445541548107115972446114595991542978553737575718769367514873481157859127770734569389341496994737211455474952808789033407943184750638332507551966192613018913731715236365303222956767497534399279866321180126335204374713568102839443425530900737875687360462540340787737736748346536481279690134602901010044885739849051733811305479666968077657822322248126275891370099738007876723128406096241618875971393578898968835813796542649660677679342007184491720916399351423669712728781993117441564516949564987411950343623794704418060255386267971179652349776628859975266832075122884454547931228539832055774568537094675313709990738195833546459076043833997077577546980864920988515985001647358426624191838265796371155233666479945224224704979525513838410868211151127788090380724993980335612565814215609591513070963717855222766793914383523307995058145308054419524410503233299569464183949301587169512647767617072658617601504422546804254116967718557668267808862926337301691159080477011200986802286986113051736520631971574909359477814725682407666510873619687173177441052664405528190298354599258859653291595974944662448219521349147786433684562483636010914922745957335232700991105080536952987255289215992381958855647754060903905160790065756049726608480812179130894142954178772768631471255236882090793007959743188125812813904983654190937955826833557026856437565433374556912726376436677555737509804987606272634255825359320809834067099802768851978582049101998740071599870202348131849612787852485479814346873324022814945861480159499006711946227375282775250906164292838824234521112214080542386427051784551729801488205655762138965419833139735782799706973449308213159346926004018990370178621917743307145084313659553321092587906861195207351111977386255601864268100016528250512366549890450015320124442009237629916868737853096930728876242330835840120443265166703532265706652523000485506774857565130675891848713234841707227073657219260859776901896859751934656278284372375663775014892554517750753543484673628800500092944062151214515696657348818908912037895122468629985818766010871947851947689474462120524147365714424561157038599916394946642520913271019583691023466292357640587578938231378803657594358955853578169913194779160346595210854915315112411034325436635920893555774346160751125349905805841693595324763073495237534070905113542146423262639086262268488610246411420304536047825809690232039458943401395019719470958749842507158925589377894797597980999497708596122117511855344357137554162010902425717379566774546666539652218067708870152543459803426193355764429075366961723415686161346951387605229560209509709644867876858929123377193566798335079060541812558831271733945673593959252988759309962402814742018523231792999969757343623971105105766441912502480824932052996543267412424053928914772941316314250067626153353166851551844308528877552826362062765795567320554175705874068857472175537811974181785348908547510532522043115181841385161860100689893778272791006324227673722845628640176491323055345292153692055576431288700124036172502601644907116294727015165201650668790259009402101040064629035511967467607299706371903341584459037789151108319392706922797039677223008824117307053944735657461212001155718433471260489524930286502479503570167690143425481766614337016295145197249111067260427200602291720906835249853725591701233699606317825604912662403557380639506623442368197159590617596007137566274226591280243153725233337459281766824901653960502850978615167365590816597821838895888822246308236247200358762861245604042466283869466934258066878475409562141350827138282652293132476955097596178080497721027367285166881681759310190277437701056911634862610939445891431339263318608847737633833715639696145862788312092692017520782569609208291632790633902404440231070890376785823831346768765858686267978180682803441540068743713258379483533022998463114257314422373110801793644920898309736547722810623145910111946610374737277723549199113252063686588138708994633061763566804846723521206299669925421557862501397760701606297238575471017400185008582561309080320703866225050977825122457482201604238509061248837812425835656308708571856717087430531051291116012563799032169810218066879060108837365638187940069141097590982277263482601868831809144650835952965117038585022481872593934622858550183145750132960778613795538189823672915873525904697273487027822963820791145026606188724964512139754249617537829310622658447709915651613756306699595632467964436492775605221428736871780586052185614091212439078589485557174880954090107813071871792367510820481335502196475894163832671991186071866674206077748353026533479926849683577616179965032662616606489427995710982584800912230267687079237555108048483789470909716451793933843490922290493003513890492060704035710335782295639136019984590377764850144190570290791854132775727493098744977872597713891220198509024192983214883800911564581394292384438878898147670955957634286764901359611601508545804340712720106632214205614005678213688053724325953399435007517083347927677007192794389275312470358061925815615748045565701631748177327464498228799058983511486317402993708244981291511408421939124159632350075033045267484679338443811888983030487682383902602967897327642790425343435191669009173462764517651386369743811420756943043476034010685805594725368985448265614270216165602441439526681769366494700528819682880176783967533226560990424167561188000314922948097450322857074183238341969234842187858477279550875377888973230353609321921473011382588112111605818432049628110415650302450169423568161519638627158599677255855884433724609863227999807276883488528619421633926832127190871666628141810464495669018752823970152646549519850531868849366138717996396044192121776645423198172628802910338798504151378378873409219717281431785780754544660339833719248551085648522092109937137470380067274401790387526305465132115810441108514366024410742229728956747955541909233804926192058887488603921086377104634496348366337482103921407431972053944424310776705048041032718469186529781960411764139576942816654751199408868628242126599031659532477034972466562212790830089276672861366802881001525797328235738734080239550261601661599938299898951395072790502417638850685586475009565029919156455311157936018377088125637492457957996007860974369843229118401978453480893563455724474792451659218116306915197977759822690780227366880964367352136114788037443180412048153296726557270886144427812510226312897664143796457403305562563577628949371953997881416985388236052780568424214103599215612348412102880618621514946834303905074571957666392365591315104888382200444089753072524378428234188163187568570076279398559439261620908354355265510717183448573127038047379078744567290674482292283593839974017033129366032247851965079310511881607373502879452891153576765436409660784568190732733709580010696107143921185484535361751735504300344972983901894741385872339802860953207009664732240897983618501509253892823084432787718176301437129519562086512994086992763057916702022509412401748624939234260544509341298917736036149531881742082026620953593119849793047596049221642497054743572729323936098802402596720684292915579788120337559450000465826241120498559918909782228594677011619226302058941059827960027446520147716738556653475812641060228873472540526526297605494554184832375256488604823207487254092529511579088345649049175436589233370765308513847885608559694931231191722710794165757363546318366247531965937885227355722711858604375248122122742818852968150512860570289507993656009422423304182740643284936400756584037444196408992190482548502719567948625465868468697825594312341535004692255756560940520815302032018455474702429426968424626695022284796465717991080162614837547344315937274810041982349694678209624209666781413841970541885332005677489073940674550219268929663890583565429653442494465805443886503055375131235629522159920027517769264414251848038054015849045242507035977752104337021451036674831649875697033378177241604337989831127612954742825654912581092070273699448668060337391930169553951787003252785966283493852519167233234086868374170011124559638820263471552284360544970452049646409459824703488624856613451407114674628475261456556470440729676359046211218576117004020409211588145713741386544716692661342812576855797825994973016487305654124350514131628237709453898315628356924157418281355748483748552555359623772316584784675959565658925243812032951669017965939736036549847119011791305541649364037065031085961375468487158256106063521707803656667967039991498586527078403325376626362519548903109883751617033293951846071481916309379785782854399842204364091253833221136085132675829368529945700585251754558484419931563061661354355623118019461057930428028863626104957651558442647500707524534991610380587011219545358867190704596904288707717279012081471078876687023066727506120536661729110734355840898000660752830143154549897484892108326661598562206520364612528809410546182855224345823642420054071668167713678248707015176745966030432283685275626241192892001078695559993107220373293815148979163908562537878704055443474072251289296228818573679262824842463569136268475606673932826910791342409791298171300041029875841409828352109509793867269491516537986508041855743267911038474025102124769825612449223136118648427463037178617175573994608689740112118894743357900002778239993847139975773030747011029349053689770323353139535582988814425863327431598488872484759891112134839135487361649120943257703302798344809125631330701001899507354213639688307743312243192612366431233592201198157882282240441955256271519851481559956886857414321996836690900550516373300517293395308366871356180459169811773872197769263534037492916017922745380561031687618580873687784741492877172933133574231540383575667430160396218612627531376938726326754088292949926897834597113242732314948909545475206977874309216149754736746841090510057082160874186183973189289895753421205867078048719251768985528834666378746408726123881431650149364172884173099722512881744799420578524018830235215963502190865550396461249798217865519546294326620668575150368237720521393370095608157642694425702483442205470789983512255238998017070479334712858117194632228442039437387792800449214969297057230787050972210662142506947423443250642418367314453189674048390205886145864200993187654787278587129225914164223083671207335945960719227354809649400323600524969780044470292871761139325315114147862589794878101565829867179286429209676066097655594452283942663564440138511728936987387379281133895177200308317353569062478231686188727184903145573930756284297566506548852593054598887364990589816735455231605963860170222122089509317878626054150574291197352447535399078118290870474040789038598340581762580133742502155306154483051148492602233178295100280645024323038004994590219797358102628238900419590660293212551904768115502378735204167782416701335938630619400909478223581521474922163265941372294801378675843138613338526475366673823072048526072715162007748442291324796426319856578670369388378630591418361384168657278597605634159416967052365125673428849276760781164182344472262239659125985318745406647494659164534997093757382903334716469092619984760533850240814661041879440808974455828368522139477203322615322675559316328678575587134774688355991890131664623467491321272899029986940878400702446233557766598788369836558478043109735510552105363520980194067365787635882215716191627531815539441542227527573427868140361677220938311315164574417724729908891456212461038031493026792923500624340224939928193757864913622287613278707249832518206594065091952731076510707030550159541638178976962946724486480244501002765053672547417978645657489373260743152089465884693546243038182680460721716658644900361679574641323983749006224496799502717247945568974450522540002852162374639992154817560925234422860173122786573522524498204986197515505468982813032035689173186621158603843647929257925568935763880996528202117865292316724569605357516360065029596060375853300570417537175819109057859484451928317539077906802470138528056815085653165429809962436147648480875508318041822964971152767906849423383337734234784891874108064258637872930319095038048066224234800136532984231420172145929703188503057705335405953759238538498049897716691120720776480293346414053337290787309919166018249197768725330508997606735675934852821211271318758169417592139769704840665896855378988657194724550715403537305946467024165627803251632796418925245978135375679256778023228605029001721602906318152226020310382269165945984411597858590791913640317453894104378142979090560859313305061572602834356575681759281318827253938067414558274300327147958735796605834522867273725902658673472413299232173499802616366311556088061426065480178761631668884802410775293684748139592122328104939252132805872231806939766627773618638377523595980231201820942280900251408873052315631484179328679025277740548173235150965819962133102046493999330552315703315834224465707428787892637997461854633356162692684772698163616943700465603158221278202924664395990202513894103674962292533291527123774226180856150751292278859580920614286307643965095801220532918879514286786945209087259394903797476418171015021890999134758716788157873992941737080757983336169651100381204395232547392847254229853163948902536305948425319966227414492572288015163571696697397737362718152066265613845299027375024863499482073673147759100756280038013602847451347326605546784899651176104225472828965394963986376584625438787220409569654309972851960086752920815284980112739237767138099070022369292233333610429315644621715112867625729366712478687528256239587285698573718701493259220135514599856452071040789315516340353167883071915501721265422282476135567298232833971903483294474327327910910181090573641973878813139833070377700921655838860855040204468684435442495420116484206369779363479501649926077890828044279930428210008006518232086586535491554353418715785300588536755288434127180597880561701155967293727929686143191727416851798927533200949367820121901723545569695677436799633740355527094716068800649188650770356421849131037107076116144349662846986737757488166227219501990787453352702821443309200431013913713136239019651675421977150754088378584810175744841573410100330146486625053769120102283715887652673733338359662377642310125928871133642198234242805851446752459821427859471071189147118581950144180819418549159886427751248567194177644289201088037076082709471954966058016803696215615352373565804057075774858180122032210394669465782753917615641131214361646419245572930986836810786175004131799792869110358758043023488022657617890092003560642202509942167090322174942229288772128863908998784544781328952421080555585770832133246486467362934531689666455574090125317757845155898327499392037523318925588217668035405344144586533343166904818430325803511051426886330034586797569281510576979865560347613631705281353363380680785049771905154727141281705828708167870988940883432970092938805035771720136196340904949128457115094550733901476737644647249104543361929636271755772145191672413378519624518829425895150035139231252139384885476700917131481012595329287401368139742659238810970364099047962094478515563822238424988059551952423784377026991513128766589516820236164078037436801350387276073075720302690069789130698450653103213370514659063850769060766141146087872931563998225878850276806551902735302499302999842342178480854265825257679306695349325058404199866120005601826960122595279242107034532697316331052232798332165454563618983821100396222250624658585421025366021917147873988310501493909563249516051320365249704262289667422110502505173366420506898225917985419683617914889269099330696132563220049315477662143510243942521404823787732392743049338944710636773795716819768033060850462001346605942262226767790298721450238036314647568350971298942205559649482472113362560974089419497582200437088093044942198451452878704483564541546401253985687924866744681170263729194160648907531789319612622965468699660805827910365302543141244239177789624074789562921096779246386144642911622254685503086093919029501503174621403909888502117332588115066721641564106100121504869854493633176669109510085953104453839340413848719346759082539637136320496240837865297148471803708971321214810733650826771431220573597577575836384744170275093934395681688715519849931499713850206028202583487828209207748651633240801562529524258149390876179505530942479223658179274794901062394954493935554758139561307961994957416310555085916334683592136911967130004434986017607275812946931526947289400069093728652265267039142364803211590315468618311352315079584407137543277219894554113309276106786035726504075924010220784891535128521246678850345347696532657587068003125456121089402178576103928700841963537048544962622404333796785031145890758513258575949066924329784907809973889003259330613029188263678284074222676482985505571483741012284046845494226646635762868635276637227823065252460825085003627143226478026251525881175991836088811493731249137413500556589565668608984195013278176803844417605364420197577659376553180924585258439824527019493817894086717892091638367466089310648405743499734193839713460132782192392223729257351695049174941219479438038803425073553589400759865880919786024637931920276297251322648089237389677294370472231028730083130383425023921295204611459764298080347858016477243717971353618726380838147596237608213040867303760244136208271368730306084206035100794951993386111240066536800466431421098390839496139046478530005290190430167067431204994458328291933188796879510099016033219039589471816853021641580333997241401249023417784946312195554151385116567425608318359238643762820957499485236317723855352522045100171449858503573751282629775800782615704057802920554733009185162103165682992008394666963663476376711574358947359286979620116767640794006117359639913290726134298713552889360188671753526406746205187160890406838469624542257718508141941794475559261574769022213398733720972240955959204850666789901597799355808933706322420400738105534336015519209978544997745218618525032467894153091470480686412529938060810017102305351034206820406471300152641278202839735182209049785540787332993065068465790122483816495310720400406670987958807306493556012663838780492045781894636150269729153415059533792774194376771480688147292172112349495088186600691591254452028241631935184405069977450909240472024574862017234159469147865723515637538538708930356106632003410333792878862923096469369092738107718297705057937284055244383561942074704994014357681474378740339223126674927974277059329094897757431973280937916666080523455416367717670622538004231753785627085292413229486203453503683197279824305487918082066061736445692110707193484631781416457207217918538819162119523430234689185474463436798493791885637805815484094694903999040667886413236342665219568795385522902079988618521731767009119943747238922661903089801149019767044491396085490645101924584526026664253903665208578692306234843521928730653104873350266932978803575409818565069977128668176568126021622698233057512477459651933957144746287662758638347166798699652050013348649378641463932955815511540782782261808352794053733712162511931444729135328776434849323816919452798267165596862546987449084969929043057541372180029574639334090702146356105562444641048115831800461381934938457422978585624517624814611108379191022877799548420576347671709121619020390400546403089743909306131823386693319854716555199299696384946345978651094128855129888327279922653443788454619316774687705529713927111414750370548772963394801199074352202497670178424924794191285067062626541481276392743538276390869744860497013430419971116923642219435135610475691669974462988347350786927612230188737558872398193992052141207315131827578419323745684926407558984415157680584673974316674767127418066839054384852635484332282134634820586975470380412572478410730611436727300440886247188456288901649229137691512514520231748717249420397093682681559691343407436357001234482628964464316901607865429405371161303514196549503267683212266761975281908003877570292201684976846191378949945779156371283942029067830273506791332533491802976334593599013628159513734569725707655605613714702221134836405748065567815746990260914537474250162011214014069225385899589973942582749314300236843438912437160025229296612495814382968520370579373543701254899485548619653755866995262735451501530486926976790051574322214493099805204407265678683560756649953801805078436600970433634781035918051702110760229758516580679034849714452561386655516946833802712529889880124113272046247074869937158594998056843629580959085472957969936196596525648899678758507619562472581246497018192241131850381169528353295871722938539579262360177584665678200491109946399099279075595142353785193740851872074569862727858785119367033378696317266332901986434623292778479363850978668609745236177269564655202890037052700889406457400412506432743085745381254547137387733174061002017737552304052817308481924137662422997673320580612618625577509855735341302140514713037780906669488941371733097440309220655136468148958304086704055965945099427723336068560590727283065595662497363399460008854473101677541818641525404869527252942443225184013067042126100222802888079923109300939673218583455977345443534129824624785039229811103124363573922599055367166761242595997781123371436896761927745008957152414020380872457038103675256285247179446646237691941353088479839065110514015181175708994300502865181577761454816436297143656519315830353176351514026666894207207236881241098949770849265615680254029457414671866314909653892263374835819652940160583020973817118872192378647695836377561047460067835001221739894746283241293523103345138931447300603446927801175555501775340608775919166466327832335765894052259155799113006658271181151838897717895133923043281368419250066773044801286984647281769386202855655422063457615570902984195775123069284564163335955332993486993957609495512940481328157141369266174694169506709952556193129850359754241134922828805415696577245096563673977329415698338275814816875052818729947571921417411363603885705765051351381393791948691879932994188996044268088451385435052661475449882000262672400342882771973156383962078928837626715973620281403131624634897042642444368047851380987691602153944581454556875575921673199659245031452158134631556169430159893311670296443566434631182795565323739862644989846190069601897824966406272312808839070023918659665516802205534731403363754861884738352396143243967005163389230125532052682699290127389127987276077234517864723292847039555106175998264721970501882416528940519485413340351581645837117292387158025292165522261553010028535308462120649009083625982133053396865686821221935438517288892142217230316567078779911162030093012240769066877563692288870628991600864798267020910134937118793092682450941089708554874575969237309595969799462957398007673808227554562762365174820258918433704054275656198559360129539672924731863213475448387760661267382713642961829805171789508142199768768031436513862368688086817421455580447097283718283317322321615166562135064984790226709387287449810568289563770331477668400480500675843722468036092800111133132291347424109017976472165112422148864835725794147942716468597674604275251039057644141270529037881080016346745272939832771957631958826411546187055059091533429996089958019675165244560097833076043679809675151808830218846495292369844337688555030182240625743568122878119047480054909538595385958995674643531877715358095535584944059957511503401443184845477758521130736270570414657511372973024694134624054537151848091782995286478701599078219707639275942763219452695408851615054116642158921013304299753748561769623593441189816312258194764348103590272976530680361819656104584504302600641519562184330379808073032644762422923550522744583061305166509490514969534859941924975726945908717821849130591886646091771296939273446174916803917298052125669841404876670541444624440004901221441517274346135795150823674985855795231362024471660210408329677187497595906293775838608713672440253045053856658890625222374516366110004381091784457414656347981748799453777930457499452661858743755551642841874257637788311079563181722599547864283612975440187635117164576825936453070884549926377119169535049427103893609809663415811480295944783203318927727177796523508080110644107469378479931440415543236427304654588054025947959833634752991286302814709018958327807161827807959601775975356169316253593730130664962157774462163293961287257040675122297926443541302315623618933209570372981944170775786603392409470437798858377562298338455075837311609463433338699382538794348080343179501275926174287908340467804922307705074111578647619370541723887703243451680470010491297876635215784104166845683533059303038397684597050762623753783070628808278452201723740355361252014394283745468374320393414847348817220228516881970496866037444720642386699967688230862505060700298559668269509354858883769652141305561395486689107821387101228777626165942648719919099417684188792301779977925255902472272974184448", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}, {"name": "BTWSXOR", "objective": "Chef has been given an array. He wants to know the number of pair with the given XOR and SUM values", "inputFormat": ["First line contains an integer,T denoting the number of testcases", "For each test case, Line 1 contains an integer, N denoting the length of the array", "Next line contains N space separated integers denoting the elements of the array", "Next line contains two space separated integer denoting the required XOR and SUM values"], "outputFormat": ["For each test case, output the number of subarrays with the given XOR and SUM values"], "constraints": null, "round": 2, "sampleTestInput": ["4\n4 5 2 4\n7 7", "5\n5 34 23 5 1\n5 4"], "sampleTestOutput": ["1", "0"], "explanation": ["Subarray [5,2] has a XOR of 7 and SUM of 7", "No such subarray exists"], "testCases": [{"input": "1\n1000\n79 29 50 70 30 67 56 13 46 100 64 26 20 6 20 71 95 12 32 99 53 3 46 56 50 99 74 19 62 52 59 83 41 26 97 83 97 55 51 41 5 17 62 97 57 34 11 55 82 94 62 13 34 99 87 82 53 59 43 55 24 19 56 39 84 29 40 81 62 26 77 84 12 26 74 96 81 76 79 42 7 9 50 8 14 53 34 87 66 37 19 32 39 4 31 65 94 23 51 55 92 30 90 36 45 70 79 76 94 41 13 87 70 38 84 94 27 71 88 94 80 82 88 73 96 99 80 32 33 81 69 21 62 70 29 83 99 95 43 65 35 27 71 83 70 51 12 54 75 64 8 76 88 96 92 5 43 67 9 36 25 26 94 97 14 90 89 73 69 13 13 23 22 52 71 49 62 95 51 61 49 21 47 88 65 43 99 60 66 26 83 83 6 8 50 28 79 80 43 94 67 63 78 65 74 35 82 12 27 30 32 9 24 96 43 99 47 40 72 98 20 74 75 37 62 92 56 4 35 48 7 48 49 81 41 70 15 32 17 39 31 31 98 17 54 57 50 79 6 90 92 26 26 18 99 72 89 59 79 31 63 8 11 98 79 19 31 23 27 62 86 11 52 98 13 5 14 35 58 16 96 100 58 78 19 18 6 81 26 96 35 40 3 59 78 75 85 28 16 27 22 19 44 45 28 75 42 6 27 81 55 70 8 73 72 81 24 38 15 82 100 66 52 83 2 22 1 60 73 89 89 4 65 4 58 31 49 60 58 60 93 12 95 18 41 41 11 36 91 31 19 42 44 99 59 75 41 64 8 61 25 14 79 69 59 100 48 5 30 89 93 81 8 83 33 26 74 37 81 12 13 26 68 14 8 71 87 18 32 67 23 80 6 13 77 94 88 81 83 90 13 69 77 26 82 58 20 9 96 66 98 20 37 93 71 93 100 56 34 24 76 65 90 95 75 8 70 82 7 69 77 47 92 26 51 49 78 93 76 12 44 99 77 86 72 40 57 23 74 42 64 51 13 75 72 58 9 10 26 1 20 74 28 72 14 66 78 38 47 44 77 97 73 8 44 60 45 72 98 70 49 63 7 57 89 46 85 84 83 85 8 97 22 87 10 90 91 80 44 97 95 61 50 54 47 37 84 93 86 50 48 49 87 64 90 57 80 32 70 78 47 100 83 56 87 48 52 87 30 7 54 97 86 54 10 80 15 34 18 28 72 8 49 16 89 78 37 98 33 13 65 73 58 8 76 13 77 53 69 67 75 2 1 77 21 92 42 64 94 93 69 69 56 10 56 41 16 79 97 85 43 63 19 61 51 97 74 51 61 76 49 3 71 83 3 19 46 76 37 21 32 24 96 84 78 99 5 15 45 20 69 12 42 2 90 12 5 60 40 87 17 85 94 38 91 85 69 25 94 86 99 63 64 10 22 97 64 19 6 55 91 87 65 31 8 56 17 89 78 71 44 95 3 33 20 100 37 18 20 29 25 59 61 79 72 65 65 81 10 36 2 24 64 18 53 77 85 53 55 58 80 59 26 21 83 39 65 97 84 98 4 8 96 29 29 47 53 88 39 38 38 41 76 13 35 28 64 24 28 12 26 54 52 72 83 8 40 60 8 95 10 11 5 49 99 98 92 38 77 72 43 24 62 25 27 47 36 11 95 11 87 96 100 82 2 94 7 12 6 48 68 75 22 97 43 3 73 4 73 84 56 85 34 42 49 80 80 20 63 54 10 92 98 93 81 78 78 82 46 10 9 17 73 39 23 35 67 15 97 39 65 30 77 37 19 65 28 25 30 80 87 76 21 97 94 5 45 39 24 30 92 74 15 88 6 78 89 4 25 33 20 6 2 70 41 85 83 95 16 34 55 6 28 54 98 12 6 52 92 24 29 12 20 11 90 83 46 82 37 74 83 53 15 81 49 47 45 42 40 7 59 38 24 86 65 77 8 28 27 4 83 98 91 28 60 22 87 68 3 10 83 38 92 60 54 96 88 44 62 77 75 77 50 55 58 94 10 42 65 76 25 59 51 14 65 23 88 44 31 71 70 87 68 23 65 78 58 42 34 97 98 5 79 37 13 73 50 28 3 49 48 62 61 9 68 53 77 85 7 54 43 53 84 54 95 93 24 35 66 77 30 23 97 13 27 60 45 30 16 27 73 59 19 43 3 94 70 89 49 94 39 66 74 29 17 40 35 20 60 99 27 78 36 81 12 6 95 10 3 10 15 58 32 12 68 65 8 3 54 90\n22 27", "expectedOutput": "0", "number": 1, "group": 1, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10000\n54 54 16 65 20 10 80 13 82 14 78 83 75 8 31 97 56 10 29 65 100 42 7 87 73 68 68 72 43 45 44 21 27 53 100 91 60 13 70 69 70 17 38 31 24 45 76 84 21 92 48 73 48 92 26 98 69 37 47 58 38 15 95 25 19 24 75 12 61 17 79 87 5 13 16 9 81 3 56 1 28 12 50 68 69 45 16 20 5 99 66 91 83 86 50 89 80 41 42 50 99 30 35 59 86 42 38 10 79 39 58 2 96 49 7 76 99 92 86 42 45 90 82 45 62 14 4 21 22 70 86 73 92 64 78 35 17 64 92 11 68 37 16 34 72 42 15 97 10 93 19 17 58 8 86 5 62 19 64 100 58 65 13 65 95 33 83 26 63 37 23 40 31 46 67 23 84 2 23 100 2 71 81 70 26 49 41 38 18 10 73 58 82 45 98 79 58 16 65 80 68 73 49 6 89 75 50 72 33 33 10 32 31 74 50 18 100 81 82 53 21 54 37 68 41 26 30 54 100 95 13 21 45 88 19 27 69 38 8 10 47 56 48 38 17 72 69 68 19 49 62 7 64 15 63 57 46 97 20 80 36 1 7 22 73 45 14 81 10 94 63 13 31 88 89 30 73 59 36 3 73 5 50 40 95 30 2 5 7 16 4 87 52 79 85 26 22 13 39 15 57 18 13 11 33 26 58 16 90 88 2 21 73 27 49 11 81 71 11 59 91 92 93 49 35 40 24 66 39 98 43 94 79 64 93 74 49 12 75 67 53 74 2 89 46 6 75 20 40 30 25 82 12 32 49 33 49 26 42 6 49 56 39 26 31 24 71 86 100 48 33 3 47 97 36 60 33 84 68 20 30 75 72 34 39 69 81 28 4 55 76 9 69 57 8 73 2 47 14 14 10 80 25 67 76 13 80 80 93 27 32 98 99 93 1 94 66 39 62 87 93 75 16 79 33 69 13 73 21 28 48 41 62 57 87 31 14 29 82 55 32 2 79 9 39 46 60 15 81 62 32 97 7 6 16 21 90 57 58 55 26 87 98 90 33 58 42 69 74 29 56 5 16 5 1 80 35 81 92 46 23 58 32 97 91 87 77 8 4 78 46 42 2 92 99 74 5 28 94 19 11 90 84 80 14 94 30 76 50 86 96 34 33 63 35 27 98 65 9 18 63 72 34 92 59 88 19 16 54 29 41 66 14 41 1 36 74 49 75 61 32 35 76 51 63 79 49 25 6 40 37 89 65 30 74 46 48 60 53 50 70 50 1 47 39 16 38 99 9 43 52 78 7 64 81 26 3 27 16 71 98 4 3 8 9 47 91 94 70 34 21 88 68 49 96 47 87 50 1 55 79 95 25 78 67 58 89 66 39 11 11 94 2 23 9 22 52 84 29 25 32 64 16 92 93 24 95 25 40 85 100 86 3 15 99 98 21 39 57 8 43 77 82 26 81 78 62 82 88 86 22 85 98 56 95 65 44 75 52 70 43 45 100 64 98 3 21 59 54 99 19 43 5 89 19 6 44 40 56 26 81 59 21 76 26 38 3 73 85 4 53 81 27 80 43 78 85 53 73 42 17 89 56 14 89 64 71 63 25 12 84 56 58 2 17 81 81 43 70 36 14 73 76 4 72 65 4 63 63 41 35 73 45 88 84 13 24 86 37 89 89 96 20 32 14 42 56 11 90 64 56 78 71 98 71 53 77 87 10 87 72 81 100 22 85 1 54 37 73 14 74 46 26 74 52 44 38 39 97 93 88 43 95 2 66 92 74 12 63 22 95 100 51 86 5 12 51 61 42 26 69 9 43 83 87 57 13 21 9 30 29 77 15 89 88 89 62 14 87 64 23 32 74 39 51 44 51 71 14 5 75 38 25 78 60 53 21 22 80 100 82 19 3 53 40 7 1 36 6 28 8 91 6 17 65 74 30 79 93 93 31 100 43 38 80 58 25 100 46 93 92 58 83 86 53 5 72 6 88 68 38 46 98 98 61 48 37 17 74 53 38 39 55 50 3 68 11 78 59 57 93 7 15 57 18 89 84 56 34 28 28 87 66 76 63 20 29 56 81 43 47 87 61 19 50 69 11 9 21 81 50 99 66 70 77 12 89 85 85 100 28 39 1 9 3 76 81 47 41 89 78 51 92 35 83 98 25 41 57 37 45 31 48 8 26 3 35 69 94 32 40 5 74 10 85 26 73 28 99 98 2 90 37 96 90 65 86 99 7 18 90 56 74 83 100 75 52 24 60 58 74 92 98 87 80 98 5 40 14 81 98 78 63 99 67 85 29 21 68 7 58 44 35 83 7 29 38 13 23 72 11 11 79 14 37 18 25 21 61 13 31 13 82 23 99 82 8 12 45 34 2 65 73 62 74 53 53 91 97 78 88 97 94 73 97 49 5 2 3 100 72 85 80 23 80 89 96 19 40 30 52 57 80 44 99 4 62 84 50 42 92 44 29 69 40 94 94 69 80 88 23 61 43 59 35 12 50 9 62 84 6 88 8 7 56 43 17 49 38 39 54 22 84 30 40 9 100 19 57 98 43 2 36 37 18 81 11 89 52 99 66 47 72 87 5 55 22 16 10 33 92 33 71 97 61 39 65 50 53 27 64 79 34 18 26 46 50 75 10 36 39 26 3 44 84 19 30 26 94 51 23 42 16 14 21 44 9 92 59 30 64 58 100 15 74 44 100 24 94 63 53 9 49 24 78 26 17 31 48 17 100 56 40 48 17 82 15 55 1 72 18 7 59 61 71 67 91 69 50 25 42 44 32 2 86 58 53 5 46 15 59 29 59 35 48 20 5 19 3 73 10 96 42 89 81 78 71 48 55 78 70 90 53 74 96 44 77 39 91 99 60 62 18 88 92 45 81 46 95 11 32 98 73 56 10 74 61 97 72 50 77 18 74 91 81 42 87 16 8 77 65 84 24 15 52 37 27 42 37 22 1 48 22 25 74 32 36 85 31 87 24 62 95 72 56 8 16 46 39 2 1 21 49 27 3 12 31 48 4 20 71 99 67 56 45 59 99 10 3 46 11 24 24 41 92 87 7 78 91 87 80 30 20 15 96 53 89 51 47 96 40 19 37 7 78 60 1 30 41 60 11 12 68 87 11 36 14 47 87 85 75 18 30 13 49 51 35 71 56 97 97 60 17 17 89 95 90 10 69 54 76 82 79 75 76 92 3 96 71 17 36 10 86 19 9 96 60 10 10 80 95 28 2 2 62 78 33 72 63 38 17 66 90 63 62 38 48 66 23 21 63 79 31 69 36 35 36 39 63 43 98 85 62 11 49 14 22 32 83 1 36 27 19 47 26 98 83 17 3 46 8 41 23 84 17 51 5 67 81 70 87 45 9 53 14 73 68 93 90 56 15 22 66 38 98 38 28 86 11 77 73 2 51 95 62 47 65 20 17 27 64 31 55 88 90 23 62 44 73 50 94 64 86 58 6 29 76 85 99 72 90 68 23 87 91 98 23 40 63 26 95 94 72 87 91 20 26 67 37 58 12 35 4 3 34 57 6 47 68 88 68 46 49 41 61 72 75 23 40 7 44 70 67 13 57 77 2 21 54 10 47 52 51 15 9 69 56 66 57 43 55 34 37 59 93 34 14 34 39 7 21 19 85 47 81 52 2 23 77 55 95 100 44 22 90 97 34 98 21 9 69 95 72 74 51 11 59 23 40 87 4 10 94 66 19 90 69 78 44 12 7 54 35 40 63 72 19 38 55 15 82 80 41 42 39 78 63 67 22 19 60 8 56 92 6 17 100 43 81 18 82 23 29 89 21 28 58 44 36 91 57 89 65 70 12 27 90 32 90 77 30 7 86 80 5 68 63 21 11 27 25 26 96 82 74 40 42 48 84 42 87 12 62 71 78 51 20 24 54 1 100 61 61 23 43 9 17 93 38 5 25 58 8 84 32 28 69 92 80 50 17 56 3 35 88 5 100 8 76 63 54 50 63 70 56 57 93 46 89 73 84 65 84 93 20 25 1 45 66 54 16 87 2 84 95 63 26 91 70 3 18 70 19 42 99 65 78 34 72 25 16 4 17 29 56 35 60 12 22 60 40 64 59 73 89 91 18 91 43 23 54 7 55 81 72 38 70 72 73 10 29 54 13 95 88 85 35 62 25 37 95 30 74 80 79 90 82 8 58 77 66 96 44 24 3 45 13 52 93 14 73 72 81 5 66 8 80 10 64 55 90 28 98 100 43 1 22 53 22 25 8 89 68 79 11 35 31 90 28 44 24 7 54 39 96 37 62 7 20 44 49 31 68 73 17 26 21 94 57 99 15 8 55 13 98 21 97 96 89 71 2 35 8 14 29 52 81 92 76 31 23 97 99 93 93 5 73 51 18 84 69 56 79 58 98 81 9 45 91 43 44 8 6 83 45 32 29 45 55 10 58 51 18 73 65 57 17 35 78 18 67 63 88 41 71 20 18 78 81 75 64 67 54 17 65 49 80 93 96 34 23 71 76 60 24 26 75 66 37 17 12 86 23 36 61 50 6 27 70 95 39 79 46 81 38 46 36 77 67 2 10 69 96 76 32 52 18 97 78 59 92 1 18 22 37 52 97 74 41 43 58 34 7 80 6 5 81 67 59 88 76 7 84 61 76 80 30 89 93 97 93 43 79 30 73 21 28 74 24 69 13 63 33 52 80 10 95 66 25 17 21 37 47 59 47 24 27 5 7 76 99 50 75 31 42 86 6 52 100 93 98 75 12 32 87 82 23 10 54 71 28 87 24 89 9 76 98 7 91 36 65 14 8 65 62 50 37 62 85 22 8 46 64 74 85 58 28 56 67 63 97 54 43 31 55 2 57 33 83 11 52 68 27 50 41 92 18 62 84 67 16 36 99 90 60 67 18 36 56 20 85 10 73 23 18 61 15 10 82 25 59 79 98 9 89 49 55 7 30 97 51 43 93 55 46 84 19 34 47 18 66 31 60 50 61 72 54 39 26 16 31 38 46 10 97 72 53 85 6 16 13 53 33 7 73 96 5 87 40 64 45 60 32 19 99 36 72 14 61 47 26 41 11 7 9 55 76 53 69 64 7 75 1 6 26 4 30 98 23 29 68 7 15 45 96 22 12 48 50 42 88 23 88 68 17 71 10 17 66 87 6 44 79 30 62 99 91 91 92 29 60 1 89 23 77 71 44 41 70 87 19 99 90 3 66 17 5 56 48 65 24 96 36 48 11 49 24 95 29 93 19 57 74 22 64 54 1 34 5 18 17 12 90 62 91 8 26 54 53 36 11 63 56 43 65 2 95 58 35 28 89 72 66 74 37 25 69 53 48 24 27 36 23 78 39 95 28 32 94 100 79 64 24 74 39 49 79 28 96 54 83 89 43 62 48 71 12 91 11 52 91 27 91 78 55 13 64 71 12 83 98 36 31 76 25 19 30 96 74 60 81 27 67 62 73 25 90 63 76 66 18 32 61 36 84 74 9 90 36 39 73 40 55 6 18 21 53 57 36 57 26 87 16 8 58 19 5 31 32 94 57 92 85 85 80 52 29 91 45 96 68 66 24 57 93 10 2 29 58 90 17 73 58 17 43 33 41 74 78 15 65 36 94 84 21 3 86 51 93 41 66 32 43 66 50 60 63 34 31 38 64 5 18 65 75 57 43 100 74 68 52 26 38 19 6 28 80 68 21 99 1 62 20 20 84 49 75 56 65 77 58 93 35 52 41 75 6 38 100 12 53 41 37 67 67 37 70 30 8 49 41 43 68 4 69 44 48 35 36 67 37 44 29 11 83 78 53 88 49 84 23 61 10 37 56 5 61 22 39 20 76 87 89 35 8 2 30 57 2 79 66 84 96 15 16 26 44 19 74 33 15 15 63 64 82 77 88 44 59 77 77 59 60 3 90 79 54 40 61 72 34 26 12 28 22 69 97 20 87 80 31 11 38 29 43 53 3 46 11 84 89 53 88 37 53 28 27 11 64 5 53 80 68 22 74 91 92 31 8 92 73 90 65 77 71 68 5 19 68 84 9 72 71 9 87 8 34 27 26 18 53 87 52 4 14 84 94 37 19 75 19 69 50 51 83 77 25 37 39 37 99 74 18 59 71 82 19 22 24 99 67 75 4 45 49 89 58 8 72 93 63 89 23 20 60 86 5 43 73 9 75 68 49 97 25 13 68 34 96 31 20 79 78 73 14 94 45 47 80 63 19 83 57 59 34 18 91 74 46 58 85 35 23 47 69 19 63 19 90 13 8 18 85 25 44 64 69 9 28 32 71 31 18 96 14 98 7 93 23 58 82 94 42 43 39 1 17 84 46 100 96 68 67 53 14 3 41 52 19 75 4 25 60 90 69 29 81 87 28 91 9 80 62 40 27 94 10 59 23 58 24 41 10 45 25 14 55 55 19 39 92 58 32 55 48 38 66 73 99 52 80 89 100 30 61 8 1 92 27 85 88 34 31 72 13 83 13 87 26 85 24 50 75 55 2 100 69 97 13 1 47 86 18 10 18 38 7 10 54 39 52 58 34 23 12 52 93 1 83 22 59 89 72 43 17 19 53 43 48 57 1 2 28 36 56 93 85 100 33 10 5 60 70 23 77 83 6 53 45 12 64 64 35 10 22 78 81 70 97 39 9 77 50 19 28 39 25 23 73 92 81 11 40 77 15 11 77 44 63 33 9 96 3 59 61 84 5 30 91 92 20 8 29 76 57 87 21 76 88 50 50 60 100 53 7 100 37 35 90 58 39 1 5 86 7 91 64 60 8 20 80 23 82 16 25 84 53 7 4 46 85 90 55 30 1 89 51 9 72 47 11 40 40 54 24 13 23 17 12 31 73 87 39 24 73 17 13 74 65 82 28 63 100 16 57 33 18 22 77 64 51 41 6 94 4 98 79 34 67 64 82 55 76 25 23 63 2 76 23 65 47 50 10 76 80 8 43 59 35 64 50 97 37 2 31 3 16 31 91 34 68 98 93 5 33 70 86 28 47 78 97 35 85 100 25 24 44 20 54 75 91 68 17 10 44 11 39 97 85 41 25 14 72 99 94 83 39 18 12 14 37 72 91 28 19 70 98 32 100 79 87 25 8 40 37 18 68 50 5 20 96 72 16 45 90 88 36 71 17 94 3 51 100 62 27 97 35 89 72 14 99 47 56 65 91 72 22 47 99 60 59 24 25 49 98 87 88 29 67 80 61 50 69 73 8 92 40 24 56 40 45 31 38 69 44 31 8 37 68 1 43 76 38 50 79 59 27 78 22 34 95 43 87 7 86 55 10 27 66 26 13 80 2 79 71 96 5 53 3 15 41 18 35 34 60 15 98 28 59 55 87 44 74 83 7 91 78 13 51 57 67 2 81 32 16 85 44 47 87 86 28 37 46 34 46 46 44 70 13 94 80 41 14 89 31 18 7 13 87 60 36 90 94 1 58 81 82 66 49 7 72 30 50 33 61 3 10 28 38 58 35 15 94 79 2 41 81 59 3 51 46 85 19 95 30 59 76 73 57 55 50 78 4 10 69 85 56 30 84 14 48 17 93 73 57 36 52 10 63 10 49 70 24 32 14 51 87 85 27 52 90 22 67 81 71 82 22 26 34 86 26 18 30 8 15 96 33 100 94 74 41 4 31 88 21 62 57 45 37 60 95 98 36 89 36 79 82 69 5 78 82 9 25 66 65 43 42 86 67 15 99 42 50 15 67 28 64 78 39 72 46 83 69 23 63 19 34 4 2 30 71 86 64 54 62 97 70 34 96 81 5 10 18 94 11 63 99 83 49 37 22 25 20 54 99 53 60 69 69 66 14 74 48 53 31 83 3 57 66 7 67 34 77 14 25 100 83 56 81 1 85 40 90 19 90 12 20 100 98 87 99 69 100 60 86 85 16 77 32 54 35 67 74 6 85 57 81 85 40 9 7 28 88 2 5 41 12 23 97 49 64 30 57 65 47 15 82 13 79 38 29 16 5 50 24 85 65 74 9 30 21 71 7 71 13 70 57 71 94 11 86 25 19 26 94 58 3 26 43 33 70 10 81 51 38 14 26 50 78 79 34 48 9 32 61 44 46 49 12 75 71 13 93 78 24 25 97 7 86 26 18 84 27 28 47 35 40 21 67 83 15 80 72 75 89 48 66 85 1 15 73 48 74 91 85 44 19 40 14 83 15 51 91 22 75 42 50 36 72 59 39 30 73 5 57 53 27 44 89 72 32 16 77 10 69 26 33 42 1 39 17 29 38 92 79 29 27 13 6 79 36 41 50 56 88 83 18 2 88 46 1 27 2 40 15 51 15 45 8 45 98 51 79 27 31 32 30 50 87 65 51 72 76 33 75 64 17 11 84 49 43 80 51 23 32 36 52 55 83 67 93 8 63 50 88 100 63 6 24 89 67 91 44 60 30 68 25 85 40 37 1 12 61 86 15 52 65 59 19 52 19 82 34 14 87 39 57 27 10 10 72 64 50 52 67 78 69 3 4 61 12 39 84 11 29 36 8 34 45 39 59 32 22 54 46 93 16 2 10 39 7 89 94 61 53 34 12 35 95 14 2 47 27 73 51 77 2 87 68 4 94 34 16 90 36 75 44 31 22 77 81 25 73 75 72 58 28 52 92 68 95 31 16 19 62 93 48 48 76 6 4 49 9 70 3 98 43 54 58 71 85 68 26 73 1 5 59 58 68 86 62 40 57 92 63 98 13 60 62 37 47 55 72 15 66 18 81 93 13 82 1 61 48 28 63 44 96 64 49 16 91 14 59 40 29 88 92 21 9 74 84 17 59 13 59 61 41 18 44 78 93 38 58 8 6 40 90 95 39 71 98 93 54 53 25 18 32 36 88 95 74 59 38 32 61 29 6 86 100 15 36 3 18 55 20 33 80 56 42 91 41 12 11 61 8 26 15 5 100 43 92 90 27 68 7 26 86 42 93 75 5 53 15 96 74 41 3 54 13 20 93 27 18 5 26 34 31 40 40 39 75 19 57 71 97 71 47 35 25 59 14 89 55 13 76 40 24 40 87 46 25 13 82 69 80 24 54 42 77 90 59 47 21 98 37 70 35 39 82 75 21 43 72 9 99 71 90 51 27 87 26 20 83 97 81 61 86 69 17 45 46 76 9 62 2 51 35 70 60 80 92 17 10 11 9 37 46 72 32 25 14 97 87 88 92 2 31 34 83 74 4 8 17 91 26 58 27 62 100 7 56 44 74 36 97 75 71 34 16 24 29 96 6 72 41 96 12 25 67 47 72 89 87 36 86 42 73 99 81 55 10 95 80 57 19 81 23 85 16 80 50 26 84 47 57 2 84 10 69 17 24 71 59 6 3 14 28 69 65 32 43 68 83 22 73 5 3 39 54 6 3 61 20 15 85 99 29 82 71 54 56 22 73 78 50 48 58 50 32 97 10 15 94 15 93 4 25 94 71 45 3 2 46 96 87 7 36 99 24 93 69 72 34 65 93 46 81 75 12 41 37 83 92 6 60 47 5 14 100 13 22 27 39 17 58 80 68 100 95 96 85 32 11 11 32 18 20 33 31 71 75 40 77 26 72 62 83 1 25 57 22 47 11 84 31 79 74 18 78 91 93 97 3 53 48 52 43 79 28 64 19 45 22 64 45 21 27 73 27 86 57 5 10 6 86 87 45 34 68 66 64 4 41 2 59 97 39 85 34 17 79 94 26 96 58 43 27 27 41 36 46 63 48 87 98 16 60 42 97 41 33 55 91 27 89 78 70 56 47 65 66 80 5 4 52 17 46 90 62 73 30 94 74 92 50 80 34 3 45 70 37 19 36 62 6 22 32 79 69 23 49 89 64 58 58 96 24 16 57 2 16 44 41 99 26 59 16 85 7 33 48 20 16 14 83 63 36 24 53 37 62 70 6 64 13 93 64 91 39 94 35 34 25 5 85 46 3 80 68 42 92 61 77 25 61 59 73 92 56 34 42 24 24 94 19 7 51 73 69 75 21 32 72 99 44 6 52 64 28 43 37 65 23 42 71 58 83 55 67 85 93 66 27 44 38 10 66 75 95 45 39 53 26 28 85 89 27 86 25 75 1 97 86 5 90 70 95 93 35 4 7 72 13 88 80 92 58 15 3 22 75 51 45 40 73 99 32 42 10 83 97 91 47 60 89 7 21 7 53 29 50 69 9 6 53 47 37 33 42 81 48 78 64 10 3 11 21 58 2 39 26 69 82 43 43 26 95 8 62 7 50 66 40 5 28 36 82 26 57 70 53 4 32 83 74 79 84 52 60 72 100 74 8 74 10 18 33 68 100 26 29 67 32 3 9 57 20 39 48 78 15 26 62 35 38 4 49 10 68 10 69 83 31 23 69 58 28 48 80 9 9 31 86 29 87 23 32 29 12 96 87 14 45 65 12 63 8 50 19 92 100 74 43 47 42 62 9 55 61 70 41 18 89 49 18 57 7 61 54 76 97 51 61 91 97 7 23 43 100 36 9 69 58 34 74 65 34 85 50 48 10 54 96 82 78 10 21 53 35 22 67 53 88 70 91 67 58 13 91 42 68 87 7 8 65 9 5 72 74 20 88 52 14 47 1 35 74 66 26 64 94 59 86 14 60 38 37 48 83 19 12 3 43 23 4 97 79 39 28 25 29 5 31 43 38 15 75 64 2 98 75 51 45 1 7 36 84 24 99 66 95 45 5 17 88 47 29 19 71 21 12 20 82 26 65 89 47 55 19 34 21 22 86 88 52 93 92 93 21 69 91 96 62 100 94 4 80 56 92 14 76 9 10 67 3 26 65 15 31 66 95 25 85 20 17 7 68 41 21 41 26 43 28 21 16 36 24 58 85 20 3 44 8 8 79 6 9 58 69 64 41 86 36 48 35 14 35 39 88 61 1 5 18 84 19 31 59 48 52 50 43 79 61 23 35 62 84 41 69 16 39 54 16 42 45 11 56 17 36 7 18 37 85 67 15 4 95 44 61 70 27 9 35 85 38 83 47 59 96 33 83 68 87 57 78 41 100 57 85 63 7 39 55 31 85 36 84 23 85 96 97 81 18 23 65 58 73 7 18 81 36 71 86 70 8 44 20 22 48 14 92 26 44 68 32 39 35 13 79 41 15 86 80 86 53 83 49 79 18 2 23 89 30 98 30 75 64 36 94 4 56 45 4 58 48 8 32 20 24 53 3 81 18 78 49 94 87 72 61 12 29 46 3 98 6 90 82 3 18 29 75 3 32 86 15 43 26 71 1 10 42 59 41 50 78 52 14 68 15 36 98 55 80 1 50 66 19 85 28 11 44 18 44 92 69 18 43 60 12 28 36 100 3 14 39 75 80 12 27 55 13 11 65 97 34 89 24 88 12 69 94 63 10 40 39 93 60 72 1 17 27 32 53 90 32 52 66 27 99 81 19 46 20 9 82 71 9 74 38 56 73 3 76 74 78 12 15 71 25 33 68 49 29 52 47 1 88 62 74 26 70 93 41 29 84 19 35 52 40 50 85 32 93 2 63 27 36 82 68 74 84 91 6 26 8 48 43 48 15 44 34 91 21 12 86 45 10 77 55 24 73 34 97 84 6 80 4 36 17 91 43 90 91 60 7 93 11 67 27 26 63 91 35 22 98 42 14 66 86 5 49 69 72 1 56 92 17 62 88 25 99 49 66 91 16 40 26 97 91 56 25 56 87 76 88 77 66 49 6 39 83 16 96 99 47 95 74 70 67 92 31 76 92 76 81 28 82 95 44 43 2 11 57 34 25 68 86 57 10 54 95 88 14 69 65 34 1 74 57 32 82 17 92 94 20 87 53 93 57 16 3 25 10 68 30 90 50 57 34 63 37 62 65 76 62 60 73 1 35 3 78 86 26 30 67 57 60 51 98 54 50 79 58 23 69 75 68 3 26 37 94 5 68 9 1 75 21 97 35 40 59 98 31 67 77 29 35 83 30 96 48 97 23 100 8 98 39 65 46 13 4 55 72 1 48 31 58 41 45 27 52 52 53 61 70 62 90 13 55 79 88 25 48 20 23 38 58 36 16 3 11 79 16 45 7 54 21 58 6 99 42 46 70 86 99 83 34 26 59 4 61 61 92 75 14 76 16 97 41 4 56 6 96 23 75 2 81 30 49 6 79 94 14 96 59 71 10 63 70 27 69 67 25 63 43 26 79 2 90 47 53 36 26 17 28 74 29 94 75 8 92 14 1 9 28 10 57 32 6 45 53 54 32 63 26 7 75 66 46 18 82 32 12 12 69 61 80 99 26 96 79 21 88 97 22 38 97 68 34 19 68 2 55 27 19 26 54 72 1 1 62 15 37 74 91 44 11 15 52 21 12 55 75 86 16 83 37 39 74 15 61 40 55 22 1 17 65 51 93 35 84 91 92 91 59 23 63 26 19 7 57 69 11 14 40 67 88 22 81 37 81 91 18 11 82 37 28 62 81 9 56 6 30 38 47 35 16 53 14 28 98 3 26 17 16 90 10 18 65 11 79 16 59 47 45 2 67 27 80 21 63 13 19 53 77 100 32 29 16 62 91 52 5 72 8 48 57 27 75 92 9 38 27 16 15 16 96 39 31 57 58 70 38 79 11 33 24 44 1 32 67 61 85 61 46 16 40 43 87 97 31 78 1 59 46 47 58 92 80 33 32 80 30 36 88 6 92 30 8 71 83 77 29 2 34 46 40 75 41 16 3 39 77 8 75 51 49 19 3 34 4 75 31 78 31 42 37 2 63 59 52 12 60 20 31 48 54 14 81 36 52 98 2 53 97 96 84 4 42 3 76 72 44 65 91 58 43 100 52 90 13 69 18 84 48 29 96 73 66 63 91 15 31 98 17 37 82 37 89 7 76 35 45 61 93 26 68 79 34 3 31 27 8 54 95 12 57 59 68 85 5 4 62 19 46 50 72 14 89 91 70 65 77 49 61 67 17 2 100 17 50 85 16 11 100 57 87 41 53 25 11 56 91 27 74 73 63 6 79 94 9 92 24 45 57 90 100 94 62 50 99 88 51 89 68 6 75 2 11 10 84 61 17 45 99 36 55 58 2 97 73 39 40 100 70 68 62 60 49 23 42 41 69 51 1 33 69 61 3 59 75 77 73 21 95 62 40 90 28 82 44 31 42 95 38 71 70 88 25 85 24 5 29 54 49 73 38 95 97 84 43 46 86 1 37 78 19 93 57 32 91 97 40 91 68 35 25 47 22 62 22 72 90 17 88 51 29 52 62 50 36 37 62 25 40 96 77 82 5 20 44 98 7 98 44 26 70 3 82 74 15 22 77 40 84 15 74 12 45 90 94 87 32 81 14 30 43 68 77 7 20 91 91 13 33 79 60 75 17 95 4 62 35 96 73 69 4 33 51 74 28 65 36 92 48 49 15 65 98 1 17 46 49 9 58 7 59 26 64 77 76 6 36 76 13 38 37 53 87 65 44 49 10 34 69 98 18 48 64 56 66 98 54 41 90 55 63 41 46 39 37 27 35 88 59 15 44 50 59 76 53 89 37 43 95 26 69 75 29 2 27 52 63 7 91 72 69 78 90 16 26 62 26 23 47 21 4 75 59 95 51 12 37 82 38 89 79 11 23 90 63 78 3 3 21 73 5 33 86 87 15 52 97 78 65 35 95 64 79 49 77 63 93 66 10 88 4 73 48 34 49 96 42 59 96 91 18 22 62 19 92 42 74 40 93 1 11 73 3 47 15 74 10 37 52 49 36 3 24 42 8 95 66 54 74 62 11 48 47 35 81 37 42 79 39 59 88 59 6 32 22 68 97 87 17 12 80 50 6 58 90 47 24 69 8 41 38 45 1 43 63 46 60 1 30 52 72 54 39 46 85 44 48 10 24 8 73 66 73 76 1 86 26 76 22 43 64 99 42 100 54 22 89 32 40 47 14 55 48 50 97 98 79 31 59 20 95 24 24 48 51 100 67 100 7 2 9 27 40 90 43 40 56 24 98 21 23 33 1 40 51 20 21 39 21 21 29 15 88 59 32 95 86 78 65 27 65 22 20 81 62 69 92 1 54 2 48 27 28 9 58 93 31 61 57 9 79 57 13 66 9 63 32 80 1 72 33 87 70 31 93 10 4 66 43 11 6 34 55 33 70 36 37 10 43 46 10 65 98 68 95 21 85 14 38 66 9 91 95 99 4 66 44 38 35 19 59 26 35 59 88 85 21 40 61 47 35 12 50 3 14 76 82 67 12 90 48 31 6 38 10 76 43 76 72 58 9 51 1 53 45 70 91 65 85 15 38 92 72 89 55 60 94 28 20 89 31 90 33 86 63 69 99 8 19 41 2 8 72 4 63 14 44 16 73 29 6 93 84 64 65 5 62 25 61 10 73 11 67 17 47 6 24 59 2 13 30 31 56 48 22 52 96 16 66 56 85 7 38 88 100 44 36 50 30 57 9 51 31 44 36 87 92 84 19 99 63 70 30 91 60 62 29 65 77 33 1 81 78 51 48 70 81 78 8 76 50 78 13 55 27 34 47 63 92 84 5 44 83 28 17 19 2 13 3 44 29 36 29 64 36 4 29 70 57 71 13 6 99 37 12 25 2 9 95 9 100 39 5 41 93 56 96 57 85 15 35 68 79 54 38 54 31 58 99 77 51 94 64 97 74 61 24 94 20 2 2 66 65 85 59 67 30 44 74 58 6 64 76 18 63 74 7 91 3 61 60 89 69 75 92 46 9 79 52 58 98 44 11 65 61 70 32 4 67 3 79 67 75 64 51 25 91 34 35 69 74 33 93 16 9 46 97 60 70 6 46 91 37 15 80 59 18 76 88 24 74 37 1 24 97 18 84 78 61 40 64 68 42 22 1 31 22 8 41 19 17 89 18 13 24 73 92 22 61 89 57 22 39 69 27 92 10 81 99 44 13 51 86 10 56 92 25 56 37 94 84 31 83 95 56 53 32 23 1 28 35 25 9 25 99 61 38 7 34 30 20 5 74 39 13 41 94 86 64 73 24 44 42 47 18 37 55 98 60 67 51 59 45 32 3 93 80 25 38 32 55 6 33 43 4 8 16 27 94 15 6 86 3 15 44 14 24 39 15 27 25 57 65 48 71 24 61 47 14 90 77 4 14 33 47 58 30 99 70 4 79 17 10 59 92 100 27 62 14 60 97 35 84 21 54 72 33 34 51 57 78 22 83 47 41 14 89 5 73 64 87 5 23 30 97 1 100 75 93 64 28 95 14 24 4 21 20 55 9 49 43 27 1 22 91 77 42 97 18 34 10 64 95 1 23 47 93 34 99 68 85 68 68 62 49 36 93 73 34 72 78 2 64 25 10 57 22 85 82 71 75 21 75 28 48 82 23 99 59 19 12 52 21 14 22 58 35 97 94 25 76 77 24 58 16 53 67 34 47 63 81 25 35 53 75 92 58 98 64 90 51 42 4 26 44 56 28 11 47 8 59 36 36 13 1 33 58 32 12 31 76 97 24 61 25 78 65 27 31 97 7 64 6 27 95 56 55 31 35 29 100 33 38 23 24 39 22 89 24 44 63 96 73 51 75 35 39 70 83 75 39 23 86 37 58 30 79 80 46 46 31 7 67 52 41 58 14 26 49 7 77 58 92 65 14 73 12 41 37 34 85 64 14 91 84 79 83 61 85 83 64 36 44 88 88 70 1 82 85 55 68 18 83 66 84 80 23 52 12 50 8 38 94 43 58 12 53 45 40 56 53 23 75 1 44 99 36 85 14 6 58 49 82 50 89 95 85 86 6 19 83 37 49 81 75 68 67 17 81 64 68 37 54 85 50 18 37 5 54 25 21 50 29 7 25 90 95 49 11 5 60 20 99 70 72 54 15 43 92 6 98 99 67 53 91 52 17 3 66 19 23 8 68 71 5 28 1 88 8 4 27 10 75 19 37 81 3 75 14 10 1 98 18 59 65 77 37 55 7 86 34 77 93 27 1 5 90 56 89 77 30 58 12 86 3 37 83 83 83 69 56 88 25 18 41 50 3 94 31 67 18 22 3 56 61 28 99 75 9 41 83 88 62 49 76 20 13 61 41 1 94 53 18 10 93 63 85 39 5 11 25 58 61 62 76 76 7 85 11 77 73 48 92 93 30 67 26 12 35 60 82 73 3 17 59 24 95 72 28 15 77 44 94 52 69 15 100 82 23 68 26 27 77 32 74 47 13 98 36 42 34 2 47 64 25 11 90 20 93 88 39 25 74 66 60 23 32 85 81 29 12 46 26 95 46 74 20 54 11 59 24 2 23 28 15 93 44 31 86 27 41 83 1 99 50 6 84 96 77 84 24 39 27 30 6 28 69 51 74 96 43 72 43 67 26 87 78 94 22 88 80 76 27 31 40 94 80 5 44 88 78 63 70 61 82 6 27 87 2 6 7 78 20 21 46 60 41 35 42 50 5 27 38 88 51 32 91 9 91 6 17 61 95 48 79 67 93 37 72 22 39 73 44 79 85 38 43 71 55 30 81 52 100 94 19 61 56 20 39 22 26 16 10 86 57 65 33 61 51 88 44 24 57 52 1 69 59 15 54 1 69 71 31 31 54 97 63 27 76 32 43 36 5 68 94 75 30 91 63 31 76 91 30 41 55 25 6 51 85 11 95 82 76 55 82 20 86 78 88 90 87 81 66 66 63 16 4 5 94 65 11 58 10 5 49 50 14 71 31 69 61 91 37 69 68 96 2 31 91 38 18 86 17 90 5 73 64 65 30 63 78 92 24 94 35 4 69 99 88 68 60 85 78 1 43 1 89 3 32 73 24 29 39 60 24 17 27 14 81 55 62 39 57 72 85 36 38 77 1 31 92 5 93 73 94 93 27 3 50 18 15 43 100 17 10 54 4 94 35 56 66 30 68 78 14 76 78 50 17 23 50 32 32 100 33 76 10 90 92 52 15 96 98 78 84 24 50 14 25 21 99 49 91 21 86 62 73 18 49 59 30 75 48 3 66 90 35 28 51 52 56 5 21 3 41 1 96 2 96 68 54 70 13 28 89 23 85 57 82 22 24 8 96 38 19 21 5 65 93 34 45 46 85 22 88 49 97 28 83 66 71 56 39 45 42 38 58 61 79 81 21 86 27 29 86 85 63 66 77 13 86 98 65 71 20 82 97 1 31 35 99 33 28 24 24 94 74 31 17 51 74 27 51 31 42 82 68 88 87 73 45 71 89 67 48 92 80 98 36 30 14 70 36 96 39 90 36 42 88 43 28 68 61 96 35 91 8 43 68 93 72 74 32 97 26 17 39 17 83 52 87 72 12 52 34 4 27 68 26 11 80 64 36 17 97 36 33 97 13 25 28 55 29 81 33 9 20 39 76 34 34 74 30 28 23 48 46 99 82 43 22 92 60 57 4 7 96 68 9 8 61 49 7 46 74 8 95 45 9 11 4 42 1 10 71 66 18 27 21 13 61 25 37 28 79 84 73 71 67 54 99 18 5 76 79 7 61 91 34 27 28 25 13 44 32 2 62 42 17 85 42 16 11 18 85 26 99 71 32 92 29 30 50 48 29 37 8 83 73 61 44 24 86 60 39 46 52 7 83 50 18 32 96 64 16 43 83 68 30 74 10 12 5 60 33 1 44 45 30 80 37 48 8 100 82 34 30 70 18 49 27 29 72 11 72 85 89 87 82 67 45 79 12 86 41 24 5 46 62 58 20 84 59 10 73 7 35 40 49 45 76 6 11 76 3 37 68 21 4 73 55 2 5 24 14 54 10 32 39 27 68 78 49 63 93 66 44 32 12 41 86 26 94 41 72 16 82 12 34 40 66 11 99 59 30 39 2 29 66 30 89 4 22 44 29 75 52 50 56 100 37 63 9 42 98 53 71 27 51 47 34 25 34 4 79 24 55 29 77 30 5 7 94 69 47 2 68 14 17 44 24 93 59 63 20 8 97 38 23 30 56 8 90 22 97 6 80 31 84 23 17 20 39 55 31 14 21 46 66 94 56 3 44 52 49 82 78 24 54 19 17 83 34 3 71 23 92 28 18 96 35 50 85 15 78 32 38 97 68 74 87 78 97 72 55 56 56 44 69 35 11 10 64 39 10 95 70 18 14 37 51 71 12 48 74 7 43 46 60 12 38 44 46 47 49 4 81 63 37 74 56 45 66 46 57 14 91 90 72 83 79 28 40 72 97 4 20 53 28 82 89 80 6 89 59 41 66 92 49 66 58 15 88 1 33 4 5 93 9 32 10 8 80 38 88 20 58 56 72 41 79 69 15 21 98 97 14 34 67 69 99 51 31 9 45 23 55 5 69 80 12 31 63 27 15 92 29 65 31 11 93 45 27 40 39 50 33 99 21 25 51 4 12 79 42 5 10 57 59 23 11 73 99 5 34 90 13 100 91 29 57 60 96 86 78 40 30 46 86 84 61 76 86 65 36 86 80 50 52 89 98 64 47 100 16 29 66 9 56 51 64 98 83 40 30 8 81 17 28 60 13 55 98 18 93 34 31 18 22 27 78 100 93 88 65 59 69 77 68 81 60 80 36 72 18 35 43 43 62 22 63 71 46 50 60 12 58 6 48 16 91 83 94 66 32 42 83 51 73 17 63 13 30 43 98 17 32 66 100 11 70 97 49 32 38 3 62 19 53 5 75 51 82 38 80 92 100 88 38 80 27 49 37 36 11 6 6 20 74 50 1 30 100 79 57 21 26 22 88 5 62 30 14 60 2 97 4 26 6 37 35 97 88 41 75 73 54 33 61 91 87 18 36 14 73 25 74 79 15 76 76 43 94 23 44 68 13 96 36 87 79 85 7 18 14 89 18 7 43 22 41 49 15 11 34 25 83 49 77 89 16 65 69 5 18 65 52 92 29 54 92 76 18 16 66 95 24 62 92 3 83 59 78 85 71 47 35 54 3 42 39 84 55 92 51 99 29 43 8 73 18 30 61 12 31 26 68 88 8 45 28 56 19 87 82 11 56 34 91 78 23 1 68 96 6 45 4 42 84 99 36 35 38 59 61 11 36 2 54 50 84 52 16 68 33 75 67 45 87 86 88 85 45 35 67 35 19 87 18 84 68 55 53 21 14 98 58 21 11 68 74 6 21 52 44 92 88 22 66 84 58 56 60 46 72 49 18 62 22 18 29 29 70 1 5 57 22 73 9 8 89 1 86 53 37 44 97 10 82 89 97 50 47 63 18 42 40 40 53 37 89 36 90 27 93 16 43 89 63 77 36 89 51 95 92 100 79 9 46 43 75 22 14 42 71 27 60 49 70 43 10 13 8 68 29 76 31 81 93 36 98 43 41 78 2 14 35 63 86 70 92 61 97 59 19 58 81 24 69 86 30 47 41 43 24 4 47 19 68 25 81 58 43 66 25 66 39 47 22 51 41 75 67 3 3 93 52 62 45 100 8 52 14 60 50 77 25 13 1 31 83 45 77 35 77 31 13 34 25 51 68 63 62 70 11 94 36 14 52 68 48 88 69 43 52 44 70 75 20 6 53 70 10 50 26 80 58 88 49 31 97 82 33 35 59 21 92 5 18 64 87 68 28 17 90 53 9 59 39 71 2 100 84 35 69 56 30 17 82 68 2 10 38 12 88 38 15 73 7 6 40 89 49 6 81 11 67 84 74 38 43 13 43 92 15 51 39 16 68 18 80 73 58 76 69 14 8 89 12 31 49 93 49 74 37 38 48 25 100 65 23 42 58 97 33 6 2 8 22 6 18 46 34 40 4 40 58 29 46 3 11 90 85 19 97 7 38 95 4 39 41 6 87 59 99 42 19 15 90 82 6 62 63 23 31 2 59 8 83 11 60 94 28 18 96 54 22 36 62 60 96 100 15 67 42 95 88 74 83 80 72 11 24 16 7 3 95 44 69 17 19 70 12 25 26 59 73 22 95 49 27 92 73 48 26 64 58 82 85 68 64 69 93 23 44 8 64 22 66 25 8 36 82 23 90 34 6 43 94 13 30 73 15 22 24 48 49 70 80 49 94 77 65 60 64 42 49 64 37 59 61 29 16 11 70 83 58 44 77 96 35 61 8 57 82 11 44 95 25 83 42 38 8 85 31 80 19 69 41 49 13 97 51 58 27 75 63 50 10 85 44 10 72 59 24 83 67 2 34 43 20 94 7 57 2 36 47 11 84 63 67 67 32 78 14 79 44 58 53 57 72 47 9 88 26 36 39 47 28 34 39 88 58 81 9 43 91 12 92 21 69 8 69 25 8 62 24 89 60 19 51 78 95 73 60 67 1 4 97 29 5 61 49 79 51 81 69 14 23 32 33 28 86 58 25 47 8 62 36 86 74 93 24 5 82 88 38 75 32 29 47 23 67 15 99 35 23 32 59 54 80 38 67 56 67 51 54 35 86 98 26 49 91 67 21 95 5 65 95 23 70 46 18 21 42 97 98 49 2 92 36 40 100 8 18 11 11 66 67 100 25 35 19 81 98 6 89 28 54 49 98 5 85 12 34 53 15 37 99 72 89 54 3 51 15 38 22 49 1 92 36 44 23 3 66 82 27 45 22 48 59 84 92 51 82 97 70 43 10 66 9 15 41 24 22 99 34 71 7 26 6 72 35 26 91 32 96 1 68 76 100 1 95 25 30 94 54 79 58 95 81 81 54 9 1 57 81 98 4 65 1 5 83 22 61 88 23 65 4 35 39 42 39 58 80 50 73 49 88 96 31 79 93 99 57 32 51 75 92 56 22 93 53 100 41 88 48 64 84 69 81 13 84 7 41 17 57 13 4 89 37 94 69 87 46 6 9 31 39 58 22 100 4 72 91 43 31 77 70 96 87 95 69 86 45 96 43 60 24 60 29 79 20 81 22 57 88 72 81 90 92 67 89 83 59 85 73 6 67 9 11 98 47 51 5 57 43 6 92 12 87 34 75 40 88 35 56 74 97 24 76 61 6 78 51 68 63 63 100 97 73 43 24 36 90 89 77 57 64 89 88 83 27 92 35 14 6 70 63 42 97 15 59 62 93 16 67 82 86 90 38 23 86 33 91 31 15 95 55 28 36 21 98 68 57 9 19 54 3 99 19 82 26 79 93 58 30 72 14 90 55 59 20 78 34 94 43 10 3 37 22 51 32 29 78 90 13 99 84 54 92 55 77 99 91 3 52 48 99 43 98 18 95 41 86 62 8 80 5 29 15 16 63 40 14 8 72 76 67 92 9 12 73 18 94 68 91 2 61 77 3 9 27 16 85 49 55 66 32 63 84 72 31 16 17 52 63 57 47 81 28 66 56 11 74 93 5 26 40 80 81 84 40 48 31 6 62 73 68 12 57 57 79 62 33 16 88 24 79 49 13 94 77 95 33 90 89 10 5 3 77 43 43 15 59 3 91 52 12 15 51 53 5 35 59 6 18 79 27 72 48 38 75 99 90 86 47 5 5 53 97 31 56 50 75 66 49 90 91 87 90 59 58 45 13 62 66 41 45 50 56 88 46 67 91 74 82 43 29 48 27 66 29 53 33 71 79 43 62 25 72 52 95 66 5 83 83 77 38 40 61 58 36 59 61 7 55 34 70 87 38 47 5 37 92 8 89 87 3 54 83 92 63 43 82 88 72 96 47 40 82 89 56 79 27 82 39 69 59 80 96 91 57 29 76 67 76 21 81 19 66 13 94 53 37 7 41 93 26 41 33 38 55 100 4 83 10 94 36 48 82 48 66 9 15 49 99 80 58 46 82 13 58 1 93 83 31 83 34 64 34 77 24 89 42 18 57 70 33 21 54 39 91 12 75 94 48 6 90 66 78 50 82 88 34 92 44 75 32 2 68 96 17 62 71 69 15 18 78 82 76 15 93 33 99 37 29 30 36 59 73 62 23 66 91 2 65 43 56 65 1 92 24 1 89 6 64 28 100 4 90 72 91 90 14 7 26 38 12 99 38 30 16 43 84 97 82 17 18 53 65 98 33 79 62 74 58 69 62 24 1 81 32 70 66 11 88 19 9 65 53 15 12 96 53 6 10 27 91 26 71 51 75 21 14 56 20 67 25 16 35 78 31 97 19 43 44 87 56 97 36 67 72 28 50 8 40 97 17 29 51 96 48 79 29 76 2 83 36 43 62 92 43 41 78 58 40 67 65 88 36 6 7 40 25 76 19 21 64 63 71 60 93 29 66 57 72 33 31 6 45 24 30 91 83 72 65 81 5 82 82 14 34 28 7 34 82 2 23 42 80 38 1 18 51 51 5 12 22 93 80 75 70 48 30 98 92 10 45 17 72 11 11 39 63 66 12 44 4 47 61 92 2 1 59 4 3 4 65 78 14 35 42 95 96 32 18 57 9 63 52 16 31 56 11 57 63 98 42 30 16 37 38 23 26 41 22 93 30 36 67 24 36 77 36 66 65 16 44 59 62 2 96 51 49 76 88 47 50 4 24 97 30 63 7 92 56 35 60 56 32 61 79 96 17 77 90 17 89 49 26 76 18 3 49 41 1 61 80 59 83 69 11 26 84 24 34 72 73 79 8 56 95 54 91 6 58 9 22 85 31 4 80 57 12 33 51 58 68 11 27 17 84 37 2 45 34 51 78 59 24 18 77 74 88 92 61 58 65 1 31 79 14 40\n67 83", "expectedOutput": "45880", "number": 2, "group": 2, "time": 1, "memory": 20, "hidden": false}, {"input": "1\n10\n32 23 2 3 212 3 2 2 5 3\n34 54", "expectedOutput": "0", "number": 3, "group": 3, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n10\n32 23 2 3 212 3 2 2 5 3\n1 5", "expectedOutput": "9", "number": 4, "group": 4, "time": 1, "memory": 20, "hidden": true}, {"input": "1\n5\n32 4332 12324 343874 348734\n8392 16656", "expectedOutput": "1", "number": 5, "group": 5, "time": 1, "memory": 20, "hidden": true}], "points": 10}] \ No newline at end of file diff --git a/api/seeders/questions_seeder.js b/api/seeders/questions_seeder.js deleted file mode 100644 index 999c45b..0000000 --- a/api/seeders/questions_seeder.js +++ /dev/null @@ -1,58 +0,0 @@ -const mongoose = require("mongoose"); -const TestCaseModel = require("../models/testCasesModel"); -const QuestionModel = require("../models/ques"); -const fs = require("fs"); - -const insertTestCase = async (testCase) => { - try { - const question = await QuestionModel.findById(testCase.question); - const inserted = await TestCaseModel.create(testCase); - question.testCases.push(inserted._id); - await question.save(); - } catch (error) { - console.log(error.message); - } -}; - -const addData = async (Questions) => { - const questions = JSON.parse(JSON.stringify(Questions)); - questions.forEach((question) => (question.testCases = [])); - - await TestCaseModel.deleteMany({}); - await QuestionModel.deleteMany({}); - - const insertedQuestions = await QuestionModel.insertMany(questions); - const testCases = []; - - for (let i = 0; i < insertedQuestions.length; i++) { - Questions[i].testCases.forEach(( - tc, - ) => (tc.question = insertedQuestions[i]._id)); - testCases.push(...Questions[i].testCases); - } - - for (let i = 0; i < testCases.length; i++) { - await insertTestCase(testCases[i]); - } -}; - -fs.readFile("final_seeder.json", "utf8", (err, data) => { - if (err) { - console.error("Error: ", err); - return; - } - - try { - mongoose - // .connect("mongodb://localhost:27017/mydb") - .connect( - "mongodb+srv://doadmin:18EA0xKN3IC7259W@db-mongodb-blr1-51446-2eb2b2b3.mongo.ondigitalocean.com/admin?tls=true&authSource=admin&replicaSet=db-mongodb-blr1-51446", - ) - .then(() => console.log("Connection Successfull")) - .then(() => addData(JSON.parse(data))) - .then(() => console.log("Done")) - .catch("Error connecting"); - } catch (parseError) { - console.error(parseError.message); - } -}); diff --git a/api/seeders/test.py b/api/seeders/test.py deleted file mode 100644 index a18633c..0000000 --- a/api/seeders/test.py +++ /dev/null @@ -1,14 +0,0 @@ -import json - - -with open("final_seeder.json") as file: - global data - data = json.loads(file.read()) - -for question in data: - if question["name"] == "ARRRCRT": - print(question["testCases"]) - - -# with open("final_seeder_new.json", "w") as file: -# file.write(json.dumps(data)) diff --git a/api/utils/sendMail.js b/api/utils/sendMail.js deleted file mode 100644 index 90795c5..0000000 --- a/api/utils/sendMail.js +++ /dev/null @@ -1,40 +0,0 @@ -const nodemailer = require("nodemailer"); -require("dotenv").config(); - -const CC_SENDER_MAIL = process.env.CC_SENDER_MAIL; -const CC_SENDER_PASS = process.env.CC_SENDER_PASS; - -async function sendMail(reciever, subject, body) { - try { - // Create a transporter object using your SMTP server details - const transporter = nodemailer.createTransport({ - service: "Gmail", // or your email service provider - port: 25, - auth: { - user: CC_SENDER_MAIL, - pass: CC_SENDER_PASS, - }, - }); - - // Create an email message - const mailOptions = { - from: CC_SENDER_MAIL, - to: reciever, - subject: subject, - text: body, - }; - - // Send the email - const info = await transporter.sendMail(mailOptions); - - console.log("Email sent:", info.response); - return { status: true, message: "Email sent:" + info.response }; - } catch (error) { - console.error("Error sending email:", error); - return { status: false, message: "Error sending email:" + error }; - } -} - -module.exports = { - sendMail, -}; diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..4318fc0 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "log" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/cors" + "github.com/gofiber/fiber/v2/middleware/logger" + + config "github.com/CodeChefVIT/cookoff-backend/config" +) + +func main() { + app := fiber.New() + + config, err := config.LoadConfig(".") + if err != nil { + log.Fatalln("Failed to load environment variables! \n", err.Error()) + } + + // database.ConnectDB(&config) + //database.RunMigrations(database.DB) + + app.Use(logger.New()) + + app.Use(cors.New(cors.Config{ + AllowOrigins: config.ClientOrigin, + AllowHeaders: "Origin, Content-Type, Accept", + AllowMethods: "GET, POST, PATCH, DELETE", + AllowCredentials: true, + })) + + apiGroup := app.Group("/v1") + + // routes.AuthRoutes(apiGroup) + + apiGroup.Get("/healthcheck", func(c *fiber.Ctx) error { + return c.Status(200).JSON(fiber.Map{ + "status": "success", + "message": "icETITE-24 Backend API is up and running.", + }) + }) + + app.Use(func(c *fiber.Ctx) error { + return c.Status(404).JSON(fiber.Map{ + "status": "error", + "message": "Route not found", + }) + }) + + log.Fatal(app.Listen(config.Port)) +} diff --git a/conf.d/default.conf b/conf.d/default.conf deleted file mode 100644 index 23da18f..0000000 --- a/conf.d/default.conf +++ /dev/null @@ -1,6 +0,0 @@ -server { - listen 80; - location / { - proxy_pass http://node-app:8080; - } -} \ No newline at end of file diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..88eb17e --- /dev/null +++ b/config/config.go @@ -0,0 +1,32 @@ +package initializers + +import ( + "github.com/spf13/viper" +) + +type Config struct { + Port string `mapstructure:"PORT"` + DBHost string `mapstructure:"POSTGRES_HOST"` + DBUserName string `mapstructure:"POSTGRES_USER"` + DBUserPassword string `mapstructure:"POSTGRES_PASSWORD"` + DBName string `mapstructure:"POSTGRES_DB"` + DBPort string `mapstructure:"POSTGRES_PORT"` + ClientOrigin string `mapstructure:"CLIENT_ORIGIN"` +} + +func LoadConfig(path string) (config Config, err error) { + viper.SetConfigFile(".env") + viper.AutomaticEnv() + + err = viper.ReadInConfig() + if err != nil { + return + } + + err = viper.Unmarshal(&config) + if err != nil { + return + } + + return +} diff --git a/contributing.md b/contributing.md deleted file mode 100644 index ba69e3b..0000000 --- a/contributing.md +++ /dev/null @@ -1,72 +0,0 @@ -## Contribution Guidelines - -Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. - -## How to contribute - -- Decide which repository to contribute -- Decide what to contribute -- Fork the repo then clone it locally -- Commit your work (You should create a new branch when you're doing development work that is somewhat experimental in nature.) -- Create a **Pull Request** -- Congrats 🎉 you have just contributed towards open source! - -## What to contribute - -- Find an open issue to tackle -- Ask if you can help write a new feature -- Add / Improve Unit Testing -- Write tutorials for how a project can be used and add to the readme -- Review code on other people’s submissions and help improving / finding vulnerabilities - -## Making a PR -- Provide all the appropriate details asked in PR template -- A pull request doesn’t have to represent finished work. It’s usually better to open a pull request early on, so others can watch or give feedback on your progress. Just mark it as a “WIP” (Work in Progress) in the subject line. You can always add more commits later. - -## Opening an Issue -- Make use of an appropriate Issue Template -- We welcome Feature request, Bug Report, Documentation fix and others -- Do not open critical security issues here, report them directly at [our email](mailto:contact@codechefvit.com). - -## Communicating effectively -**Give context.** Help others get quickly up to speed. If you’re running into an error, explain what you’re trying to do and how to reproduce it. If you’re suggesting a new idea, explain why you think it’d be useful to the project (not just to you!). - -``` -✔️ “X doesn’t happen when I do Y” -❌ “X is broken! Please fix it.” -``` - -**Do your homework beforehand.** It’s OK not to know things, but show that you tried. Before asking for help, be sure to check a project’s README, documentation, issues (open or closed), mailing list, and search the internet for an answer. People will appreciate when you demonstrate that you’re trying to learn. - -``` -✔️ ““I’m not sure how to implement X. I checked the help docs and didn’t find any mentions.”” -❌ “How do I X?” -``` - -**Keep requests short and direct.** - -``` -✔️ “I’d like to write an API tutorial.” -❌ “I was driving down the highway the other day and stopped for gas, and then I had this amazing idea for something we should be doing, but before I explain that, let me show you…“ -``` - -**It’s okay to ask questions (but be patient!).** - -``` -✔️ “Thanks for looking into this error. I followed your suggestions. Here’s the output.” -❌ “Why can’t you fix my problem? Isn’t this your project?” -``` - -**Respect community decisions.** - -``` -✔️ “I’m disappointed you can’t support my use case, but as you’ve explained it only affects a minor portion of users, I understand why. Thanks for listening.” -❌ “Why won’t you support my use case? This is unacceptable!” -``` - -## Misc -- You are welcome to Propose a new feature by creating an **Issue**. -- You may Discuss a high-level topic or idea (for example, community, vision or policies) by writing to us at our [Email](mailto:contact@codechefvit.com). - -## Attribution -- [Open Source Guide](https://opensource.guide/how-to-contribute/) \ No newline at end of file diff --git a/deployment.yaml b/deployment.yaml deleted file mode 100644 index 1988e38..0000000 --- a/deployment.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cookooff-backend-deployment -spec: - replicas: 10 - selector: - matchLabels: - app: cookooff-backend - template: - metadata: - labels: - app: cookooff-backend - spec: - containers: - - name: cookooff-backend - image: shivam2002/cookoff:latest # Replace 'tag' with the specific image tag you want to use - ports: - - containerPort: 8080 # Assuming your Node.js app listens on port 3000 - env: - - name: NODE_ENV - value: production # Set your desired environment variables here - # Add more environment variables or volume mounts if needed diff --git a/docker-compose.yml b/docker-compose.yml index 4ebbd77..68e1ae9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,30 +1,28 @@ version: '3' services: - node-app: - build: . - command: node index.js + postgres: + image: postgres:latest + container_name: db + ports: + - '6500:5432' volumes: - - .:/usr/app/ - - /usr/app/node_modules - # ports: - # - "8080:8080" - depends_on: - - mongodb + - ./postgres_data:/var/lib/postgresql/data env_file: - .env - nginx: - image: nginx:latest - volumes: - - ./conf.d:/etc/nginx/conf.d - depends_on: - - node-app + api: + build: . ports: - - 8001:80 - mongodb: - image: mongo:latest + - "8080" + env_file: + - .env + restart: on-failure + nginx: + build: ./nginx ports: - - "27017:27017" - volumes: - - mongodb_data:/data/db + - "80:80" + depends_on: + - api + restart: always + volumes: - mongodb_data: + progresDB: diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4a16bd3 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/CodeChefVIT/cookoff-backend + +go 1.21.1 diff --git a/index.js b/index.js deleted file mode 100644 index cae88bb..0000000 --- a/index.js +++ /dev/null @@ -1,47 +0,0 @@ -const express = require("express"); -const mongoose = require("mongoose"); -const morgan = require("morgan"); -const os = require("os"); -const cors = require("cors"); -const TestCaseRouter = require("./api/routes/testCaseRouter"); -const authRoute = require("./api/routes/auth"); -const quesRoute = require("./api/routes/questionsRouter"); -const adminRoute = require("./api/routes/adminRouter"); -const subroute = require("./api/routes/submission"); -require("dotenv").config(); - -const app = express(); - -// Read MongoDB connection details from environment variables -const mongoURI = process.env.DB_URI; - -console.log(mongoURI); -// Connecting to mongoDB -mongoose - .connect(mongoURI, { - useNewUrlParser: true, - useUnifiedTopology: true, - }) - .then(() => console.log("MongoDB Connected")) - .catch((err) => console.log(err)); - -// Using middleware -app.use(express.json()); -app.use(morgan("tiny")); -app.use(cors()); - -// Setting up routes -app.get("/ping", (_, res) => { - res.status(200).json({ msg: "pong", hostname: os.hostname() }); -}); - -app.use("/testcases/", TestCaseRouter); -app.use("/auth/", authRoute); -app.use("/ques/", quesRoute); -app.use("/submit/", subroute); -app.use("/admin/", adminRoute); - -// Starting Server -app.listen(8080, () => { - console.log("Server started at port: 8080"); -}); diff --git a/internal/database/db.go b/internal/database/db.go new file mode 100644 index 0000000..c960838 --- /dev/null +++ b/internal/database/db.go @@ -0,0 +1,25 @@ +package database + +import ( + "database/sql" + "fmt" + "log" + + config "github.com/CodeChefVIT/cookoff-backend/config" + "github.com/uptrace/bun" + "github.com/uptrace/bun/dialect/pgdialect" + "github.com/uptrace/bun/driver/pgdriver" +) + +var DB *bun.DB + +func ConnectDB(config *config.Config) { + dsn := fmt.Sprintf("postgresql://%s:%s@%s:%s/%s?sslmode=disable", config.DBUserName, config.DBUserPassword, config.DBHost, config.DBPort, config.DBName) + + DB = bun.NewDB(sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn))), pgdialect.New()) + + if err := DB.Ping(); err != nil { + log.Fatal("Could not connect to databse") + log.Printf("DSN = %s", dsn) + } +} diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..716a5ff --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx:latest + +EXPOSE 80 + +COPY nginx.conf /etc/nginx/nginx.conf \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..0187627 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,16 @@ +events { + worker_connections 1024; +} +http { + server_tokens off; + server { + listen 80; + + location /api/ { + rewrite ^/api(/.*)$ $1 break; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header Host $http_host; + proxy_pass http://api:8080/; + } + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 2756324..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1982 +0,0 @@ -{ - "name": "cookoff-backend", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cookoff-backend", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "axios": "^1.5.0", - "bcrypt": "^5.1.1", - "body-parser": "^1.20.2", - "cors": "^2.8.5", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "express-rate-limit": "^6.9.0", - "generate-password": "^1.7.0", - "jsonwebtoken": "^9.0.1", - "mongoose": "^7.5.2", - "morgan": "^1.10.0", - "nodemailer": "^6.9.5", - "nodemon": "^3.0.1", - "os": "^0.1.2" - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@types/node": { - "version": "20.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", - "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==" - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/bcrypt": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", - "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", - "hasInstallScript": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.11", - "node-addon-api": "^5.0.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/bson": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-5.4.0.tgz", - "integrity": "sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA==", - "engines": { - "node": ">=14.20.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-rate-limit": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.9.0.tgz", - "integrity": "sha512-AnISR3V8qy4gpKM62/TzYdoFO9NV84fBx0POXzTryHU/qGUJBWuVGd+JhbvtVmKBv37t8/afmqdnv16xWoQxag==", - "engines": { - "node": ">= 14.0.0" - }, - "peerDependencies": { - "express": "^4 || ^5" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/generate-password": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/generate-password/-/generate-password-1.7.0.tgz", - "integrity": "sha512-WPCtlfy0jexf7W5IbwxGUgpIDvsZIohbI2DAq2Q6TSlKKis+G4GT9sxvPxrZUGL8kP6WUXMWNqYnxY6DDKAdFA==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kareem": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", - "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "optional": true - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mongodb": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.8.1.tgz", - "integrity": "sha512-wKyh4kZvm6NrCPH8AxyzXm3JBoEf4Xulo0aUWh3hCgwgYJxyQ1KLST86ZZaSWdj6/kxYUA3+YZuyADCE61CMSg==", - "dependencies": { - "bson": "^5.4.0", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "optionalDependencies": { - "@mongodb-js/saslprep": "^1.1.0" - }, - "peerDependencies": { - "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.0.0", - "kerberos": "^1.0.0 || ^2.0.0", - "mongodb-client-encryption": ">=2.3.0 <3", - "snappy": "^7.2.2" - }, - "peerDependenciesMeta": { - "@aws-sdk/credential-providers": { - "optional": true - }, - "@mongodb-js/zstd": { - "optional": true - }, - "kerberos": { - "optional": true - }, - "mongodb-client-encryption": { - "optional": true - }, - "snappy": { - "optional": true - } - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongoose": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-7.5.2.tgz", - "integrity": "sha512-yEkmI1jfiog7QUvMWz3eB/XoA3/5DrVvSz+z3V5hnq8VtZIHC7ujEV0RKzRXwr8QNMOs+OTB7+aK7R/N/V3yXA==", - "dependencies": { - "bson": "^5.4.0", - "kareem": "2.5.1", - "mongodb": "5.8.1", - "mpath": "0.9.0", - "mquery": "5.0.0", - "ms": "2.1.3", - "sift": "16.0.1" - }, - "engines": { - "node": ">=14.20.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mongoose" - } - }, - "node_modules/mongoose/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/mpath": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", - "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mquery": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", - "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", - "dependencies": { - "debug": "4.x" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/mquery/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mquery/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" - }, - "node_modules/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/nodemailer": { - "version": "6.9.5", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.5.tgz", - "integrity": "sha512-/dmdWo62XjumuLc5+AYQZeiRj+PRR8y8qKtFCOyuOl1k/hckZd8durUUHs/ucKx6/8kN+wFxqKJlQ/LK/qR5FA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nodemon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz", - "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/os/-/os-0.1.2.tgz", - "integrity": "sha512-ZoXJkvAnljwvc56MbvhtKVWmSkzV712k42Is2mA0+0KTSRakq5XXuXpjZjgAt9ctzl51ojhQWakQQpmOvXWfjQ==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sift": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", - "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 06e82df..0000000 --- a/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "cookoff-backend", - "version": "1.0.0", - "description": "Backend for cook off portal", - "main": "index.js", - "scripts": { - "test": "test", - "start": "nodemon ./index.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/CodeChefVIT/cookoff-backend.git" - }, - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/CodeChefVIT/cookoff-backend/issues" - }, - "homepage": "https://github.com/CodeChefVIT/cookoff-backend#readme", - "dependencies": { - "axios": "^1.5.0", - "bcrypt": "^5.1.1", - "body-parser": "^1.20.2", - "cors": "^2.8.5", - "dotenv": "^16.3.1", - "express": "^4.18.2", - "express-rate-limit": "^6.9.0", - "generate-password": "^1.7.0", - "jsonwebtoken": "^9.0.1", - "mongoose": "^7.5.2", - "morgan": "^1.10.0", - "nodemailer": "^6.9.5", - "nodemon": "^3.0.1", - "os": "^0.1.2" - } -} diff --git a/service.yaml b/service.yaml deleted file mode 100644 index 9d5ca2c..0000000 --- a/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: cookooff-backend-service -spec: - selector: - app: cookooff-backend - ports: - - protocol: TCP - port: 80 # The port on which the service will be exposed - targetPort: 8080 # The port your Node.js app is listening on - type: LoadBalancer # Change to 'NodePort' or 'ClusterIP' if needed From 09acea33090a33670c5aff1456c146747532226a Mon Sep 17 00:00:00 2001 From: Vedant Matanhelia Date: Wed, 4 Oct 2023 17:06:31 +0530 Subject: [PATCH 2/2] Created a migrations file and a database connection --- .dockerignore | 1 + CONTRIBUTING.md | 4 ++-- cmd/main.go | 14 ++++++-------- go.mod | 41 +++++++++++++++++++++++++++++++++++++++++ internal/database/db.go | 2 ++ 5 files changed, 52 insertions(+), 10 deletions(-) diff --git a/.dockerignore b/.dockerignore index 93f1361..2d1096f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,3 @@ node_modules npm-debug.log +postgres_data \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index db01c79..1e17237 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -21,7 +21,7 @@ make up # Start Docker containers in the background ```` *** -Your API will be running on http://localhost:80 +Your API will be running on http://localhost/api/ -Test whether API is up at http://localhost/api/v1/healthcheck +Test whether API is up at http://localhost/api/ping *** diff --git a/cmd/main.go b/cmd/main.go index 4318fc0..9dd5163 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -8,6 +8,7 @@ import ( "github.com/gofiber/fiber/v2/middleware/logger" config "github.com/CodeChefVIT/cookoff-backend/config" + "github.com/CodeChefVIT/cookoff-backend/internal/database" ) func main() { @@ -18,8 +19,8 @@ func main() { log.Fatalln("Failed to load environment variables! \n", err.Error()) } - // database.ConnectDB(&config) - //database.RunMigrations(database.DB) + database.ConnectDB(&config) + database.RunMigrations(database.DB) app.Use(logger.New()) @@ -29,15 +30,12 @@ func main() { AllowMethods: "GET, POST, PATCH, DELETE", AllowCredentials: true, })) - - apiGroup := app.Group("/v1") - // routes.AuthRoutes(apiGroup) - apiGroup.Get("/healthcheck", func(c *fiber.Ctx) error { + app.Get("/ping", func(c *fiber.Ctx) error { return c.Status(200).JSON(fiber.Map{ - "status": "success", - "message": "icETITE-24 Backend API is up and running.", + "message": "pong", + "status": "Backend up and running", }) }) diff --git a/go.mod b/go.mod index 4a16bd3..c0b7f19 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,44 @@ module github.com/CodeChefVIT/cookoff-backend go 1.21.1 + +require ( + github.com/gofiber/fiber/v2 v2.49.2 + github.com/spf13/viper v1.16.0 + github.com/uptrace/bun v1.1.16 + github.com/uptrace/bun/dialect/pgdialect v1.1.16 + github.com/uptrace/bun/driver/pgdriver v1.1.16 +) + +require ( + github.com/andybalholm/brotli v1.0.5 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/subosito/gotenv v1.4.2 // indirect + github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.49.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect + golang.org/x/crypto v0.13.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + mellium.im/sasl v0.3.1 // indirect +) diff --git a/internal/database/db.go b/internal/database/db.go index c960838..f1e5fc1 100644 --- a/internal/database/db.go +++ b/internal/database/db.go @@ -22,4 +22,6 @@ func ConnectDB(config *config.Config) { log.Fatal("Could not connect to databse") log.Printf("DSN = %s", dsn) } + + log.Println("Connection to database successful") }